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/signal_dependent_erle_estimator_unittest.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/signal_dependent_erle_estimator_unittest.cc')
-rw-r--r-- | modules/audio_processing/aec3/signal_dependent_erle_estimator_unittest.cc | 20 |
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(); |