From 4d5eb6507abf10b4d8d615b943eaa1a936484576 Mon Sep 17 00:00:00 2001 From: Jakob Ivarsson Date: Wed, 30 Mar 2022 16:26:19 +0200 Subject: [PATCH] Provide a default RTT for audio NACK. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is used until the first RTT measurement becomes available. 100ms is a reasonable default and used in other places. Bug: webrtc:10178 Change-Id: I14f530504a4866fbe75f025dfe184fd6e296b75e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256861 Reviewed-by: Minyue Li Commit-Queue: Jakob Ivarsson‎ Cr-Commit-Position: refs/heads/main@{#36384} --- modules/audio_coding/neteq/nack_tracker.cc | 8 ++++++-- modules/audio_coding/neteq/nack_tracker.h | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/audio_coding/neteq/nack_tracker.cc b/modules/audio_coding/neteq/nack_tracker.cc index 35afb736c8..04cc5b52e8 100644 --- a/modules/audio_coding/neteq/nack_tracker.cc +++ b/modules/audio_coding/neteq/nack_tracker.cc @@ -225,8 +225,12 @@ int64_t NackTracker::TimeToPlay(uint32_t timestamp) const { std::vector NackTracker::GetNackList(int64_t round_trip_time_ms) { RTC_DCHECK_GE(round_trip_time_ms, 0); std::vector sequence_numbers; - if (config_.require_valid_rtt && round_trip_time_ms == 0) { - return sequence_numbers; + if (round_trip_time_ms == 0) { + if (config_.require_valid_rtt) { + return sequence_numbers; + } else { + round_trip_time_ms = config_.default_rtt_ms; + } } if (packet_loss_rate_ > static_cast(config_.max_loss_rate * (1 << 30))) { diff --git a/modules/audio_coding/neteq/nack_tracker.h b/modules/audio_coding/neteq/nack_tracker.h index 0cc95b0882..14ba2166d1 100644 --- a/modules/audio_coding/neteq/nack_tracker.h +++ b/modules/audio_coding/neteq/nack_tracker.h @@ -111,6 +111,8 @@ class NackTracker { bool never_nack_multiple_times = false; // Only nack if the RTT is valid. bool require_valid_rtt = false; + // Default RTT to use unless `require_valid_rtt` is set. + int default_rtt_ms = 100; // Do not nack if the loss rate is above this value. double max_loss_rate = 1.0; };