Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1103)

Unified Diff: webrtc/modules/audio_processing/audio_processing_impl.cc

Issue 2678423005: Finalization of the first version of EchoCanceller 3 (Closed)
Patch Set: Fixed compilation error Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_processing/audio_processing_impl.cc
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc
index 14d6a26d1a7d6cec84a88ad2f0b69a1b3428f646..4c9188f7682df48404c8d70ce31e6ec2dc944ad0 100644
--- a/webrtc/modules/audio_processing/audio_processing_impl.cc
+++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
@@ -439,18 +439,11 @@ int AudioProcessingImpl::MaybeInitialize(
}
int AudioProcessingImpl::InitializeLocked() {
- int capture_audiobuffer_num_channels;
- if (private_submodules_->echo_canceller3) {
- // TODO(peah): Ensure that the echo canceller can operate on more than one
- // microphone channel.
- RTC_DCHECK(!capture_nonlocked_.beamformer_enabled);
- capture_audiobuffer_num_channels = 1;
- } else {
- capture_audiobuffer_num_channels =
- capture_nonlocked_.beamformer_enabled
- ? formats_.api_format.input_stream().num_channels()
- : formats_.api_format.output_stream().num_channels();
- }
+ const int capture_audiobuffer_num_channels =
+ capture_nonlocked_.beamformer_enabled
+ ? formats_.api_format.input_stream().num_channels()
+ : formats_.api_format.output_stream().num_channels();
+
const int render_audiobuffer_num_output_frames =
formats_.api_format.reverse_output_stream().num_frames() == 0
? formats_.render_processing_format.num_frames()
@@ -576,9 +569,7 @@ int AudioProcessingImpl::InitializeLocked(const ProcessingConfig& config) {
submodule_states_.RenderMultiBandSubModulesActive());
// TODO(aluebs): Remove this restriction once we figure out why the 3-band
// splitting filter degrades the AEC performance.
- // TODO(peah): Verify that the band splitting is needed for the AEC3.
- if (render_processing_rate > kSampleRate32kHz &&
- !capture_nonlocked_.echo_canceller3_enabled) {
+ if (render_processing_rate > kSampleRate32kHz) {
render_processing_rate = submodule_states_.RenderMultiBandProcessingActive()
? kSampleRate32kHz
: kSampleRate16kHz;
@@ -1162,6 +1153,14 @@ int AudioProcessingImpl::ProcessCaptureStreamLocked() {
capture_buffer->SplitIntoFrequencyBands();
}
+ if (private_submodules_->echo_canceller3) {
+ // Force down-mixing of the number of channels after the detection of
+ // capture signal saturation.
+ // TODO(peah): Look into ensuring that this kind of tampering with the
+ // AudioBuffer functionality should not be needed.
+ capture_buffer->set_num_channels(1);
+ }
+
if (capture_nonlocked_.beamformer_enabled) {
private_submodules_->beamformer->AnalyzeChunk(
*capture_buffer->split_data_f());

Powered by Google App Engine
This is Rietveld 408576698