webrtc/modules/audio_processing
Sam Zackrisson feee1e4c36 Add flag to APM to force multichannel even with AEC3
Currently, APM fakes multichannel in two ways:
 - With injected AECs, capture processing is only performed on the left
channel. The result is copied into the other channels.
 - With multichannel render audio, all channels are mixed into one
before analysing.

This CL adds a flag to disable these behaviors, ensuring proper
multichannel processing happens throughout the APM pipeline.

Adds killswitches to separately disable render / capture multichannel.

Additionally - AEC3 currently crashes when running with multichannel.
This CL adds the missing pieces to at least have it run without
triggering any DCHECKS, including making the high pass filter properly
handle multichannel.

Bug: webrtc:10913, webrtc:10907
Change-Id: I38795bf8f312b959fcc816a056fba2c68d4e424d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152483
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29248}
2019-09-20 06:36:12 +00:00
..
aec Rename VectorBuffer->SpectrumBuffer, MatrixBuffer->BlockBuffer, BlockBuffer->Aec2BlockBuffer 2019-09-05 10:53:24 +00:00
aec3 Add flag to APM to force multichannel even with AEC3 2019-09-20 06:36:12 +00:00
aec_dump Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
aecm Remove rtc_use_lto GN arg. 2019-08-20 14:00:49 +00:00
agc Remove rtc_use_lto GN arg. 2019-08-20 14:00:49 +00:00
agc2 Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
audio_generator (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_detector Format almost everything. 2019-07-08 13:45:15 +00:00
include Add flag to APM to force multichannel even with AEC3 2019-09-20 06:36:12 +00:00
logging webrtc: Remove semicolons. 2019-02-20 16:02:59 +00:00
ns Format almost everything. 2019-07-08 13:45:15 +00:00
test Add flag to APM to force multichannel even with AEC3 2019-09-20 06:36:12 +00:00
transient Migrate WebRTC test infra to ABSL_FLAG. 2019-07-19 06:54:04 +00:00
utility Use the AEC3 high-pass filter for the whole APM 2019-08-23 20:04:10 +00:00
vad Format almost everything. 2019-07-08 13:45:15 +00:00
audio_buffer.cc Increase the maximum supported sample rate to 384000 Hz and add tests 2019-08-29 22:14:25 +00:00
audio_buffer.h Increase the maximum supported sample rate to 384000 Hz and add tests 2019-08-29 22:14:25 +00:00
audio_buffer_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
audio_frame_view_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
audio_processing_impl.cc Add flag to APM to force multichannel even with AEC3 2019-09-20 06:36:12 +00:00
audio_processing_impl.h Add flag to APM to force multichannel even with AEC3 2019-09-20 06:36:12 +00:00
audio_processing_impl_locking_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
audio_processing_impl_unittest.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
audio_processing_performance_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
audio_processing_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
BUILD.gn Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
common.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
config_unittest.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
debug.proto Add PlayoutVolumeChange RuntimeSetting. 2019-05-10 14:12:23 +00:00
DEPS Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
echo_cancellation_bit_exact_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
echo_cancellation_impl.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
echo_cancellation_impl.h Format almost everything. 2019-07-08 13:45:15 +00:00
echo_cancellation_impl_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
echo_control_mobile_bit_exact_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
echo_control_mobile_impl.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
echo_control_mobile_impl.h Remove all AudioBuffer code that is not related to storing audio data 2019-08-15 13:49:29 +00:00
echo_control_mobile_unittest.cc Remove the enable flag from AEC2 and AECM 2019-05-03 14:20:32 +00:00
gain_control_config_proxy.cc Add replacement interface for webrtc::GainConrol 2019-03-27 15:19:41 +00:00
gain_control_config_proxy.h Add replacement interface for webrtc::GainConrol 2019-03-27 15:19:41 +00:00
gain_control_config_proxy_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
gain_control_for_experimental_agc.cc Add replacement interface for webrtc::GainConrol 2019-03-27 15:19:41 +00:00
gain_control_for_experimental_agc.h Add replacement interface for webrtc::GainConrol 2019-03-27 15:19:41 +00:00
gain_control_impl.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
gain_control_impl.h Format almost everything. 2019-07-08 13:45:15 +00:00
gain_control_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
gain_controller2.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
gain_controller2.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
gain_controller2_unittest.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
high_pass_filter.cc Add flag to APM to force multichannel even with AEC3 2019-09-20 06:36:12 +00:00
high_pass_filter.h Add flag to APM to force multichannel even with AEC3 2019-09-20 06:36:12 +00:00
high_pass_filter_unittest.cc Add flag to APM to force multichannel even with AEC3 2019-09-20 06:36:12 +00:00
level_estimator_impl.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
level_estimator_impl.h Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
level_estimator_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
noise_suppression_impl.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
noise_suppression_impl.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
noise_suppression_proxy.cc Add noise suppression settings to AudioProcessing::Config 2019-01-14 16:17:19 +00:00
noise_suppression_proxy.h (7) Rename files to snake_case: remove forwarding headers 2019-01-26 00:33:46 +00:00
noise_suppression_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
OWNERS Adding alessiob@ and minyue@ as owners of APM. 2018-07-02 07:45:31 +00:00
render_queue_item_verifier.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
residual_echo_detector.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
residual_echo_detector.h Add more parameters to the Initialize function of the echo detector. 2018-03-15 09:21:56 +00:00
residual_echo_detector_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
rms_level.cc Removing all external access to the integer sample data in AudioBuffer 2019-08-20 08:36:47 +00:00
rms_level.h Removing all external access to the integer sample data in AudioBuffer 2019-08-20 08:36:47 +00:00
rms_level_unittest.cc Removing all external access to the integer sample data in AudioBuffer 2019-08-20 08:36:47 +00:00
splitting_filter.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
splitting_filter.h Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
splitting_filter_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
three_band_filter_bank.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
three_band_filter_bank.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
typing_detection.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
typing_detection.h Reland "Export symbols needed by the Chromium component build (part 1)." 2018-10-11 09:50:21 +00:00
voice_detection_impl.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
voice_detection_impl.h Remove all AudioBuffer code that is not related to storing audio data 2019-08-15 13:49:29 +00:00
voice_detection_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00