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

Unified Diff: webrtc/modules/audio_processing/aec3/matched_filter_unittest.cc

Issue 2784023002: Major AEC3 render pipeline changes (Closed)
Patch Set: Disabled one more DEATH test that caused issues due to bug on bots Created 3 years, 8 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/aec3/matched_filter_unittest.cc
diff --git a/webrtc/modules/audio_processing/aec3/matched_filter_unittest.cc b/webrtc/modules/audio_processing/aec3/matched_filter_unittest.cc
index 952b3710fe04deff81f157e6a8612500c1a65685..75b6b572b38513fe7f0bd8dd880dbc9b98307cbd 100644
--- a/webrtc/modules/audio_processing/aec3/matched_filter_unittest.cc
+++ b/webrtc/modules/audio_processing/aec3/matched_filter_unittest.cc
@@ -20,6 +20,8 @@
#include "webrtc/base/random.h"
#include "webrtc/modules/audio_processing/aec3/aec3_common.h"
+#include "webrtc/modules/audio_processing/aec3/decimator_by_4.h"
+#include "webrtc/modules/audio_processing/aec3/render_delay_buffer.h"
#include "webrtc/modules/audio_processing/logging/apm_data_dumper.h"
#include "webrtc/modules/audio_processing/test/echo_canceller_test_tools.h"
#include "webrtc/system_wrappers/include/cpu_features_wrapper.h"
@@ -87,23 +89,31 @@ TEST(MatchedFilter, TestOptimizations) {
// delayed signals.
TEST(MatchedFilter, LagEstimation) {
Random random_generator(42U);
- std::array<float, kSubBlockSize> render;
- std::array<float, kSubBlockSize> capture;
- render.fill(0.f);
+ std::vector<std::vector<float>> render(3,
+ std::vector<float>(kBlockSize, 0.f));
+ std::array<float, kBlockSize> capture;
capture.fill(0.f);
ApmDataDumper data_dumper(0);
for (size_t delay_samples : {5, 64, 150, 200, 800, 1000}) {
SCOPED_TRACE(ProduceDebugText(delay_samples));
- DelayBuffer<float> signal_delay_buffer(delay_samples);
+ DecimatorBy4 capture_decimator;
+ DelayBuffer<float> signal_delay_buffer(4 * delay_samples);
MatchedFilter filter(&data_dumper, DetectOptimization(),
kWindowSizeSubBlocks, kNumMatchedFilters,
kAlignmentShiftSubBlocks);
+ std::unique_ptr<RenderDelayBuffer> render_delay_buffer(
+ RenderDelayBuffer::Create(3));
// Analyze the correlation between render and capture.
for (size_t k = 0; k < (100 + delay_samples / kSubBlockSize); ++k) {
- RandomizeSampleVector(&random_generator, render);
- signal_delay_buffer.Delay(render, capture);
- filter.Update(render, capture);
+ RandomizeSampleVector(&random_generator, render[0]);
+ signal_delay_buffer.Delay(render[0], capture);
+ render_delay_buffer->Insert(render);
+ render_delay_buffer->UpdateBuffers();
+ std::array<float, kSubBlockSize> downsampled_capture;
+ capture_decimator.Decimate(capture, downsampled_capture);
+ filter.Update(render_delay_buffer->GetDownsampledRenderBuffer(),
+ downsampled_capture);
}
// Obtain the lag estimates.
@@ -151,19 +161,22 @@ TEST(MatchedFilter, LagEstimation) {
// estimates for uncorrelated render and capture signals.
TEST(MatchedFilter, LagNotReliableForUncorrelatedRenderAndCapture) {
Random random_generator(42U);
- std::array<float, kSubBlockSize> render;
+ std::vector<std::vector<float>> render(3,
+ std::vector<float>(kBlockSize, 0.f));
std::array<float, kSubBlockSize> capture;
- render.fill(0.f);
capture.fill(0.f);
ApmDataDumper data_dumper(0);
+ std::unique_ptr<RenderDelayBuffer> render_delay_buffer(
+ RenderDelayBuffer::Create(3));
MatchedFilter filter(&data_dumper, DetectOptimization(), kWindowSizeSubBlocks,
kNumMatchedFilters, kAlignmentShiftSubBlocks);
// Analyze the correlation between render and capture.
for (size_t k = 0; k < 100; ++k) {
- RandomizeSampleVector(&random_generator, render);
+ RandomizeSampleVector(&random_generator, render[0]);
RandomizeSampleVector(&random_generator, capture);
- filter.Update(render, capture);
+ render_delay_buffer->Insert(render);
+ filter.Update(render_delay_buffer->GetDownsampledRenderBuffer(), capture);
}
// Obtain the lag estimates.
@@ -180,22 +193,28 @@ TEST(MatchedFilter, LagNotReliableForUncorrelatedRenderAndCapture) {
// render signals of low level.
TEST(MatchedFilter, LagNotUpdatedForLowLevelRender) {
Random random_generator(42U);
- std::array<float, kSubBlockSize> render;
- std::array<float, kSubBlockSize> capture;
- render.fill(0.f);
+ std::vector<std::vector<float>> render(3,
+ std::vector<float>(kBlockSize, 0.f));
+ std::array<float, kBlockSize> capture;
capture.fill(0.f);
ApmDataDumper data_dumper(0);
MatchedFilter filter(&data_dumper, DetectOptimization(), kWindowSizeSubBlocks,
kNumMatchedFilters, kAlignmentShiftSubBlocks);
+ std::unique_ptr<RenderDelayBuffer> render_delay_buffer(
+ RenderDelayBuffer::Create(3));
+ DecimatorBy4 capture_decimator;
// Analyze the correlation between render and capture.
for (size_t k = 0; k < 100; ++k) {
- RandomizeSampleVector(&random_generator, render);
- for (auto& render_k : render) {
+ RandomizeSampleVector(&random_generator, render[0]);
+ for (auto& render_k : render[0]) {
render_k *= 149.f / 32767.f;
}
- std::copy(render.begin(), render.end(), capture.begin());
- filter.Update(render, capture);
+ std::copy(render[0].begin(), render[0].end(), capture.begin());
+ std::array<float, kSubBlockSize> downsampled_capture;
+ capture_decimator.Decimate(capture, downsampled_capture);
+ filter.Update(render_delay_buffer->GetDownsampledRenderBuffer(),
+ downsampled_capture);
}
// Obtain the lag estimates.

Powered by Google App Engine
This is Rietveld 408576698