aboutsummaryrefslogtreecommitdiff
path: root/rtc_base
diff options
context:
space:
mode:
authorMinyue Li <minyue@webrtc.org>2020-02-05 16:38:07 +0100
committerCommit Bot <commit-bot@chromium.org>2020-02-06 12:53:04 +0000
commitbfda20d4dbb52d3e8f53b226b055c5ee87604ba5 (patch)
treef23dd39c99e90fa062efc0f45e52fee92a05d51a /rtc_base
parenta5cec5543412540daafbb4284774d7be90cd39d5 (diff)
downloadwebrtc-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.h9
-rw-r--r--rtc_base/numerics/moving_median_filter_unittest.cc7
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());
}
}