aboutsummaryrefslogtreecommitdiff
path: root/modules/audio_processing/aec3/render_reverb_model.cc
diff options
context:
space:
mode:
authorPer Åhgren <peah@webrtc.org>2019-10-08 12:35:47 +0200
committerCommit Bot <commit-bot@chromium.org>2019-10-08 11:18:35 +0000
commitb4161d3c0d43e06d73c311e33d8fbed216fd233c (patch)
tree636382553ee809ab92f012226c2e8d11fde16cb8 /modules/audio_processing/aec3/render_reverb_model.cc
parent7e6abf0053789ccc79439d3bf81a3931e13db4db (diff)
downloadwebrtc-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.cc12
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