diff --git a/modules/audio_coding/neteq/tools/neteq_stats_getter.cc b/modules/audio_coding/neteq/tools/neteq_stats_getter.cc index 12e10b695a..d14f50913c 100644 --- a/modules/audio_coding/neteq/tools/neteq_stats_getter.cc +++ b/modules/audio_coding/neteq/tools/neteq_stats_getter.cc @@ -16,6 +16,7 @@ #include "rtc_base/checks.h" #include "rtc_base/strings/string_builder.h" +#include "rtc_base/timeutils.h" namespace webrtc { namespace test { @@ -44,11 +45,15 @@ void NetEqStatsGetter::AfterGetAudio(int64_t time_now_ms, const AudioFrame& audio_frame, bool muted, NetEq* neteq) { - if (++counter_ >= 100) { - counter_ = 0; + // TODO(minyue): Get stats should better not be called as a call back after + // get audio. It is called independently from get audio in practice. + if (last_stats_query_time_ms_ == 0 || + rtc::TimeDiff(time_now_ms, last_stats_query_time_ms_) >= + stats_query_interval_ms_) { NetEqNetworkStatistics stats; RTC_CHECK_EQ(neteq->NetworkStatistics(&stats), 0); stats_.push_back(stats); + last_stats_query_time_ms_ = time_now_ms; } const auto lifetime_stat = neteq->GetLifetimeStatistics(); if (current_concealment_event_ != lifetime_stat.concealment_events && diff --git a/modules/audio_coding/neteq/tools/neteq_stats_getter.h b/modules/audio_coding/neteq/tools/neteq_stats_getter.h index 07d53c74d6..cb9cf34738 100644 --- a/modules/audio_coding/neteq/tools/neteq_stats_getter.h +++ b/modules/audio_coding/neteq/tools/neteq_stats_getter.h @@ -56,6 +56,12 @@ class NetEqStatsGetter : public NetEqGetAudioCallback { // valid value. explicit NetEqStatsGetter(std::unique_ptr delay_analyzer); + int64_t stats_query_interval_ms() const { return stats_query_interval_ms_; } + + void set_stats_query_interval_ms(int64_t stats_query_interval_ms) { + stats_query_interval_ms_ = stats_query_interval_ms; + } + void BeforeGetAudio(NetEq* neteq) override; void AfterGetAudio(int64_t time_now_ms, @@ -79,7 +85,8 @@ class NetEqStatsGetter : public NetEqGetAudioCallback { private: std::unique_ptr delay_analyzer_; - size_t counter_ = 0; + int64_t stats_query_interval_ms_ = 1000; + int64_t last_stats_query_time_ms_ = 0; std::vector stats_; size_t current_concealment_event_ = 1; uint64_t voice_concealed_samples_until_last_event_ = 0;