From b35baccd6f99876050f898495266abe949dc5f80 Mon Sep 17 00:00:00 2001 From: Ruslan Burakov Date: Wed, 20 Feb 2019 13:41:59 +0100 Subject: [PATCH] Fix NetEq minimum and maximum delay always reset on acm creation. Bug: webrtc:10305 Change-Id: Iecc55c3b4bb8416e2fd0cf26532b43dcd70a7cca Reviewed-on: https://webrtc-review.googlesource.com/c/122280 Reviewed-by: Henrik Lundin Commit-Queue: Ruslan Burakov Cr-Commit-Position: refs/heads/master@{#26771} --- modules/audio_coding/acm2/audio_coding_module.cc | 3 --- modules/audio_coding/neteq/delay_manager.cc | 3 +-- modules/audio_coding/neteq/delay_manager_unittest.cc | 5 +++++ modules/audio_coding/neteq/include/neteq.h | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/audio_coding/acm2/audio_coding_module.cc b/modules/audio_coding/acm2/audio_coding_module.cc index 014aede29a..67ef556ac8 100644 --- a/modules/audio_coding/acm2/audio_coding_module.cc +++ b/modules/audio_coding/acm2/audio_coding_module.cc @@ -652,9 +652,6 @@ int AudioCodingModuleImpl::InitializeReceiverSafe() { // start-up. if (receiver_initialized_) receiver_.RemoveAllCodecs(); - receiver_.ResetInitialDelay(); - receiver_.SetMinimumDelay(0); - receiver_.SetMaximumDelay(0); receiver_.FlushBuffers(); receiver_initialized_ = true; diff --git a/modules/audio_coding/neteq/delay_manager.cc b/modules/audio_coding/neteq/delay_manager.cc index 2f397d57d6..d2dd85dacb 100644 --- a/modules/audio_coding/neteq/delay_manager.cc +++ b/modules/audio_coding/neteq/delay_manager.cc @@ -85,7 +85,7 @@ DelayManager::DelayManager(size_t max_packets_in_buffer, last_seq_no_(0), last_timestamp_(0), minimum_delay_ms_(base_minimum_delay_ms_), - maximum_delay_ms_(target_level_), + maximum_delay_ms_(0), iat_cumulative_sum_(0), max_iat_cumulative_sum_(0), peak_detector_(*peak_detector), @@ -96,7 +96,6 @@ DelayManager::DelayManager(size_t max_packets_in_buffer, enable_rtx_handling_(enable_rtx_handling) { assert(peak_detector); // Should never be NULL. RTC_DCHECK_GE(base_minimum_delay_ms_, 0); - RTC_DCHECK_LE(minimum_delay_ms_, maximum_delay_ms_); Reset(); } diff --git a/modules/audio_coding/neteq/delay_manager_unittest.cc b/modules/audio_coding/neteq/delay_manager_unittest.cc index f2656b817e..19b99af77f 100644 --- a/modules/audio_coding/neteq/delay_manager_unittest.cc +++ b/modules/audio_coding/neteq/delay_manager_unittest.cc @@ -314,12 +314,17 @@ TEST_F(DelayManagerTest, BaseMinimumDelayGreaterThanBufferSize) { SetPacketAudioLength(kFrameSizeMs); constexpr int kBaseMinimumDelayMs = kMaxBufferSizeMs + 1; constexpr int kMinimumDelayMs = 12; + constexpr int kMaximumDelayMs = 20; constexpr int kMaxBufferSizeMsQ75 = 3 * kMaxBufferSizeMs / 4; + EXPECT_TRUE(dm_->SetMaximumDelay(kMaximumDelayMs)); + // Base minimum delay is greater than minimum delay, that is why we clamp // it to current the highest possible value which is maximum delay. RTC_DCHECK_GT(kBaseMinimumDelayMs, kMinimumDelayMs); RTC_DCHECK_GT(kBaseMinimumDelayMs, kMaxBufferSizeMs); + RTC_DCHECK_GT(kBaseMinimumDelayMs, kMaximumDelayMs); + RTC_DCHECK_LT(kMaximumDelayMs, kMaxBufferSizeMsQ75); EXPECT_TRUE(dm_->SetMinimumDelay(kMinimumDelayMs)); EXPECT_TRUE(dm_->SetBaseMinimumDelay(kBaseMinimumDelayMs)); diff --git a/modules/audio_coding/neteq/include/neteq.h b/modules/audio_coding/neteq/include/neteq.h index 91c2ef708c..a1c0b529bf 100644 --- a/modules/audio_coding/neteq/include/neteq.h +++ b/modules/audio_coding/neteq/include/neteq.h @@ -115,7 +115,7 @@ class NetEq { int sample_rate_hz = 16000; // Initial value. Will change with input data. bool enable_post_decode_vad = false; size_t max_packets_in_buffer = 50; - int max_delay_ms = 2000; + int max_delay_ms = 0; int min_delay_ms = 0; bool enable_fast_accelerate = false; bool enable_muted_state = false;