webrtc/modules/audio_processing/aec3
Christian Schuldt f4e99dba41 Update AEC3 echo tail estimation.
Note: estimation is turned OFF if config_.ep_strength.default_len
is set >= 0 (in this case config_.ep_strength.default_len defines a
constant echo decay factor), and hence turned ON if < 0. In case the
echo tail estimation is turned ON, -config_.ep_strength.default_len is
the starting point for the estimator.

The estimation is done in two passes; first we go through all "sections"
(corresponding to chunks of length kFftLengthBy2) of the filter impulse
response to determine which sections correspond to a "stable" decay",
and then the second pass we go through each stable decay section and
estimate the decay. The actual decay estimation is based on linear
regression of the log magnitude of the squared impulse response.
A bunch of sanity checks are also performed continuously to avoid
estimation error during e.g., filter adaptation.

Bug: webrtc:8924
Change-Id: I686ce3f3e8b6b472348f8d6e01fb44c31e25145d
Reviewed-on: https://webrtc-review.googlesource.com/48440
Commit-Queue: Christian Schuldt <cschuldt@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22247}
2018-03-01 11:21:12 +00:00
..
mock Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
adaptive_fir_filter.cc Streamline error handling and logging in the audio processing module 2018-02-15 15:06:26 +00:00
adaptive_fir_filter.h Added faster initial model adaptation speed in AEC3 2018-01-15 19:29:11 +00:00
adaptive_fir_filter_unittest.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
aec3_common.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
aec3_common.h Use the filter delay to use the proper render block in the AEC3 AecState 2018-01-10 15:53:02 +00:00
aec3_fft.cc Correct the FFT windowing when computing the AEC NLP gain 2018-01-11 14:41:11 +00:00
aec3_fft.h Correct the FFT windowing when computing the AEC NLP gain 2018-01-11 14:41:11 +00:00
aec3_fft_unittest.cc Correct the FFT windowing when computing the AEC NLP gain 2018-01-11 14:41:11 +00:00
aec_state.cc Update AEC3 echo tail estimation. 2018-03-01 11:21:12 +00:00
aec_state.h Update AEC3 echo tail estimation. 2018-03-01 11:21:12 +00:00
aec_state_unittest.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
block_framer.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
block_framer.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
block_framer_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
block_processor.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
block_processor.h APM reports ERL and ERLE metrics for AEC3. 2017-11-22 15:01:47 +00:00
block_processor_metrics.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
block_processor_metrics.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
block_processor_metrics_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
block_processor_unittest.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
BUILD.gn Move EchoCanceller3Factory to api/auido 2018-02-27 14:09:59 +00:00
cascaded_biquad_filter.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
cascaded_biquad_filter.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
cascaded_biquad_filter_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
comfort_noise_generator.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
comfort_noise_generator.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
comfort_noise_generator_unittest.cc Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
decimator.cc AEC3 delay estimator refactoring and introducing ability to customize 2017-11-17 17:51:37 +00:00
decimator.h AEC3 delay estimator refactoring and introducing ability to customize 2017-11-17 17:51:37 +00:00
decimator_unittest.cc AEC3 delay estimator refactoring and introducing ability to customize 2017-11-17 17:51:37 +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
downsampled_render_buffer.cc Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
downsampled_render_buffer.h Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
echo_canceller3.cc Move EchoCanceller3Factory to api/auido 2018-02-27 14:09:59 +00:00
echo_canceller3.h Move EchoCanceller3Factory to api/auido 2018-02-27 14:09:59 +00:00
echo_canceller3_unittest.cc Move EchoCanceller3Factory to api/auido 2018-02-27 14:09:59 +00:00
echo_path_delay_estimator.cc AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +00:00
echo_path_delay_estimator.h AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +00:00
echo_path_delay_estimator_unittest.cc AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +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 Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
echo_path_variability_unittest.cc Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
echo_remover.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
echo_remover.h Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
echo_remover_metrics.cc Use the filter delay to use the proper render block in the AEC3 AecState 2018-01-10 15:53:02 +00:00
echo_remover_metrics.h Added ERL and ERLE metrics to UMA. 2017-11-29 09:06:59 +00:00
echo_remover_metrics_unittest.cc Correct the FFT windowing when computing the AEC NLP gain 2018-01-11 14:41:11 +00:00
echo_remover_unittest.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
erl_estimator.cc Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
erl_estimator.h Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
erl_estimator_unittest.cc Compute ERL over all frequency bins in AEC3. 2017-11-16 14:40:33 +00:00
erle_estimator.cc Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
erle_estimator.h Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
erle_estimator_unittest.cc Compute ERLE over all frequency bins in AEC3. 2017-11-16 12:37:03 +00:00
fft_buffer.cc Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
fft_buffer.h Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
fft_data.h Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
fft_data_unittest.cc Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
frame_blocker.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
frame_blocker.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
frame_blocker_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
main_filter_update_gain.cc Simplified the gain methods for the shadow and main filters in AEC3 2018-01-15 18:05:21 +00:00
main_filter_update_gain.h AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +00:00
main_filter_update_gain_unittest.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
matched_filter.cc AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +00:00
matched_filter.h AEC3 delay estimator refactoring and introducing ability to customize 2017-11-17 17:51:37 +00:00
matched_filter_lag_aggregator.cc Robustify the faster alignment in AEC3 to avoid resets 2018-01-25 09:57:31 +00:00
matched_filter_lag_aggregator.h Robustify the faster alignment in AEC3 to avoid resets 2018-01-25 09:57:31 +00:00
matched_filter_lag_aggregator_unittest.cc Robustify the faster alignment in AEC3 to avoid resets 2018-01-25 09:57:31 +00:00
matched_filter_unittest.cc Simplified the usage of the render buffer in AEC3 2017-12-20 14:46:36 +00:00
matrix_buffer.cc Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
matrix_buffer.h Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
output_selector.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
output_selector.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
output_selector_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
render_buffer.cc Simplified the usage of the render buffer in AEC3 2017-12-20 14:46:36 +00:00
render_buffer.h Safe behavior of the initial echo removal in AEC3 2018-02-20 22:01:36 +00:00
render_buffer_unittest.cc Simplified the usage of the render buffer in AEC3 2017-12-20 14:46:36 +00:00
render_delay_buffer.cc Safe behavior of the initial echo removal in AEC3 2018-02-20 22:01:36 +00:00
render_delay_buffer.h AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +00:00
render_delay_buffer_unittest.cc Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
render_delay_controller.cc Add a hysteresis for the API call skew detection to better handle jittery platforms 2018-02-28 14:02:43 +00:00
render_delay_controller.h AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +00:00
render_delay_controller_metrics.cc Adding reporting and logging for events of call API skew shifts 2018-02-26 23:57:23 +00:00
render_delay_controller_metrics.h Adding reporting and logging for events of call API skew shifts 2018-02-26 23:57:23 +00:00
render_delay_controller_metrics_unittest.cc Adding reporting and logging for events of call API skew shifts 2018-02-26 23:57:23 +00:00
render_delay_controller_unittest.cc Robustify the faster alignment in AEC3 to avoid resets 2018-01-25 09:57:31 +00:00
render_signal_analyzer.cc Simplified the usage of the render buffer in AEC3 2017-12-20 14:46:36 +00:00
render_signal_analyzer.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
render_signal_analyzer_unittest.cc Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
residual_echo_estimator.cc Improved robustness and recovery speed in AEC3 during echo path changes 2018-02-06 15:07:54 +00:00
residual_echo_estimator.h AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +00:00
residual_echo_estimator_unittest.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
shadow_filter_update_gain.cc Simplified the gain methods for the shadow and main filters in AEC3 2018-01-15 18:05:21 +00:00
shadow_filter_update_gain.h AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +00:00
shadow_filter_update_gain_unittest.cc Simplified the gain methods for the shadow and main filters in AEC3 2018-01-15 18:05:21 +00:00
skew_estimator.cc Moved and simplifed the AEC3 API call skew estimator and added tests 2018-02-22 00:52:10 +00:00
skew_estimator.h Moved and simplifed the AEC3 API call skew estimator and added tests 2018-02-22 00:52:10 +00:00
skew_estimator_unittest.cc Moved and simplifed the AEC3 API call skew estimator and added tests 2018-02-22 00:52:10 +00:00
subtractor.cc Use the best of the shadow and main filter characteristics in AEC3 2018-01-15 21:45:21 +00:00
subtractor.h Use the best of the shadow and main filter characteristics in AEC3 2018-01-15 21:45:21 +00:00
subtractor_output.h Correct the FFT windowing when computing the AEC NLP gain 2018-01-11 14:41:11 +00:00
subtractor_unittest.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
suppression_filter.cc Move some numeric utility code from rtc_base/ to rtc_base/numerics/ 2017-11-22 11:21:47 +00:00
suppression_filter.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
suppression_filter_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
suppression_gain.cc Safe behavior of the initial echo removal in AEC3 2018-02-20 22:01:36 +00:00
suppression_gain.h AEC3 includes echo_canceller3_config.h directly 2018-02-15 08:30:14 +00:00
suppression_gain_unittest.cc Inform the AEC3 echo remover about the status of the estimated delay 2018-02-21 17:08:36 +00:00
vector_buffer.cc Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
vector_buffer.h Corrections of the render buffering scheme in AEC3 to ensure causality 2017-12-11 21:09:56 +00:00
vector_math.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
vector_math_unittest.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00