Index: webrtc/modules/audio_coding/neteq/statistics_calculator.cc |
diff --git a/webrtc/modules/audio_coding/neteq/statistics_calculator.cc b/webrtc/modules/audio_coding/neteq/statistics_calculator.cc |
index b4d6a6c1dec8b7c3bb3ec907e97b102376211614..336e775a79eec21edd221da335e0d5e00b125639 100644 |
--- a/webrtc/modules/audio_coding/neteq/statistics_calculator.cc |
+++ b/webrtc/modules/audio_coding/neteq/statistics_calculator.cc |
@@ -20,27 +20,57 @@ |
namespace webrtc { |
-void StatisticsCalculator::DelayedPacketOutagesPerMinuteCounter:: |
- RegisterEvent() { |
- ++counter_; |
+StatisticsCalculator::PeriodicUmaLogger::PeriodicUmaLogger( |
+ const std::string& uma_name, |
+ int report_interval_ms, |
+ int max_value) |
+ : uma_name_(uma_name), |
+ report_interval_ms_(report_interval_ms), |
+ max_value_(max_value), |
+ timer_(0) { |
} |
-void StatisticsCalculator::DelayedPacketOutagesPerMinuteCounter::AdvanceClock( |
- int step_ms) { |
+StatisticsCalculator::PeriodicUmaLogger::~PeriodicUmaLogger() = default; |
+ |
+void StatisticsCalculator::PeriodicUmaLogger::AdvanceClock(int step_ms) { |
timer_ += step_ms; |
- if (timer_ < kReportIntervalMs) { |
+ if (timer_ < report_interval_ms_) { |
return; |
} |
- LogToUma(); |
- counter_ = 0; |
- timer_ -= kReportIntervalMs; |
+ LogToUma(Metric()); |
+ Reset(); |
+ timer_ -= report_interval_ms_; |
DCHECK_GE(timer_, 0); |
} |
-void StatisticsCalculator::DelayedPacketOutagesPerMinuteCounter::LogToUma() |
- const { |
- RTC_HISTOGRAM_COUNTS_100("WebRTC.Audio.DelayedPacketOutageEventsPerMinute", |
- counter_); |
+void StatisticsCalculator::PeriodicUmaLogger::LogToUma(int value) const { |
+ RTC_HISTOGRAM_COUNTS(uma_name_, value, 1, max_value_, 50); |
+} |
+ |
+StatisticsCalculator::DelayedPacketOutagesPerMinuteCounter:: |
+ DelayedPacketOutagesPerMinuteCounter() |
+ : PeriodicUmaLogger("WebRTC.Audio.DelayedPacketOutageEventsPerMinute", |
+ 60000, // 60 seconds report interval. |
+ 100) { |
+} |
+ |
+void StatisticsCalculator::DelayedPacketOutagesPerMinuteCounter:: |
+ RegisterEvent() { |
+ ++counter_; |
+} |
+ |
+int StatisticsCalculator::DelayedPacketOutagesPerMinuteCounter::Metric() const { |
+ return counter_; |
+} |
+ |
+void StatisticsCalculator::DelayedPacketOutagesPerMinuteCounter::Reset() { |
+ counter_ = 0; |
+} |
+ |
+StatisticsCalculator::AverageExcessBufferDelayMs::AverageExcessBufferDelayMs() |
+ : PeriodicUmaLogger("WebRTC.Audio.AverageExcessBufferDelayMs", |
+ 60000, // 60 seconds report interval. |
+ 1000) { |
} |
void StatisticsCalculator::AverageExcessBufferDelayMs:: |
@@ -49,24 +79,13 @@ void StatisticsCalculator::AverageExcessBufferDelayMs:: |
++num_packets_; |
} |
-void StatisticsCalculator::AverageExcessBufferDelayMs::AdvanceClock( |
- int step_ms) { |
- timer_ += step_ms; |
- if (timer_ < kReportIntervalMs) { |
- return; |
- } |
- LogToUma(); |
- sum_ = 0.0; |
- num_packets_ = 0; |
- timer_ -= kReportIntervalMs; |
- DCHECK_GE(timer_, 0); |
+int StatisticsCalculator::AverageExcessBufferDelayMs::Metric() const { |
+ return static_cast<int>(sum_ / num_packets_); |
} |
-void StatisticsCalculator::AverageExcessBufferDelayMs::LogToUma() { |
- if (num_packets_ > 0) { |
- RTC_HISTOGRAM_COUNTS_1000("WebRTC.Audio.AverageExcessBufferDelayMs", |
- static_cast<int>(sum_ / num_packets_)); |
- } |
+void StatisticsCalculator::AverageExcessBufferDelayMs::Reset() { |
+ sum_ = 0.0; |
+ num_packets_ = 0; |
} |
StatisticsCalculator::StatisticsCalculator() |