From 8459b17c7573c57f173fac88eef682c286f685ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20de=20Vicente=20Pe=C3=B1a?= Date: Tue, 21 Aug 2018 16:09:49 +0200 Subject: [PATCH] AEC3: adding a config option for applying a more conservative initial phase. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: If0f93aa6abcb3b8e99ca40dde86b15a4b1487883 Bug: webrtc:8671 Reviewed-on: https://webrtc-review.googlesource.com/94505 Reviewed-by: Per Ã…hgren Commit-Queue: Jesus de Vicente Pena Cr-Commit-Position: refs/heads/master@{#24363} --- api/audio/echo_canceller3_config.h | 1 + modules/audio_processing/aec3/aec_state.cc | 14 ++++++++++---- .../test/audio_processing_simulator.cc | 2 ++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/api/audio/echo_canceller3_config.h b/api/audio/echo_canceller3_config.h index 6eb91aa845..7b3ced38fd 100644 --- a/api/audio/echo_canceller3_config.h +++ b/api/audio/echo_canceller3_config.h @@ -54,6 +54,7 @@ struct EchoCanceller3Config { size_t config_change_duration_blocks = 250; float initial_state_seconds = 2.5f; + bool conservative_initial_phase = false; } filter; struct Erle { diff --git a/modules/audio_processing/aec3/aec_state.cc b/modules/audio_processing/aec3/aec_state.cc index 09a42bff58..1d5070f2de 100644 --- a/modules/audio_processing/aec3/aec_state.cc +++ b/modules/audio_processing/aec3/aec_state.cc @@ -130,10 +130,16 @@ AecState::AecState(const EchoCanceller3Config& config) enforce_delay_after_realignment_(EnableEnforcingDelayAfterRealignment()), allow_linear_mode_with_diverged_filter_( EnableLinearModeWithDivergedFilter()), - early_filter_usage_activated_(EnableEarlyFilterUsage()), - use_short_initial_state_(EnableShortInitialState()), - convergence_trigger_linear_mode_(EnableConvergenceTriggeredLinearMode()), - no_alignment_required_for_linear_mode_(EnableNoWaitForAlignment()), + early_filter_usage_activated_(EnableEarlyFilterUsage() && + !config.filter.conservative_initial_phase), + use_short_initial_state_(EnableShortInitialState() && + !config.filter.conservative_initial_phase), + convergence_trigger_linear_mode_( + EnableConvergenceTriggeredLinearMode() && + !config.filter.conservative_initial_phase), + no_alignment_required_for_linear_mode_( + EnableNoWaitForAlignment() && + !config.filter.conservative_initial_phase), use_uncertainty_until_sufficiently_adapted_( EnableUncertaintyUntilSufficientAdapted()), transparent_mode_enforces_nonlinear_mode_( diff --git a/modules/audio_processing/test/audio_processing_simulator.cc b/modules/audio_processing/test/audio_processing_simulator.cc index 9a353bd189..160798dd1d 100644 --- a/modules/audio_processing/test/audio_processing_simulator.cc +++ b/modules/audio_processing/test/audio_processing_simulator.cc @@ -214,6 +214,8 @@ EchoCanceller3Config ParseAec3Parameters(const std::string& filename) { &cfg.filter.config_change_duration_blocks); ReadParam(section, "initial_state_seconds", &cfg.filter.initial_state_seconds); + ReadParam(section, "conservative_initial_phase", + &cfg.filter.conservative_initial_phase); } if (rtc::GetValueFromJsonObject(root, "erle", §ion)) {