From c4b7f037b775be165afa4c7d17ec34976c70bae2 Mon Sep 17 00:00:00 2001 From: Gustaf Ullberg Date: Fri, 1 Jun 2018 11:22:05 +0200 Subject: [PATCH] AEC3: Adjust active render limits for downsampling factor 8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The signal used for delay estimation at downsampling factor 8 is bandpass filtered and contains less energy than for other downsampling factors. This CL adjusts the energy threshold used for determining if there is enough farend activity to update the matched filters in the delay estimator. Only downsampling factor 8 is affected. Bug: webrtc:9288,chromium:846615 Change-Id: I6f38f5609a31e7a08e60571ac75ea75c9962e026 Reviewed-on: https://webrtc-review.googlesource.com/80443 Reviewed-by: Per Ã…hgren Commit-Queue: Gustaf Ullberg Cr-Commit-Position: refs/heads/master@{#23486} --- api/audio/echo_canceller3_config.h | 1 + .../aec3/echo_path_delay_estimator.cc | 17 ++++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/api/audio/echo_canceller3_config.h b/api/audio/echo_canceller3_config.h index cce04d4707..52fac67092 100644 --- a/api/audio/echo_canceller3_config.h +++ b/api/audio/echo_canceller3_config.h @@ -103,6 +103,7 @@ struct EchoCanceller3Config { struct RenderLevels { float active_render_limit = 100.f; float poor_excitation_render_limit = 150.f; + float poor_excitation_render_limit_ds8 = 20.f; } render_levels; struct GainUpdates { diff --git a/modules/audio_processing/aec3/echo_path_delay_estimator.cc b/modules/audio_processing/aec3/echo_path_delay_estimator.cc index 14cf8daac9..bc9cde4577 100644 --- a/modules/audio_processing/aec3/echo_path_delay_estimator.cc +++ b/modules/audio_processing/aec3/echo_path_delay_estimator.cc @@ -38,13 +38,16 @@ EchoPathDelayEstimator::EchoPathDelayEstimator( ? kBlockSize / down_sampling_factor_ : kBlockSize), capture_decimator_(down_sampling_factor_), - matched_filter_(data_dumper_, - DetectOptimization(), - sub_block_size_, - kMatchedFilterWindowSizeSubBlocks, - config.delay.num_filters, - kMatchedFilterAlignmentShiftSizeSubBlocks, - config.render_levels.poor_excitation_render_limit), + matched_filter_( + data_dumper_, + DetectOptimization(), + sub_block_size_, + kMatchedFilterWindowSizeSubBlocks, + config.delay.num_filters, + kMatchedFilterAlignmentShiftSizeSubBlocks, + GetDownSamplingFactor(config) == 8 + ? config.render_levels.poor_excitation_render_limit_ds8 + : config.render_levels.poor_excitation_render_limit), matched_filter_lag_aggregator_(data_dumper_, matched_filter_.GetMaxFilterLag()) { RTC_DCHECK(data_dumper);