aboutsummaryrefslogtreecommitdiff
path: root/modules/audio_processing/aec3/signal_dependent_erle_estimator_unittest.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/signal_dependent_erle_estimator_unittest.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/signal_dependent_erle_estimator_unittest.cc')
-rw-r--r--modules/audio_processing/aec3/signal_dependent_erle_estimator_unittest.cc20
1 files changed, 14 insertions, 6 deletions
diff --git a/modules/audio_processing/aec3/signal_dependent_erle_estimator_unittest.cc b/modules/audio_processing/aec3/signal_dependent_erle_estimator_unittest.cc
index 7baa8f0644..ccc2ef3455 100644
--- a/modules/audio_processing/aec3/signal_dependent_erle_estimator_unittest.cc
+++ b/modules/audio_processing/aec3/signal_dependent_erle_estimator_unittest.cc
@@ -112,6 +112,7 @@ void TestInputs::UpdateCurrentPowerSpectra() {
} // namespace
TEST(SignalDependentErleEstimator, SweepSettings) {
+ const size_t kNumCaptureChannels = 1;
EchoCanceller3Config cfg;
size_t max_length_blocks = 50;
for (size_t blocks = 0; blocks < max_length_blocks; blocks = blocks + 10) {
@@ -124,9 +125,12 @@ TEST(SignalDependentErleEstimator, SweepSettings) {
cfg.delay.delay_headroom_samples = delay_headroom * kBlockSize;
cfg.erle.num_sections = num_sections;
if (EchoCanceller3Config::Validate(&cfg)) {
- SignalDependentErleEstimator s(cfg);
- std::array<float, kFftLengthBy2Plus1> average_erle;
- average_erle.fill(cfg.erle.max_l);
+ SignalDependentErleEstimator s(cfg, kNumCaptureChannels);
+ std::array<std::array<float, kFftLengthBy2Plus1>, kNumCaptureChannels>
+ average_erle;
+ for (auto& e : average_erle) {
+ e.fill(cfg.erle.max_l);
+ }
TestInputs inputs(cfg);
for (size_t n = 0; n < 10; ++n) {
inputs.Update();
@@ -140,6 +144,7 @@ TEST(SignalDependentErleEstimator, SweepSettings) {
}
TEST(SignalDependentErleEstimator, LongerRun) {
+ const size_t kNumCaptureChannels = 1;
EchoCanceller3Config cfg;
cfg.filter.main.length_blocks = 2;
cfg.filter.main_initial.length_blocks = 1;
@@ -147,9 +152,12 @@ TEST(SignalDependentErleEstimator, LongerRun) {
cfg.delay.hysteresis_limit_blocks = 0;
cfg.erle.num_sections = 2;
EXPECT_EQ(EchoCanceller3Config::Validate(&cfg), true);
- std::array<float, kFftLengthBy2Plus1> average_erle;
- average_erle.fill(cfg.erle.max_l);
- SignalDependentErleEstimator s(cfg);
+ std::array<std::array<float, kFftLengthBy2Plus1>, kNumCaptureChannels>
+ average_erle;
+ for (auto& e : average_erle) {
+ e.fill(cfg.erle.max_l);
+ }
+ SignalDependentErleEstimator s(cfg, kNumCaptureChannels);
TestInputs inputs(cfg);
for (size_t n = 0; n < 200; ++n) {
inputs.Update();