diff options
author | Per Åhgren <peah@webrtc.org> | 2019-10-08 12:35:47 +0200 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-08 11:18:35 +0000 |
commit | b4161d3c0d43e06d73c311e33d8fbed216fd233c (patch) | |
tree | 636382553ee809ab92f012226c2e8d11fde16cb8 /modules/audio_processing/aec3/render_reverb_model.cc | |
parent | 7e6abf0053789ccc79439d3bf81a3931e13db4db (diff) | |
download | webrtc-b4161d3c0d43e06d73c311e33d8fbed216fd233c.tar.gz |
AEC3: Add multichannel support to the residual echo estimator
This CL adds support for multichannel in the residual echo
estimator code. It also adds placeholder functionality in
the surrounding code to ensure that the residual echo
estimator receives the require inputs.
The changes in the CL has been shown to be bitexact on a
large set of mono recordings.
Bug: webrtc:10913
Change-Id: I726128ca928648b1dcf36c5f479eb243f3ff3f96
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155361
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29400}
Diffstat (limited to 'modules/audio_processing/aec3/render_reverb_model.cc')
-rw-r--r-- | modules/audio_processing/aec3/render_reverb_model.cc | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/modules/audio_processing/aec3/render_reverb_model.cc b/modules/audio_processing/aec3/render_reverb_model.cc index 1c6a7e8323..0410a9a1ad 100644 --- a/modules/audio_processing/aec3/render_reverb_model.cc +++ b/modules/audio_processing/aec3/render_reverb_model.cc @@ -36,10 +36,14 @@ void RenderReverbModel::Apply(const SpectrumBuffer& spectrum_buffer, int idx_past = spectrum_buffer.IncIndex(idx_at_delay); const auto& X2 = spectrum_buffer.buffer[idx_at_delay][/*channel=*/0]; RTC_DCHECK_EQ(X2.size(), reverb_power_spectrum.size()); - std::copy(X2.begin(), X2.end(), reverb_power_spectrum.begin()); - render_reverb_.AddReverbNoFreqShaping( - spectrum_buffer.buffer[idx_past][/*channel=*/0], 1.0f, reverb_decay, - reverb_power_spectrum); + render_reverb_.UpdateReverbNoFreqShaping( + spectrum_buffer.buffer[idx_past][/*channel=*/0], 1.0f, reverb_decay); + + rtc::ArrayView<const float, kFftLengthBy2Plus1> reverb_power = + render_reverb_.reverb(); + for (size_t k = 0; k < X2.size(); ++k) { + reverb_power_spectrum[k] = X2[k] + reverb_power[k]; + } } } // namespace webrtc |