From c6b1041d6782ca3a483ac72f42c85375230a48c8 Mon Sep 17 00:00:00 2001 From: peah Date: Mon, 11 Sep 2017 06:46:07 -0700 Subject: [PATCH] Removed the timeout for the delay estimate quality. BUG=webrtc:8223, chromium:763761 Review-Url: https://codereview.webrtc.org/3011193002 Cr-Commit-Position: refs/heads/master@{#19773} --- .../audio_processing/aec3/render_delay_controller.cc | 8 +++----- .../aec3/render_delay_controller_unittest.cc | 10 ++++------ 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/webrtc/modules/audio_processing/aec3/render_delay_controller.cc b/webrtc/modules/audio_processing/aec3/render_delay_controller.cc index d5d8a14478..565bf43f0b 100644 --- a/webrtc/modules/audio_processing/aec3/render_delay_controller.cc +++ b/webrtc/modules/audio_processing/aec3/render_delay_controller.cc @@ -42,10 +42,10 @@ class RenderDelayControllerImpl final : public RenderDelayController { private: static int instance_count_; std::unique_ptr data_dumper_; - size_t delay_ = 0; + size_t delay_ = kMinEchoPathDelayBlocks; EchoPathDelayEstimator delay_estimator_; size_t blocks_since_last_delay_estimate_ = 300000; - int echo_path_delay_samples_ = 0; + int echo_path_delay_samples_ = kMinEchoPathDelayBlocks * kBlockSize; size_t align_call_counter_ = 0; rtc::Optional headroom_samples_; RenderDelayControllerMetrics metrics_; @@ -85,7 +85,7 @@ RenderDelayControllerImpl::~RenderDelayControllerImpl() = default; void RenderDelayControllerImpl::Reset() { delay_ = kMinEchoPathDelayBlocks; blocks_since_last_delay_estimate_ = 300000; - echo_path_delay_samples_ = 0; + echo_path_delay_samples_ = delay_ * kBlockSize; align_call_counter_ = 0; headroom_samples_ = rtc::Optional(); @@ -124,8 +124,6 @@ size_t RenderDelayControllerImpl::GetDelay( RTC_DCHECK_LE(0, headroom); headroom_samples_ = rtc::Optional(headroom); } - } else if (++blocks_since_last_delay_estimate_ > 20 * kNumBlocksPerSecond) { - headroom_samples_ = rtc::Optional(); } metrics_.Update(echo_path_delay_samples, delay_); diff --git a/webrtc/modules/audio_processing/aec3/render_delay_controller_unittest.cc b/webrtc/modules/audio_processing/aec3/render_delay_controller_unittest.cc index ba2f25bc72..45d00f9fd7 100644 --- a/webrtc/modules/audio_processing/aec3/render_delay_controller_unittest.cc +++ b/webrtc/modules/audio_processing/aec3/render_delay_controller_unittest.cc @@ -53,8 +53,9 @@ TEST(RenderDelayController, NoRenderSignal) { RenderDelayController::Create(AudioProcessing::Config::EchoCanceller3(), rate)); for (size_t k = 0; k < 100; ++k) { - EXPECT_EQ(0u, delay_controller->GetDelay( - delay_buffer->GetDownsampledRenderBuffer(), block)); + EXPECT_EQ(kMinEchoPathDelayBlocks, + delay_controller->GetDelay( + delay_buffer->GetDownsampledRenderBuffer(), block)); } } } @@ -78,7 +79,7 @@ TEST(RenderDelayController, BasicApiCalls) { render_delay_buffer->GetDownsampledRenderBuffer(), capture_block); } EXPECT_FALSE(delay_controller->AlignmentHeadroomSamples()); - EXPECT_EQ(0u, delay_blocks); + EXPECT_EQ(kMinEchoPathDelayBlocks, delay_blocks); } } @@ -113,9 +114,6 @@ TEST(RenderDelayController, Alignment) { size_t expected_delay_blocks = std::max(0, static_cast(delay_samples / kBlockSize) - kDelayHeadroomBlocks); - if (expected_delay_blocks < 2) { - expected_delay_blocks = 0; - } EXPECT_EQ(expected_delay_blocks, delay_blocks);