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}
diff --git a/rtc_base/numerics/moving_median_filter.h b/rtc_base/numerics/moving_median_filter.h
index 723679e..4abaeff 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 @@
   // 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 @@
   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 41684b2..12c1114 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 @@
 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 @@
   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 @@
   for (int i = 0; i < 5; ++i) {
     filter.Insert(kSamples[i]);
     EXPECT_EQ(kExpectedFilteredValues[i], filter.GetFilteredValue());
+    EXPECT_EQ(1u, filter.GetNumberOfSamplesStored());
   }
 }