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}
This commit is contained in:
Harald Alvestrand 2021-01-14 13:13:42 +00:00 committed by Commit Bot
parent 11215febb9
commit cbacec52bc

View File

@ -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_;