From cbacec52bc9c120f14329c08a106d43bb8bd1c27 Mon Sep 17 00:00:00 2001 From: Harald Alvestrand Date: Thu, 14 Jan 2021 13:13:42 +0000 Subject: [PATCH] Monitor the "concealed samples" stat for the audio during negotiation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:12361 Change-Id: Ib638314f78782d6c3c4ebbb0899f3d6d4cc8e869 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/201727 Reviewed-by: Henrik Boström Commit-Queue: Harald Alvestrand Cr-Commit-Position: refs/heads/master@{#33057} --- pc/peer_connection_integrationtest.cc | 29 ++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/pc/peer_connection_integrationtest.cc b/pc/peer_connection_integrationtest.cc index 7b2d171035..df8d6c15ec 100644 --- a/pc/peer_connection_integrationtest.cc +++ b/pc/peer_connection_integrationtest.cc @@ -617,6 +617,8 @@ class PeerConnectionWrapper : public webrtc::PeerConnectionObserver, ASSERT_EQ(audio_track_stats_id_, *rtp_stats->track_id); audio_packets_stat_ = *rtp_stats->packets_received; audio_delay_stat_ = *track_stats->relative_packet_arrival_delay; + audio_samples_stat_ = *track_stats->total_samples_received; + audio_concealed_stat_ = *track_stats->concealed_samples; } void UpdateDelayStats(std::string tag, int desc_size) { @@ -634,10 +636,33 @@ class PeerConnectionWrapper : public webrtc::PeerConnectionObserver, // An average relative packet arrival delay over the renegotiation of // > 100 ms indicates that something is dramatically wrong, and will impact // quality for sure. - ASSERT_GT(0.1, recent_delay) << tag << " size " << desc_size; + EXPECT_GT(0.1, recent_delay) << tag << " size " << desc_size; + auto delta_samples = + *track_stats->total_samples_received - audio_samples_stat_; + auto delta_concealed = + *track_stats->concealed_samples - audio_concealed_stat_; + // These limits should be adjusted down as we improve: + // + // Concealing more than 4000 samples during a renegotiation is unacceptable. + // Concealing more than 20% of samples during a renegotiation is + // unacceptable. + + // Current lowest scores: + // linux_more_configs bot at conceal rate 0.516 + // linux_more_configs bot at conceal count 5184 + // android_arm_rel at conceal count 9241 + EXPECT_GT(15000U, delta_concealed) << "Concealed " << delta_concealed + << " of " << delta_samples << " samples"; + if (delta_samples > 0) { + EXPECT_GT(0.6, 1.0 * delta_concealed / delta_samples) + << "Concealed " << delta_concealed << " of " << delta_samples + << " samples"; + } // Increment trailing counters audio_packets_stat_ = *rtp_stats->packets_received; audio_delay_stat_ = *track_stats->relative_packet_arrival_delay; + audio_samples_stat_ = *track_stats->total_samples_received; + audio_concealed_stat_ = *track_stats->concealed_samples; } private: @@ -1111,6 +1136,8 @@ class PeerConnectionWrapper : public webrtc::PeerConnectionObserver, // Variables for tracking delay stats on an audio track int audio_packets_stat_ = 0; double audio_delay_stat_ = 0.0; + uint64_t audio_samples_stat_ = 0; + uint64_t audio_concealed_stat_ = 0; std::string rtp_stats_id_; std::string audio_track_stats_id_;