webrtc/modules/audio_processing/aec3
Gustaf Ullberg a63d152423 AEC3: Unbounded echo spectrum for dominant nearend detection.
The dominant nearend detector uses the residual echo spectrum for
determining whether in nearend state. The residual echo spectrum in
computed using the ERLE. To reduce the risk of echo leaks in the
suppressor, the ERLE is capped. While minimizing echo leaks, the
capping of the ERLE can affect the dominant nearend classification
negatively as the residual echo spectrum is often over estimated.

This change enables the dominant nearend detector to use a residual
echo spectrum computed with a virtually non-capped ERLE. This ERLE
is only used for dominant nearend detection and leads to increased
transparency.

The feature is currently disabled by default and can be enabled
with the field trial "WebRTC-Aec3UseUnboundedEchoSpectrum".

Bug: webrtc:12870
Change-Id: Icb675c6f5d42ab9286e623b5fb38424d5c9cbee4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221920
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34270}
2021-06-11 13:30:00 +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.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
adaptive_fir_filter_avx2.cc aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +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_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_unittest.cc Refactor cpu_features_wrapper.h functions from C to C++. 2020-09-07 08:44:24 +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.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
aec3_fft_unittest.cc Rename several more tests that use EXPECT_DEATH to *DeathTest. 2020-05-18 16:10:04 +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: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +00:00
aec_state_unittest.cc AEC3: Avoid overcompensating for render onsets during dominant nearend 2021-04-20 12:33:02 +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
alignment_mixer_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +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
api_call_jitter_metrics_unittest.cc Format almost everything. 2019-07-08 13:45:15 +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.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_delay_buffer_unittest.cc AEC3: Added multi-channel support for the capture delay functionality 2020-01-28 15:39:26 +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_framer_unittest.cc Rename several more tests that use EXPECT_DEATH to *DeathTest. 2020-05-18 16:10:04 +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
block_processor_metrics.cc
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_metrics_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
block_processor_unittest.cc AEC3: Fix render delay buffer alignment issue at call start 2020-07-27 15:19:58 +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.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
clockdrift_detector_unittest.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +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
coarse_filter_update_gain_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +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
comfort_noise_generator_unittest.cc AEC3: Added parametrization of the comfort noise floor 2020-03-25 08:56:17 +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
decimator_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
delay_estimate.h
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
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.cc Improvements to AEC3 logging to simplify debugging 2021-05-19 14:28:44 +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_canceller3_unittest.cc Allowing reduced computations in the AEC3 when the output is not used 2021-03-16 09:16:32 +00:00
echo_path_delay_estimator.cc AEC3: Change adaptation speed of the matched filter after a delay is found 2021-05-19 13:37:13 +00:00
echo_path_delay_estimator.h AEC3: Add signal dependent mixing before alignment 2019-12-03 11:30:48 +00:00
echo_path_delay_estimator_unittest.cc Rename EchoPathDelayEstimator to EchoPathDelayEstimatorDeathTest. 2020-05-18 14:27:14 +00:00
echo_path_variability.cc
echo_path_variability.h Remove unused enums and members 2020-09-30 14:34:44 +00:00
echo_path_variability_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
echo_remover.cc AEC3: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +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
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_metrics_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
echo_remover_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +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
erl_estimator_unittest.cc Add parameterization for three multi channel AEC3 unit tests 2020-01-24 12:26:46 +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: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +00:00
erle_estimator_unittest.cc AEC3: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +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.h aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +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
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
filter_analyzer_unittest.cc AEC3: General cleanup after multichannel changes 2019-10-18 07:43:49 +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
frame_blocker_unittest.cc Rename several more tests that use EXPECT_DEATH to *DeathTest. 2020-05-18 16:10:04 +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.cc AEC3: Change adaptation speed of the matched filter after a delay is found 2021-05-19 13:37:13 +00:00
matched_filter.h AEC3: Change adaptation speed of the matched filter after a delay is found 2021-05-19 13:37:13 +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.cc Dump histogram data in AEC3 delay estimator 2019-02-11 14:13:38 +00:00
matched_filter_lag_aggregator.h AEC3: Change adaptation speed of the matched filter after a delay is found 2021-05-19 13:37:13 +00:00
matched_filter_lag_aggregator_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
matched_filter_unittest.cc AEC3: Change adaptation speed of the matched filter after a delay is found 2021-05-19 13:37:13 +00:00
moving_average.cc
moving_average.h Format almost everything. 2019-07-08 13:45:15 +00:00
moving_average_unittest.cc 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.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
refined_filter_update_gain_unittest.cc AEC3: Prevent diverging coarse filter from influencing the refined filter 2020-12-08 15:05:23 +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_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_buffer_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_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_metrics_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
render_delay_controller_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
render_signal_analyzer_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
residual_echo_estimator.cc AEC3: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +00:00
residual_echo_estimator.h AEC3: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +00:00
residual_echo_estimator_unittest.cc AEC3: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +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.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
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_estimator_unittest.cc AEC3: Rename main filter 2020-03-20 13:25:01 +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
signal_dependent_erle_estimator_unittest.cc 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: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +00:00
subband_erle_estimator.h AEC3: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +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.cc Add ability to dump the coarse filter in the echo subtractor 2021-05-19 08:24:16 +00:00
subtractor.h Add ability to dump the coarse filter in the echo subtractor 2021-05-19 08:24:16 +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_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_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_filter_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
suppression_gain.cc AEC3: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +00:00
suppression_gain.h AEC3: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +00:00
suppression_gain_unittest.cc AEC3: Unbounded echo spectrum for dominant nearend detection. 2021-06-11 13:30:00 +00:00
transparent_mode.cc Improvements to AEC3 logging to simplify debugging 2021-05-19 14:28:44 +00:00
transparent_mode.h AEC3: Prevent transparent mode from leaking low volume echo 2020-10-21 11:19:55 +00:00
vector_math.h aec3: Support AVX2/FMA intrinsics in AEC3 2020-09-01 11:58:16 +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