| 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()
|
|
|