Monitor the "concealed samples" stat for the audio during negotiation.
Bug: webrtc:12361
Change-Id: Ib638314f78782d6c3c4ebbb0899f3d6d4cc8e869
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/201727
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33057}
diff --git a/pc/peer_connection_integrationtest.cc b/pc/peer_connection_integrationtest.cc
index 7b2d171..df8d6c1 100644
--- a/pc/peer_connection_integrationtest.cc
+++ b/pc/peer_connection_integrationtest.cc
@@ -617,6 +617,8 @@
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 @@
// 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 @@
// 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_;