diff --git a/modules/audio_coding/neteq/statistics_calculator.cc b/modules/audio_coding/neteq/statistics_calculator.cc index c0e7a402aa..807d7ee401 100644 --- a/modules/audio_coding/neteq/statistics_calculator.cc +++ b/modules/audio_coding/neteq/statistics_calculator.cc @@ -126,7 +126,10 @@ StatisticsCalculator::StatisticsCalculator() 100), excess_buffer_delay_("WebRTC.Audio.AverageExcessBufferDelayMs", 60000, // 60 seconds report interval. - 1000) {} + 1000), + buffer_full_counter_("WebRTC.Audio.JitterBufferFullPerMinute", + 60000, // 60 seconds report interval. + 100) {} StatisticsCalculator::~StatisticsCalculator() = default; @@ -229,6 +232,7 @@ void StatisticsCalculator::IncreaseCounter(size_t num_samples, int fs_hz) { rtc::CheckedDivExact(static_cast(1000 * num_samples), fs_hz); delayed_packet_outage_counter_.AdvanceClock(time_step_ms); excess_buffer_delay_.AdvanceClock(time_step_ms); + buffer_full_counter_.AdvanceClock(time_step_ms); timestamps_since_last_report_ += static_cast(num_samples); if (timestamps_since_last_report_ > static_cast(fs_hz * kMaxReportPeriod)) { @@ -250,6 +254,7 @@ void StatisticsCalculator::SecondaryDecodedSamples(int num_samples) { void StatisticsCalculator::FlushedPacketBuffer() { operations_and_state_.packet_buffer_flushes++; + buffer_full_counter_.RegisterSample(); } void StatisticsCalculator::LogDelayedPacketOutageEvent(int outage_duration_ms) { diff --git a/modules/audio_coding/neteq/statistics_calculator.h b/modules/audio_coding/neteq/statistics_calculator.h index 9e5dacfd92..6a5f7f4d13 100644 --- a/modules/audio_coding/neteq/statistics_calculator.h +++ b/modules/audio_coding/neteq/statistics_calculator.h @@ -199,6 +199,7 @@ class StatisticsCalculator { size_t discarded_secondary_packets_; PeriodicUmaCount delayed_packet_outage_counter_; PeriodicUmaAverage excess_buffer_delay_; + PeriodicUmaCount buffer_full_counter_; RTC_DISALLOW_COPY_AND_ASSIGN(StatisticsCalculator); };