webrtc/modules/audio_processing/aec3
Per Åhgren d4e6904d40 AEC3: Reducing the complexity and heap usage of the adaptive filter
This CL reduces the complexity and heap usage of the adaptive filter
in AEC3 by avoiding to compute these for the shadow
filter. In particular it
-Moves to compute the ERL, frequency response and impulse response
 on an on-demand basis.
-Stores the ERL, frequency response and impulse response outside
 of the adaptive filter.

All the changes have been tested for bitexactness on a sizeable
amount of recordings.

Bug: webrtc:10913
Change-Id: If83c236a6e3f2e489be129b9ebf6143a72f521d1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151138
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29081}
2019-09-05 14:30:49 +00:00
..
mock Add multi-channel to FftBuffer 2019-09-05 14:10:04 +00:00
adaptive_fir_filter_erl_unittest.cc AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
adaptive_fir_filter_erl.cc AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
adaptive_fir_filter_erl.h AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
adaptive_fir_filter_unittest.cc AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
adaptive_fir_filter.cc AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
adaptive_fir_filter.h AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
aec3_common.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
aec3_common.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
aec3_fft_unittest.cc Removed the updating of the padding data buffer in the AEC3 FFT 2018-04-27 19:26:03 +00:00
aec3_fft.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
aec3_fft.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
aec_state_unittest.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
aec_state.cc Make VectorBuffer in AEC3 multi-channel 2019-09-05 09:03:47 +00:00
aec_state.h Aec3:Remove unused legacy code 2019-08-05 14:13:54 +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 Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
block_delay_buffer_unittest.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_delay_buffer.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
block_delay_buffer.h Format almost everything. 2019-07-08 13:45:15 +00:00
block_framer_unittest.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.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 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.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_processor.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
BUILD.gn AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +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 AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
comfort_noise_generator_unittest.cc AEC3: Compensate comfort noise level for loss due to filter bank 2018-11-06 16:17:02 +00:00
comfort_noise_generator.cc AEC3: Correcting minimum comfort noise levels 2019-04-11 14:23:22 +00:00
comfort_noise_generator.h Format almost everything. 2019-07-08 13:45:15 +00:00
decimator_unittest.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
decimator.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
decimator.h Use the AEC3 high-pass filter for the whole APM 2019-08-23 20:04:10 +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 [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 Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
echo_audibility.h Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
echo_canceller3_unittest.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
echo_canceller3.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
echo_canceller3.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
echo_path_delay_estimator_unittest.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
echo_path_delay_estimator.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
echo_path_delay_estimator.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
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 Redesign of the render buffering in AEC3 2017-12-01 23:14:32 +00:00
echo_remover_metrics_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
echo_remover_metrics.cc Format almost everything. 2019-07-08 13:45:15 +00:00
echo_remover_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
echo_remover_unittest.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
echo_remover.cc Make VectorBuffer in AEC3 multi-channel 2019-09-05 09:03:47 +00:00
echo_remover.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
erl_estimator_unittest.cc AEC3: Refactor AecState 2018-10-04 15:01:18 +00:00
erl_estimator.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
erl_estimator.h Format almost everything. 2019-07-08 13:45:15 +00:00
erle_estimator_unittest.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
erle_estimator.cc AEC3: Adding a correction factor for the Erle estimation that depends on the portion of the filter that is currently in use. 2018-11-20 12:28:05 +00:00
erle_estimator.h Format almost everything. 2019-07-08 13:45:15 +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_unittest.cc Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
fft_data.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
filter_analyzer_unittest.cc AEC3: Fix range in filter analyzer 2019-03-27 16:11:22 +00:00
filter_analyzer.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
filter_analyzer.h Format almost everything. 2019-07-08 13:45:15 +00:00
frame_blocker_unittest.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.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 AEC3: Adding a correction factor for the Erle estimation that depends on the portion of the filter that is currently in use. 2018-11-20 12:28:05 +00:00
fullband_erle_estimator.h AEC3: ERLE: Allowing increases of the ERLE estimate for low render signals. 2018-09-27 10:41:10 +00:00
main_filter_update_gain_unittest.cc AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
main_filter_update_gain.cc AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
main_filter_update_gain.h AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
matched_filter_lag_aggregator_unittest.cc AEC3: Parametrize the delay estimator to leverage strong echo paths 2018-09-06 23:01:58 +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 (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
matched_filter_unittest.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
matched_filter.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
matched_filter.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
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
render_buffer_unittest.cc Add multi-channel to FftBuffer 2019-09-05 14:10:04 +00:00
render_buffer.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
render_buffer.h Add multi-channel to FftBuffer 2019-09-05 14:10:04 +00:00
render_delay_buffer_unittest.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
render_delay_buffer.cc Add multi-channel to FftBuffer 2019-09-05 14:10:04 +00:00
render_delay_buffer.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
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 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
render_delay_controller.cc Format almost everything. 2019-07-08 13:45:15 +00:00
render_delay_controller.h Remove the ability for EchoRemover to override the render vs capture alignment 2019-04-02 14:04:38 +00:00
render_reverb_model.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
render_reverb_model.h Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
render_signal_analyzer_unittest.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
render_signal_analyzer.cc Make VectorBuffer in AEC3 multi-channel 2019-09-05 09:03:47 +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 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
residual_echo_estimator.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
residual_echo_estimator.h Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
reverb_decay_estimator.cc Format almost everything. 2019-07-08 13:45:15 +00:00
reverb_decay_estimator.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32: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 Format almost everything. 2019-07-08 13:45:15 +00:00
reverb_model_estimator.cc AEC3: Increasing the accuracy of the detection for early reverb 2018-07-30 22:34:19 +00:00
reverb_model_estimator.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
reverb_model.cc Format almost everything. 2019-07-08 13:45:15 +00:00
reverb_model.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
shadow_filter_update_gain_unittest.cc Add multi-channel to FftBuffer 2019-09-05 14:10:04 +00:00
shadow_filter_update_gain.cc Adding a smooth transition from the startup phase parameter set in AEC3 2018-03-15 13:38:16 +00:00
shadow_filter_update_gain.h Format almost everything. 2019-07-08 13:45:15 +00:00
signal_dependent_erle_estimator_unittest.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
signal_dependent_erle_estimator.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
signal_dependent_erle_estimator.h AEC3: Adding a correction factor for the Erle estimation that depends on the portion of the filter that is currently in use. 2018-11-20 12:28:05 +00:00
spectrum_buffer.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
spectrum_buffer.h Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
stationarity_estimator.cc Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
stationarity_estimator.h Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
subband_erle_estimator.cc AEC3: Use minimum ERLE during onsets 2019-02-21 14:18:44 +00:00
subband_erle_estimator.h Format almost everything. 2019-07-08 13:45:15 +00:00
subtractor_output_analyzer.cc AEC3: Remove remaining kill-switches 2019-01-29 10:31:45 +00:00
subtractor_output_analyzer.h AEC3: Remove remaining kill-switches 2019-01-29 10:31:45 +00:00
subtractor_output.cc AEC3: Changes to initial behavior and handling of saturated echo 2018-10-16 13:22:44 +00:00
subtractor_output.h AEC3: Changes to initial behavior and handling of saturated echo 2018-10-16 13:22:44 +00:00
subtractor_unittest.cc AEC3: Propagate the number of channels to the adaptive filters 2019-09-04 09:32:14 +00:00
subtractor.cc AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
subtractor.h AEC3: Reducing the complexity and heap usage of the adaptive filter 2019-09-05 14:30:49 +00:00
suppression_filter_unittest.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
suppression_filter.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
suppression_filter.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
suppression_gain_unittest.cc AEC3: Propagate the number of channels to the adaptive filters 2019-09-04 09:32:14 +00:00
suppression_gain.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
suppression_gain.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
vector_math_unittest.cc Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
vector_math.h Format almost everything. 2019-07-08 13:45:15 +00:00