webrtc/modules/audio_processing/aec3
Gustaf Ullberg 6670a9d145 AEC3: More efficient comfort noise generation
Comfort noise was generated by picking random angles on the unit circle
for each frequency band and then obtaining points on the unit circle from
{cos(a), -sin(a)}.

In order to reduce complexity, this change introduces a randomly indexed
table of 32 elements over sin(a). cos(a) is obtained by adding an offset
corresponding to pi/2 to the index. The table is pre-scaled by sqrt(2) to
avoid later multiplications.

This change reduces the computational complexity of AEC3 by ~8% with no
audible degradation.

Bug: webrtc:10189
Change-Id: I8cfe2469022fb1fe910ab3f966e55d9d499b7161
Reviewed-on: https://webrtc-review.googlesource.com/c/116787
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26209}
2019-01-11 08:46:05 +00:00
..
mock AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
adaptive_fir_filter.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
adaptive_fir_filter.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
adaptive_fir_filter_unittest.cc Make fewer copies when using StringBuilder. 2018-09-24 09:39:19 +00:00
aec3_common.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
aec3_common.h AEC3: Increasing the accuracy of the detection for early reverb 2018-07-30 22:34:19 +00:00
aec3_fft.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
aec3_fft.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +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
aec_state.cc AEC3: moving the dumping of the Erle to aec state 2018-12-21 10:29:42 +00:00
aec_state.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
aec_state_unittest.cc AEC3: Changes to initial behavior and handling of saturated echo 2018-10-16 13:22:44 +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 AEC3: Add metrics for API call jitter 2018-11-27 19:52:08 +00:00
block_delay_buffer.cc AEC3: Adding the option for applying a fixed delay to the capture signal 2018-08-23 10:05:07 +00:00
block_delay_buffer.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
block_delay_buffer_unittest.cc AEC3: Adding the option for applying a fixed delay to the capture signal 2018-08-23 10:05:07 +00:00
block_framer.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32: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 Make fewer copies when using StringBuilder. 2018-09-24 09:39:19 +00:00
block_processor.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
block_processor.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
block_processor2.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +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 Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
block_processor_metrics_unittest.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
block_processor_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
BUILD.gn AEC3: Add metrics for API call jitter 2018-11-27 19:52:08 +00:00
cascaded_biquad_filter.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
cascaded_biquad_filter.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
cascaded_biquad_filter_unittest.cc AEC3: Move decimator filters to the new notation 2018-06-07 08:09:17 +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
clockdrift_detector_unittest.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
comfort_noise_generator.cc AEC3: More efficient comfort noise generation 2019-01-11 08:46:05 +00:00
comfort_noise_generator.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +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
decimator.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
decimator.h AEC3: Delay estimator uses bandpass filtered signal with downsampling factor 8 2018-05-25 09:31:38 +00:00
decimator_unittest.cc Make fewer copies when using StringBuilder. 2018-09-24 09:39:19 +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 [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
echo_audibility.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
echo_audibility.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
echo_canceller3.cc AEC3: Fix ENR threshold for WebRTC-Aec3UseLegacyNormalSuppressorTuning 2018-12-03 15:19:00 +00:00
echo_canceller3.h AEC3: Add metrics for API call jitter 2018-11-27 19:52:08 +00:00
echo_canceller3_unittest.cc Make fewer copies when using StringBuilder. 2018-09-24 09:39:19 +00:00
echo_path_delay_estimator.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
echo_path_delay_estimator.h AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
echo_path_delay_estimator_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +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 AEC3: Computation of comfort noise gains from suppression gains 2018-11-06 16:10:52 +00:00
echo_remover.h AEC3: Adding explicit handling of microphone gain changes 2018-07-16 16:02:07 +00:00
echo_remover_metrics.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
echo_remover_metrics.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
echo_remover_metrics_unittest.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
echo_remover_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
erl_estimator.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
erl_estimator.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
erl_estimator_unittest.cc AEC3: Refactor AecState 2018-10-04 15:01:18 +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 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_unittest.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
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 [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
fft_data.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
fft_data_unittest.cc Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
filter_analyzer.cc AEC3: Optimizing the Update method of the FilterAnalyzer class. 2018-11-28 09:01:07 +00:00
filter_analyzer.h AEC3: Optimizing the Update method of the FilterAnalyzer class. 2018-11-28 09:01:07 +00:00
frame_blocker.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32: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 Make fewer copies when using StringBuilder. 2018-09-24 09:39:19 +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.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
main_filter_update_gain.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
main_filter_update_gain_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
matched_filter.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
matched_filter.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
matched_filter_lag_aggregator.cc AEC3: Decrease latency until the delay has been detected 2018-10-31 07:29:48 +00:00
matched_filter_lag_aggregator.h AEC3: Decrease latency until the delay has been detected 2018-10-31 07:29:48 +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_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
matrix_buffer.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
matrix_buffer.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
moving_average.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
moving_average.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
moving_average_unittest.cc AEC3: Unittests for MovingAverage 2018-06-19 12:45:10 +00:00
render_buffer.cc Remove all remaining non-test uses of std::stringstream. 2018-09-13 08:52:05 +00:00
render_buffer.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +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 [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
render_delay_buffer.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
render_delay_buffer2.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
render_delay_buffer_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
render_delay_controller.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
render_delay_controller.h AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
render_delay_controller2.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
render_delay_controller_metrics.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
render_delay_controller_metrics.h AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
render_delay_controller_metrics_unittest.cc AEC3: Clockdrift detection 2018-11-22 16:02:44 +00:00
render_delay_controller_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
render_reverb_model.cc AEC3: Corrected include 2018-11-06 18:57:19 +00:00
render_reverb_model.h AEC3: changes the signal used for deciding when to update the erle so the reverb render signal is now used 2018-10-22 10:30:12 +00:00
render_signal_analyzer.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
render_signal_analyzer.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
render_signal_analyzer_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
residual_echo_estimator.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
residual_echo_estimator.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
residual_echo_estimator_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
reverb_decay_estimator.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +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 [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
reverb_frequency_response.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
reverb_model.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
reverb_model.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +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_estimator_unittest.cc AEC3: Increasing the accuracy of the detection for early reverb 2018-07-30 22:34:19 +00:00
reverb_model_fallback.cc AEC3: Changes to how the reverberation decay is applied. 2018-06-13 14:54:04 +00:00
reverb_model_fallback.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +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 [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
shadow_filter_update_gain_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
signal_dependent_erle_estimator.cc AEC3: moving the dumping of the Erle to aec state 2018-12-21 10:29:42 +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
signal_dependent_erle_estimator_unittest.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
skew_estimator.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
skew_estimator.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
skew_estimator_unittest.cc Replace rtc::Optional with absl::optional in modules/audio processing 2018-06-19 10:38:56 +00:00
stationarity_estimator.cc AEC3: changes the signal used for deciding when to update the erle so the reverb render signal is now used 2018-10-22 10:30:12 +00:00
stationarity_estimator.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
subband_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
subband_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
subtractor.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
subtractor.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +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_output_analyzer.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
subtractor_output_analyzer.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
subtractor_unittest.cc AEC3: Introduce partial adaptive filter resets at echo path changes 2018-10-18 10:46:06 +00:00
suppression_filter.cc AEC3: Computation of comfort noise gains from suppression gains 2018-11-06 16:10:52 +00:00
suppression_filter.h AEC3: Computation of comfort noise gains from suppression gains 2018-11-06 16:10:52 +00:00
suppression_filter_unittest.cc AEC3: Computation of comfort noise gains from suppression gains 2018-11-06 16:10:52 +00:00
suppression_gain.cc AEC3: Fix ENR in the dominant nearend detection 2018-11-28 09:23:34 +00:00
suppression_gain.h AEC3: Allow limiting dominant nearend to the non-initial phase 2018-10-24 07:15:49 +00:00
suppression_gain_limiter.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
suppression_gain_limiter.h AEC3: Loosen the echo removal requirements in conservative mode 2018-08-19 10:43:46 +00:00
suppression_gain_unittest.cc AEC3: Simplify render buffering 2018-10-15 13:31:50 +00:00
vector_buffer.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
vector_buffer.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
vector_math.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
vector_math_unittest.cc Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00