From bfda20d4dbb52d3e8f53b226b055c5ee87604ba5 Mon Sep 17 00:00:00 2001 From: Minyue Li Date: Wed, 5 Feb 2020 16:38:07 +0100 Subject: [PATCH] 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 Reviewed-by: Chen Xing Reviewed-by: Karl Wiberg Commit-Queue: Minyue Li Cr-Commit-Position: refs/heads/master@{#30471} --- rtc_base/numerics/moving_median_filter.h | 9 +++++++++ rtc_base/numerics/moving_median_filter_unittest.cc | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) 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 +#include #include #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 percentile_filter_; std::list samples_; @@ -77,5 +81,10 @@ void MovingMedianFilter::Reset() { samples_stored_ = 0; } +template +size_t MovingMedianFilter::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 +#include #include "test/gtest.h" @@ -19,15 +20,17 @@ namespace webrtc { TEST(MovingMedianFilterTest, ProcessesNoSamples) { MovingMedianFilter filter(2); EXPECT_EQ(0, filter.GetFilteredValue()); + EXPECT_EQ(0u, filter.GetNumberOfSamplesStored()); } TEST(MovingMedianFilterTest, ReturnsMovingMedianWindow5) { MovingMedianFilter 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(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()); } }