webrtc/modules/audio_processing/aec3
Gustaf Ullberg 437d129ef5 AEC3: Avoid overcompensating for render onsets during dominant nearend
The ERLE is used to estimate residual echo for echo suppression. The
ERLE is reduced during far-end offset to avoid echo leakage. When there
is a strong near-end present this can cause unnecessary transparency loss.

This change adds an ERLE estimation that does not compensate for onsets and
uses it for residual echo estimation when the suppressor considers the near-end to be dominant.

Bug: webrtc:12686
Change-Id: Ida78eeacf1f95c6e62403f86ba3f2ff055898a84
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215323
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33786}
2021-04-20 12:33:02 +00:00
..
mock Allowing reduced computations in the AEC3 when the output is not used 2021-03-16 09:16:32 +00:00
adaptive_fir_filter_avx2.cc aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
adaptive_fir_filter_erl_avx2.cc aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
adaptive_fir_filter_erl_unittest.cc Refactor cpu_features_wrapper.h functions from C to C++. 2020-09-07 08:44:24 +00:00
adaptive_fir_filter_erl.cc aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
adaptive_fir_filter_erl.h aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
adaptive_fir_filter_unittest.cc Refactor cpu_features_wrapper.h functions from C to C++. 2020-09-07 08:44:24 +00:00
adaptive_fir_filter.cc aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
adaptive_fir_filter.h aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
aec3_common.cc Refactor cpu_features_wrapper.h functions from C to C++. 2020-09-07 08:44:24 +00:00
aec3_common.h AEC3: Stop reporting obsolete metrics 2020-10-20 11:54:48 +00:00
aec3_fft_unittest.cc Rename several more tests that use EXPECT_DEATH to *DeathTest. 2020-05-18 16:10:04 +00:00
aec3_fft.cc Refactor cpu_features_wrapper.h functions from C to C++. 2020-09-07 08:44:24 +00:00
aec3_fft.h Reland "Change to using the new Ooura constructor" 2020-06-03 12:27:14 +00:00
aec_state_unittest.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
aec_state.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
aec_state.h AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
alignment_mixer_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
alignment_mixer.cc AEC3: Add signal dependent mixing before alignment 2019-12-03 11:30:48 +00:00
alignment_mixer.h AEC3: Add signal dependent mixing before alignment 2019-12-03 11:30:48 +00:00
api_call_jitter_metrics_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
api_call_jitter_metrics.cc AEC3: Add metrics for API call jitter 2018-11-27 19:52:08 +00:00
api_call_jitter_metrics.h AEC3: Add metrics for API call jitter 2018-11-27 19:52:08 +00:00
block_buffer.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
block_buffer.h Remove completed TODOs 2019-09-06 14:53:11 +00:00
block_delay_buffer_unittest.cc AEC3: Added multi-channel support for the capture delay functionality 2020-01-28 15:39:26 +00:00
block_delay_buffer.cc AEC3: Added multi-channel support for the capture delay functionality 2020-01-28 15:39:26 +00:00
block_delay_buffer.h AEC3: Added multi-channel support for the capture delay functionality 2020-01-28 15:39:26 +00:00
block_framer_unittest.cc Rename several more tests that use EXPECT_DEATH to *DeathTest. 2020-05-18 16:10:04 +00:00
block_framer.cc Reland "Reland "Add core multi-channel pipeline in AEC3 This CL adds basic the basic pipeline to support multi-channel processing in AEC3."" 2019-09-03 06:12:32 +00:00
block_framer.h Reland "Reland "Add core multi-channel pipeline in AEC3 This CL adds basic the basic pipeline to support multi-channel processing in AEC3."" 2019-09-03 06:12:32 +00:00
block_processor_metrics_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
block_processor_metrics.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
block_processor_metrics.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
block_processor_unittest.cc AEC3: Fix render delay buffer alignment issue at call start 2020-07-27 15:19:58 +00:00
block_processor.cc Allowing reduced computations in the AEC3 when the output is not used 2021-03-16 09:16:32 +00:00
block_processor.h Allowing reduced computations in the AEC3 when the output is not used 2021-03-16 09:16:32 +00:00
BUILD.gn Remove from chromium build targets that are not compatible with it. 2021-02-01 13:46:19 +00:00
clockdrift_detector_unittest.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
clockdrift_detector.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
clockdrift_detector.h IWYU: size_t is defined in stddef.h 2020-06-03 08:43:50 +00:00
coarse_filter_update_gain_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
coarse_filter_update_gain.cc AEC3: Rename shadow filter 2020-03-20 15:26:14 +00:00
coarse_filter_update_gain.h AEC3: Rename shadow filter 2020-03-20 15:26:14 +00:00
comfort_noise_generator_unittest.cc AEC3: Added parametrization of the comfort noise floor 2020-03-25 08:56:17 +00:00
comfort_noise_generator.cc AEC3: Added parametrization of the comfort noise floor 2020-03-25 08:56:17 +00:00
comfort_noise_generator.h AEC3: Added parametrization of the comfort noise floor 2020-03-25 08:56:17 +00:00
decimator_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
decimator.cc AEC3: Add signal dependent mixing before alignment 2019-12-03 11:30:48 +00:00
decimator.h AEC3: Add signal dependent mixing before alignment 2019-12-03 11:30:48 +00:00
delay_estimate.h Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
dominant_nearend_detector.cc AEC3: Sub-band nearend detector 2019-11-25 16:26:49 +00:00
dominant_nearend_detector.h AEC3: Sub-band nearend detector 2019-11-25 16:26:49 +00:00
downsampled_render_buffer.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
downsampled_render_buffer.h Format almost everything. 2019-07-08 13:45:15 +00:00
echo_audibility.cc AEC3: Correct the number of render channels in the echo audibility code 2019-12-02 13:13:11 +00:00
echo_audibility.h AEC3: Made EchoAudibility multichannel 2019-10-15 09:25:46 +00:00
echo_canceller3_unittest.cc Allowing reduced computations in the AEC3 when the output is not used 2021-03-16 09:16:32 +00:00
echo_canceller3.cc Allowing reduced computations in the AEC3 when the output is not used 2021-03-16 09:16:32 +00:00
echo_canceller3.h Enabling a safe fall-back functionality for overruns in the runtime settings 2021-03-03 12:06:54 +00:00
echo_path_delay_estimator_unittest.cc Rename EchoPathDelayEstimator to EchoPathDelayEstimatorDeathTest. 2020-05-18 14:27:14 +00:00
echo_path_delay_estimator.cc AEC3: Add signal dependent mixing before alignment 2019-12-03 11:30:48 +00:00
echo_path_delay_estimator.h AEC3: Add signal dependent mixing before alignment 2019-12-03 11:30:48 +00:00
echo_path_variability_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
echo_path_variability.cc Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
echo_path_variability.h Remove unused enums and members 2020-09-30 14:34:44 +00:00
echo_remover_metrics_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
echo_remover_metrics.cc AEC3: Stop reporting obsolete metrics 2020-10-20 11:54:48 +00:00
echo_remover_metrics.h AEC3: Stop reporting obsolete metrics 2020-10-20 11:54:48 +00:00
echo_remover_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
echo_remover.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
echo_remover.h Allowing reduced computations in the AEC3 when the output is not used 2021-03-16 09:16:32 +00:00
erl_estimator_unittest.cc Add parameterization for three multi channel AEC3 unit tests 2020-01-24 12:26:46 +00:00
erl_estimator.cc AEC3: Multi channel ERL estimator 2019-10-18 16:03:46 +00:00
erl_estimator.h AEC3: Multi channel ERL estimator 2019-10-18 16:03:46 +00:00
erle_estimator_unittest.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
erle_estimator.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
erle_estimator.h AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
fft_buffer.cc Add multi-channel to FftBuffer 2019-09-05 14:10:04 +00:00
fft_buffer.h Add multi-channel to FftBuffer 2019-09-05 14:10:04 +00:00
fft_data_avx2.cc aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
fft_data_unittest.cc Refactor cpu_features_wrapper.h functions from C to C++. 2020-09-07 08:44:24 +00:00
fft_data.h aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
filter_analyzer_unittest.cc AEC3: General cleanup after multichannel changes 2019-10-18 07:43:49 +00:00
filter_analyzer.cc Add explicit initialization for the FilterAnalyzer in AEC3 2020-09-10 10:50:43 +00:00
filter_analyzer.h Add explicit initialization for the FilterAnalyzer in AEC3 2020-09-10 10:50:43 +00:00
frame_blocker_unittest.cc Rename several more tests that use EXPECT_DEATH to *DeathTest. 2020-05-18 16:10:04 +00:00
frame_blocker.cc Reland "Reland "Add core multi-channel pipeline in AEC3 This CL adds basic the basic pipeline to support multi-channel processing in AEC3."" 2019-09-03 06:12:32 +00:00
frame_blocker.h Reland "Reland "Add core multi-channel pipeline in AEC3 This CL adds basic the basic pipeline to support multi-channel processing in AEC3."" 2019-09-03 06:12:32 +00:00
fullband_erle_estimator.cc Fixing the bounds for the max and min erle in the erle instantaneous estimation. 2020-12-15 14:29:52 +00:00
fullband_erle_estimator.h Erle metric: avoid the decreasing of the metric when there is no render activity. 2020-12-09 11:48:11 +00:00
matched_filter_avx2.cc aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
matched_filter_lag_aggregator_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
matched_filter_lag_aggregator.cc Dump histogram data in AEC3 delay estimator 2019-02-11 14:13:38 +00:00
matched_filter_lag_aggregator.h Delete macros RTC_DISALLOW_ASSIGN and RTC_DISALLOW_IMPLICIT_CONSTRUCTORS 2020-09-29 10:19:20 +00:00
matched_filter_unittest.cc Refactor cpu_features_wrapper.h functions from C to C++. 2020-09-07 08:44:24 +00:00
matched_filter.cc aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
matched_filter.h Delete macros RTC_DISALLOW_ASSIGN and RTC_DISALLOW_IMPLICIT_CONSTRUCTORS 2020-09-29 10:19:20 +00:00
moving_average_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
moving_average.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
moving_average.h Format almost everything. 2019-07-08 13:45:15 +00:00
nearend_detector.h AEC3: Sub-band nearend detector 2019-11-25 16:26:49 +00:00
refined_filter_update_gain_unittest.cc AEC3: Prevent diverging coarse filter from influencing the refined filter 2020-12-08 15:05:23 +00:00
refined_filter_update_gain.cc AEC3: Prevent diverging coarse filter from influencing the refined filter 2020-12-08 15:05:23 +00:00
refined_filter_update_gain.h AEC3: Prevent diverging coarse filter from influencing the refined filter 2020-12-08 15:05:23 +00:00
render_buffer_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
render_buffer.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
render_buffer.h Delete macros RTC_DISALLOW_ASSIGN and RTC_DISALLOW_IMPLICIT_CONSTRUCTORS 2020-09-29 10:19:20 +00:00
render_delay_buffer_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
render_delay_buffer.cc AEC3: Re-add delay headroom when precise alignment is needed 2020-10-06 07:54:08 +00:00
render_delay_buffer.h AEC3: Fix render delay buffer alignment issue at call start 2020-07-27 15:19:58 +00:00
render_delay_controller_metrics_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
render_delay_controller_metrics.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
render_delay_controller_metrics.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
render_delay_controller_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
render_delay_controller.cc Delete macros RTC_DISALLOW_ASSIGN and RTC_DISALLOW_IMPLICIT_CONSTRUCTORS 2020-09-29 10:19:20 +00:00
render_delay_controller.h AEC3: Add signal dependent mixing before alignment 2019-12-03 11:30:48 +00:00
render_signal_analyzer_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
render_signal_analyzer.cc AEC3: Rename main filter 2020-03-20 13:25:01 +00:00
render_signal_analyzer.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
residual_echo_estimator_unittest.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
residual_echo_estimator.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
residual_echo_estimator.h AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
reverb_decay_estimator.cc AEC3: Rename main filter 2020-03-20 13:25:01 +00:00
reverb_decay_estimator.h AEC3: Ensure that the data size in the reverb computer is not fixed 2019-12-19 16:35:56 +00:00
reverb_frequency_response.cc Format almost everything. 2019-07-08 13:45:15 +00:00
reverb_frequency_response.h AEC3: Remove remaining kill-switches 2019-01-29 10:31:45 +00:00
reverb_model_estimator_unittest.cc AEC3: Rename main filter 2020-03-20 13:25:01 +00:00
reverb_model_estimator.cc AEC3: Add support for multiple channels to the reverb modelling 2019-10-11 21:49:58 +00:00
reverb_model_estimator.h AEC3: Add support for multiple channels to the reverb modelling 2019-10-11 21:49:58 +00:00
reverb_model.cc AEC3: Add multichannel support to the residual echo estimator 2019-10-08 11:18:35 +00:00
reverb_model.h AEC3: Add multichannel support to the residual echo estimator 2019-10-08 11:18:35 +00:00
signal_dependent_erle_estimator_unittest.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
signal_dependent_erle_estimator.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
signal_dependent_erle_estimator.h AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
spectrum_buffer.cc AEC3: Update SpectrumBuffer API 2019-10-18 07:01:42 +00:00
spectrum_buffer.h AEC3: Update SpectrumBuffer API 2019-10-18 07:01:42 +00:00
stationarity_estimator.cc AEC3: Update SpectrumBuffer API 2019-10-18 07:01:42 +00:00
stationarity_estimator.h AEC3: Update SpectrumBuffer API 2019-10-18 07:01:42 +00:00
subband_erle_estimator.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
subband_erle_estimator.h AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
subband_nearend_detector.cc AEC3: Sub-band nearend detector 2019-11-25 16:26:49 +00:00
subband_nearend_detector.h AEC3: Sub-band nearend detector 2019-11-25 16:26:49 +00:00
subtractor_output_analyzer.cc AEC3: Prevent transparent mode from leaking low volume echo 2020-10-21 11:19:55 +00:00
subtractor_output_analyzer.h AEC3: Prevent transparent mode from leaking low volume echo 2020-10-21 11:19:55 +00:00
subtractor_output.cc AEC3: Rename shadow filter 2020-03-20 15:26:14 +00:00
subtractor_output.h AEC3: Rename shadow filter 2020-03-20 15:26:14 +00:00
subtractor_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
subtractor.cc AEC3: Prevent diverging coarse filter from influencing the refined filter 2020-12-08 15:05:23 +00:00
subtractor.h AEC3: Prevent diverging coarse filter from influencing the refined filter 2020-12-08 15:05:23 +00:00
suppression_filter_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
suppression_filter.cc AEC3: Suppression filter handles multiple channels 2019-09-24 13:50:04 +00:00
suppression_filter.h Remove unused instance of Ooura FFT 2020-06-03 00:33:54 +00:00
suppression_gain_unittest.cc Increased high frequency transparency 2020-11-02 10:42:10 +00:00
suppression_gain.cc Increased high frequency transparency 2020-11-02 10:42:10 +00:00
suppression_gain.h AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +00:00
transparent_mode.cc Switch to enable the HMM transparent mode classifier 2021-01-19 16:26:11 +00:00
transparent_mode.h AEC3: Prevent transparent mode from leaking low volume echo 2020-10-21 11:19:55 +00:00
vector_math_avx2.cc aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00
vector_math_unittest.cc Refactor cpu_features_wrapper.h functions from C to C++. 2020-09-07 08:44:24 +00:00
vector_math.h aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +00:00