From 240215431ee21e85e415484d1d80f437850f2f8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20=C3=85hgren?= Date: Fri, 31 Aug 2018 07:34:29 +0200 Subject: [PATCH] AEC3: Parametrize the shadow filter output usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This CL introduces the ability to control the usage of the shadow filter output in the echo canceller output. Bug: webrtc:9694,chromium:879451 Change-Id: I01f90de60de1799b32892051c176bda5e1a8d33e Reviewed-on: https://webrtc-review.googlesource.com/97020 Reviewed-by: Gustaf Ullberg Commit-Queue: Per Ã…hgren Cr-Commit-Position: refs/heads/master@{#24506} --- api/audio/echo_canceller3_config.h | 1 + modules/audio_processing/aec3/echo_remover.cc | 4 +++- modules/audio_processing/test/audio_processing_simulator.cc | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/api/audio/echo_canceller3_config.h b/api/audio/echo_canceller3_config.h index a142d52dd5..f4ba8e9a8e 100644 --- a/api/audio/echo_canceller3_config.h +++ b/api/audio/echo_canceller3_config.h @@ -58,6 +58,7 @@ struct EchoCanceller3Config { size_t config_change_duration_blocks = 250; float initial_state_seconds = 2.5f; bool conservative_initial_phase = false; + bool enable_shadow_filter_output_usage = true; } filter; struct Erle { diff --git a/modules/audio_processing/aec3/echo_remover.cc b/modules/audio_processing/aec3/echo_remover.cc index e52bc62586..9b6677ea4b 100644 --- a/modules/audio_processing/aec3/echo_remover.cc +++ b/modules/audio_processing/aec3/echo_remover.cc @@ -162,7 +162,9 @@ EchoRemoverImpl::EchoRemoverImpl(const EchoCanceller3Config& config, new ApmDataDumper(rtc::AtomicOps::Increment(&instance_count_))), optimization_(DetectOptimization()), sample_rate_hz_(sample_rate_hz), - use_shadow_filter_output_(UseShadowFilterOutput()), + use_shadow_filter_output_( + UseShadowFilterOutput() && + config_.filter.enable_shadow_filter_output_usage), use_smooth_signal_transitions_(UseSmoothSignalTransitions()), subtractor_(config, data_dumper_.get(), optimization_), suppression_gain_(config_, optimization_, sample_rate_hz), diff --git a/modules/audio_processing/test/audio_processing_simulator.cc b/modules/audio_processing/test/audio_processing_simulator.cc index 7ea7660de4..5e092ff9c4 100644 --- a/modules/audio_processing/test/audio_processing_simulator.cc +++ b/modules/audio_processing/test/audio_processing_simulator.cc @@ -235,6 +235,8 @@ class Aec3ParametersParser { &cfg.filter.initial_state_seconds); ReadParam(section, "conservative_initial_phase", &cfg.filter.conservative_initial_phase); + ReadParam(section, "enable_shadow_filter_output_usage", + &cfg.filter.enable_shadow_filter_output_usage); } if (rtc::GetValueFromJsonObject(root, "erle", §ion)) {