From 2d9a3b1aba2deedb08876ae079faa20774fbdb70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20=C3=85hgren?= Date: Thu, 17 May 2018 17:24:29 +0200 Subject: [PATCH] Increasing the API call skew hysteresis limit in AEC3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This CL increases the allowed variations in the API call skew limit in AEC3. Bug: webrtc:9283,chromium:888042 Change-Id: Ib5e784c6f3dcf1bf3a2cbfe2b1559953db9227a8 Reviewed-on: https://webrtc-review.googlesource.com/77430 Reviewed-by: Gustaf Ullberg Commit-Queue: Per Ã…hgren Cr-Commit-Position: refs/heads/master@{#23305} --- api/audio/echo_canceller3_config.h | 2 +- .../aec3/render_delay_controller.cc | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/api/audio/echo_canceller3_config.h b/api/audio/echo_canceller3_config.h index 51feccb700..63847f2acb 100644 --- a/api/audio/echo_canceller3_config.h +++ b/api/audio/echo_canceller3_config.h @@ -28,7 +28,7 @@ struct EchoCanceller3Config { size_t delay_headroom_blocks = 2; size_t hysteresis_limit_1_blocks = 1; size_t hysteresis_limit_2_blocks = 1; - size_t skew_hysteresis_blocks = 1; + size_t skew_hysteresis_blocks = 3; } delay; struct Filter { diff --git a/modules/audio_processing/aec3/render_delay_controller.cc b/modules/audio_processing/aec3/render_delay_controller.cc index fc9110899d..7a40c46db6 100644 --- a/modules/audio_processing/aec3/render_delay_controller.cc +++ b/modules/audio_processing/aec3/render_delay_controller.cc @@ -23,11 +23,23 @@ #include "rtc_base/atomicops.h" #include "rtc_base/constructormagic.h" #include "rtc_base/logging.h" +#include "system_wrappers/include/field_trial.h" namespace webrtc { namespace { +int GetSkewHysteresis(const EchoCanceller3Config& config) { + if (field_trial::IsEnabled("WebRTC-Aec3EnforceSkewHysteresis1")) { + return 1; + } + if (field_trial::IsEnabled("WebRTC-Aec3EnforceSkewHysteresis2")) { + return 2; + } + + return static_cast(config.delay.skew_hysteresis_blocks); +} + constexpr int kSkewHistorySizeLog2 = 8; class RenderDelayControllerImpl final : public RenderDelayController { @@ -118,8 +130,7 @@ RenderDelayControllerImpl::RenderDelayControllerImpl( static_cast(config.delay.hysteresis_limit_1_blocks)), hysteresis_limit_2_blocks_( static_cast(config.delay.hysteresis_limit_2_blocks)), - skew_hysteresis_blocks_( - static_cast(config.delay.skew_hysteresis_blocks)), + skew_hysteresis_blocks_(GetSkewHysteresis(config)), delay_estimator_(data_dumper_.get(), config), delay_buf_(kBlockSize * non_causal_offset, 0.f), skew_estimator_(kSkewHistorySizeLog2) {