From d7b0c46bd9f7805ca2873b4d6bf970ca97be252d Mon Sep 17 00:00:00 2001 From: Gustaf Ullberg Date: Thu, 4 Oct 2018 12:59:24 +0200 Subject: [PATCH] Avoid incorrect filter alignment due to call skew detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: chromium:892040,webrtc:9816 Change-Id: I46e8b2de61eedf67e235fcea8f3b9e85f690e64f Reviewed-on: https://webrtc-review.googlesource.com/c/103661 Reviewed-by: Per Åhgren Commit-Queue: Per Åhgren Cr-Commit-Position: refs/heads/master@{#24982} --- modules/audio_processing/aec3/render_delay_controller.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/audio_processing/aec3/render_delay_controller.cc b/modules/audio_processing/aec3/render_delay_controller.cc index 8adf5f5102..f336c392b4 100644 --- a/modules/audio_processing/aec3/render_delay_controller.cc +++ b/modules/audio_processing/aec3/render_delay_controller.cc @@ -40,6 +40,10 @@ int GetSkewHysteresis(const EchoCanceller3Config& config) { return static_cast(config.delay.skew_hysteresis_blocks); } +bool UseOffsetBlocks() { + return field_trial::IsEnabled("WebRTC-Aec3UseOffsetBlocks"); +} + constexpr int kSkewHistorySizeLog2 = 8; class RenderDelayControllerImpl final : public RenderDelayController { @@ -63,6 +67,7 @@ class RenderDelayControllerImpl final : public RenderDelayController { const int hysteresis_limit_1_blocks_; const int hysteresis_limit_2_blocks_; const int skew_hysteresis_blocks_; + const bool use_offset_blocks_; absl::optional delay_; EchoPathDelayEstimator delay_estimator_; std::vector delay_buf_; @@ -131,6 +136,7 @@ RenderDelayControllerImpl::RenderDelayControllerImpl( hysteresis_limit_2_blocks_( static_cast(config.delay.hysteresis_limit_2_blocks)), skew_hysteresis_blocks_(GetSkewHysteresis(config)), + use_offset_blocks_(UseOffsetBlocks()), delay_estimator_(data_dumper_.get(), config), delay_buf_(kBlockSize * non_causal_offset, 0.f), skew_estimator_(kSkewHistorySizeLog2) { @@ -237,6 +243,8 @@ absl::optional RenderDelayControllerImpl::GetDelay( soft_reset_counter_ = 0; } } + if (!use_offset_blocks_) + offset_blocks = 0; // Log any changes in the skew. skew_shift_reporting_counter_ =