| 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) {
|
|
|