Index: webrtc/modules/audio_processing/aec3/echo_remover_unittest.cc |
diff --git a/webrtc/modules/audio_processing/aec3/echo_remover_unittest.cc b/webrtc/modules/audio_processing/aec3/echo_remover_unittest.cc |
index 29d3410a1e703ecf555e6f27970d2db32442a0f0..54fad980eb4e75bfc86749c5c35ea69ef50119d9 100644 |
--- a/webrtc/modules/audio_processing/aec3/echo_remover_unittest.cc |
+++ b/webrtc/modules/audio_processing/aec3/echo_remover_unittest.cc |
@@ -18,6 +18,8 @@ |
#include "webrtc/base/random.h" |
#include "webrtc/modules/audio_processing/aec3/aec3_common.h" |
+#include "webrtc/modules/audio_processing/aec3/render_buffer.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/test/gtest.h" |
@@ -44,6 +46,8 @@ TEST(EchoRemover, BasicApiCalls) { |
for (auto rate : {8000, 16000, 32000, 48000}) { |
SCOPED_TRACE(ProduceDebugText(rate)); |
std::unique_ptr<EchoRemover> remover(EchoRemover::Create(rate)); |
+ std::unique_ptr<RenderDelayBuffer> render_buffer( |
+ RenderDelayBuffer::Create(NumBandsForRate(rate))); |
std::vector<std::vector<float>> render(NumBandsForRate(rate), |
std::vector<float>(kBlockSize, 0.f)); |
@@ -55,9 +59,11 @@ TEST(EchoRemover, BasicApiCalls) { |
rtc::Optional<size_t> echo_path_delay_samples = |
(k % 6 == 0 ? rtc::Optional<size_t>(k * 10) |
: rtc::Optional<size_t>()); |
- remover->ProcessBlock(echo_path_delay_samples, echo_path_variability, |
- k % 2 == 0 ? true : false, render, &capture); |
- remover->UpdateEchoLeakageStatus(k % 7 == 0 ? true : false); |
+ render_buffer->Insert(&render); |
+ render_buffer->UpdateBuffers(); |
+ remover->ProcessCapture(echo_path_delay_samples, echo_path_variability, |
+ k % 2 == 0 ? true : false, |
+ render_buffer->GetRenderBuffer(), &capture); |
} |
} |
} |
@@ -71,61 +77,21 @@ TEST(EchoRemover, DISABLED_WrongSampleRate) { |
EXPECT_DEATH(std::unique_ptr<EchoRemover>(EchoRemover::Create(8001)), ""); |
} |
-// Verifies the check for the render block size. |
-TEST(EchoRemover, WrongRenderBlockSize) { |
- for (auto rate : {8000, 16000, 32000, 48000}) { |
- SCOPED_TRACE(ProduceDebugText(rate)); |
- std::unique_ptr<EchoRemover> remover(EchoRemover::Create(rate)); |
- |
- std::vector<std::vector<float>> render( |
- NumBandsForRate(rate), std::vector<float>(kBlockSize - 1, 0.f)); |
- std::vector<std::vector<float>> capture( |
- NumBandsForRate(rate), std::vector<float>(kBlockSize, 0.f)); |
- EchoPathVariability echo_path_variability(false, false); |
- rtc::Optional<size_t> echo_path_delay_samples; |
- EXPECT_DEATH( |
- remover->ProcessBlock(echo_path_delay_samples, echo_path_variability, |
- false, render, &capture), |
- ""); |
- } |
-} |
- |
// Verifies the check for the capture block size. |
TEST(EchoRemover, WrongCaptureBlockSize) { |
for (auto rate : {8000, 16000, 32000, 48000}) { |
SCOPED_TRACE(ProduceDebugText(rate)); |
std::unique_ptr<EchoRemover> remover(EchoRemover::Create(rate)); |
- |
- std::vector<std::vector<float>> render(NumBandsForRate(rate), |
- std::vector<float>(kBlockSize, 0.f)); |
+ std::unique_ptr<RenderDelayBuffer> render_buffer( |
+ RenderDelayBuffer::Create(NumBandsForRate(rate))); |
std::vector<std::vector<float>> capture( |
NumBandsForRate(rate), std::vector<float>(kBlockSize - 1, 0.f)); |
EchoPathVariability echo_path_variability(false, false); |
rtc::Optional<size_t> echo_path_delay_samples; |
- EXPECT_DEATH( |
- remover->ProcessBlock(echo_path_delay_samples, echo_path_variability, |
- false, render, &capture), |
- ""); |
- } |
-} |
- |
-// Verifies the check for the number of render bands. |
-TEST(EchoRemover, WrongRenderNumBands) { |
- for (auto rate : {16000, 32000, 48000}) { |
- SCOPED_TRACE(ProduceDebugText(rate)); |
- std::unique_ptr<EchoRemover> remover(EchoRemover::Create(rate)); |
- |
- std::vector<std::vector<float>> render( |
- NumBandsForRate(rate == 48000 ? 16000 : rate + 16000), |
- std::vector<float>(kBlockSize, 0.f)); |
- std::vector<std::vector<float>> capture( |
- NumBandsForRate(rate), std::vector<float>(kBlockSize, 0.f)); |
- EchoPathVariability echo_path_variability(false, false); |
- rtc::Optional<size_t> echo_path_delay_samples; |
- EXPECT_DEATH( |
- remover->ProcessBlock(echo_path_delay_samples, echo_path_variability, |
- false, render, &capture), |
- ""); |
+ EXPECT_DEATH(remover->ProcessCapture( |
+ echo_path_delay_samples, echo_path_variability, false, |
+ render_buffer->GetRenderBuffer(), &capture), |
+ ""); |
} |
} |
@@ -136,32 +102,30 @@ TEST(EchoRemover, DISABLED_WrongCaptureNumBands) { |
for (auto rate : {16000, 32000, 48000}) { |
SCOPED_TRACE(ProduceDebugText(rate)); |
std::unique_ptr<EchoRemover> remover(EchoRemover::Create(rate)); |
- |
- std::vector<std::vector<float>> render(NumBandsForRate(rate), |
- std::vector<float>(kBlockSize, 0.f)); |
+ std::unique_ptr<RenderDelayBuffer> render_buffer( |
+ RenderDelayBuffer::Create(NumBandsForRate(rate))); |
std::vector<std::vector<float>> capture( |
NumBandsForRate(rate == 48000 ? 16000 : rate + 16000), |
std::vector<float>(kBlockSize, 0.f)); |
EchoPathVariability echo_path_variability(false, false); |
rtc::Optional<size_t> echo_path_delay_samples; |
- EXPECT_DEATH( |
- remover->ProcessBlock(echo_path_delay_samples, echo_path_variability, |
- false, render, &capture), |
- ""); |
+ EXPECT_DEATH(remover->ProcessCapture( |
+ echo_path_delay_samples, echo_path_variability, false, |
+ render_buffer->GetRenderBuffer(), &capture), |
+ ""); |
} |
} |
// Verifies the check for non-null capture block. |
TEST(EchoRemover, NullCapture) { |
std::unique_ptr<EchoRemover> remover(EchoRemover::Create(8000)); |
- |
- std::vector<std::vector<float>> render(NumBandsForRate(8000), |
- std::vector<float>(kBlockSize, 0.f)); |
+ std::unique_ptr<RenderDelayBuffer> render_buffer( |
+ RenderDelayBuffer::Create(3)); |
EchoPathVariability echo_path_variability(false, false); |
rtc::Optional<size_t> echo_path_delay_samples; |
EXPECT_DEATH( |
- remover->ProcessBlock(echo_path_delay_samples, echo_path_variability, |
- false, render, nullptr), |
+ remover->ProcessCapture(echo_path_delay_samples, echo_path_variability, |
+ false, render_buffer->GetRenderBuffer(), nullptr), |
""); |
} |
@@ -181,6 +145,8 @@ TEST(EchoRemover, BasicEchoRemoval) { |
for (size_t delay_samples : {0, 64, 150, 200, 301}) { |
SCOPED_TRACE(ProduceDebugText(rate, delay_samples)); |
std::unique_ptr<EchoRemover> remover(EchoRemover::Create(rate)); |
+ std::unique_ptr<RenderDelayBuffer> render_buffer( |
+ RenderDelayBuffer::Create(NumBandsForRate(rate))); |
std::vector<std::unique_ptr<DelayBuffer<float>>> delay_buffers(x.size()); |
for (size_t j = 0; j < x.size(); ++j) { |
delay_buffers[j].reset(new DelayBuffer<float>(delay_samples)); |
@@ -207,8 +173,12 @@ TEST(EchoRemover, BasicEchoRemoval) { |
} |
} |
- remover->ProcessBlock(rtc::Optional<size_t>(delay_samples), |
- echo_path_variability, false, x, &y); |
+ render_buffer->Insert(&x); |
+ render_buffer->UpdateBuffers(); |
+ |
+ remover->ProcessCapture(rtc::Optional<size_t>(delay_samples), |
+ echo_path_variability, false, |
+ render_buffer->GetRenderBuffer(), &y); |
if (k > kNumBlocksToProcess / 2) { |
for (size_t j = 0; j < x.size(); ++j) { |