diff options
author | Minyue Li <minyue@webrtc.org> | 2020-02-05 16:38:07 +0100 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-02-06 12:53:04 +0000 |
commit | bfda20d4dbb52d3e8f53b226b055c5ee87604ba5 (patch) | |
tree | f23dd39c99e90fa062efc0f45e52fee92a05d51a /rtc_base | |
parent | a5cec5543412540daafbb4284774d7be90cd39d5 (diff) | |
download | webrtc-bfda20d4dbb52d3e8f53b226b055c5ee87604ba5.tar.gz |
Add a method to report number of samples in MovingMedianFilter.
Bug: webrtc:11342
Change-Id: Ie76a750ca43ee2e563b702e9e7e07eceb77e782b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168222
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Chen Xing <chxg@google.com>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30471}
Diffstat (limited to 'rtc_base')
-rw-r--r-- | rtc_base/numerics/moving_median_filter.h | 9 | ||||
-rw-r--r-- | rtc_base/numerics/moving_median_filter_unittest.cc | 7 |
2 files changed, 15 insertions, 1 deletions
diff --git a/rtc_base/numerics/moving_median_filter.h b/rtc_base/numerics/moving_median_filter.h index 723679ec8e..4abaeff5bc 100644 --- a/rtc_base/numerics/moving_median_filter.h +++ b/rtc_base/numerics/moving_median_filter.h @@ -13,6 +13,7 @@ #include <stddef.h> +#include <cstddef> #include <list> #include "rtc_base/checks.h" @@ -38,6 +39,9 @@ class MovingMedianFilter { // Get median over the latest window. T GetFilteredValue() const; + // The number of samples that are currently stored. + size_t GetNumberOfSamplesStored() const; + private: PercentileFilter<T> percentile_filter_; std::list<T> samples_; @@ -77,5 +81,10 @@ void MovingMedianFilter<T>::Reset() { samples_stored_ = 0; } +template <typename T> +size_t MovingMedianFilter<T>::GetNumberOfSamplesStored() const { + return samples_stored_; +} + } // namespace webrtc #endif // RTC_BASE_NUMERICS_MOVING_MEDIAN_FILTER_H_ diff --git a/rtc_base/numerics/moving_median_filter_unittest.cc b/rtc_base/numerics/moving_median_filter_unittest.cc index 41684b2b5c..12c1114c25 100644 --- a/rtc_base/numerics/moving_median_filter_unittest.cc +++ b/rtc_base/numerics/moving_median_filter_unittest.cc @@ -11,6 +11,7 @@ #include "rtc_base/numerics/moving_median_filter.h" #include <stdint.h> +#include <algorithm> #include "test/gtest.h" @@ -19,15 +20,17 @@ namespace webrtc { TEST(MovingMedianFilterTest, ProcessesNoSamples) { MovingMedianFilter<int> filter(2); EXPECT_EQ(0, filter.GetFilteredValue()); + EXPECT_EQ(0u, filter.GetNumberOfSamplesStored()); } TEST(MovingMedianFilterTest, ReturnsMovingMedianWindow5) { MovingMedianFilter<int> filter(5); const int64_t kSamples[5] = {1, 5, 2, 3, 4}; const int64_t kExpectedFilteredValues[5] = {1, 1, 2, 2, 3}; - for (int i = 0; i < 5; ++i) { + for (size_t i = 0; i < 5; ++i) { filter.Insert(kSamples[i]); EXPECT_EQ(kExpectedFilteredValues[i], filter.GetFilteredValue()); + EXPECT_EQ(i + 1, filter.GetNumberOfSamplesStored()); } } @@ -38,6 +41,7 @@ TEST(MovingMedianFilterTest, ReturnsMovingMedianWindow3) { for (int i = 0; i < 5; ++i) { filter.Insert(kSamples[i]); EXPECT_EQ(kExpectedFilteredValues[i], filter.GetFilteredValue()); + EXPECT_EQ(std::min<size_t>(i + 1, 3), filter.GetNumberOfSamplesStored()); } } @@ -48,6 +52,7 @@ TEST(MovingMedianFilterTest, ReturnsMovingMedianWindow1) { for (int i = 0; i < 5; ++i) { filter.Insert(kSamples[i]); EXPECT_EQ(kExpectedFilteredValues[i], filter.GetFilteredValue()); + EXPECT_EQ(1u, filter.GetNumberOfSamplesStored()); } } |