diff --git a/modules/audio_processing/aec3/block_processor.cc b/modules/audio_processing/aec3/block_processor.cc index b08be68c22..2674827dde 100644 --- a/modules/audio_processing/aec3/block_processor.cc +++ b/modules/audio_processing/aec3/block_processor.cc @@ -71,7 +71,6 @@ class BlockProcessorImpl final : public BlockProcessor { RenderDelayBuffer::BufferingEvent render_event_; size_t capture_call_counter_ = 0; absl::optional estimated_delay_; - absl::optional echo_remover_delay_; }; int BlockProcessorImpl::instance_count_ = 0; @@ -150,11 +149,11 @@ void BlockProcessorImpl::ProcessCapture( &(*capture_block)[0][0], LowestBandRate(sample_rate_hz_), 1); - // Compute and and apply the render delay required to achieve proper signal + // Compute and apply the render delay required to achieve proper signal // alignment. - estimated_delay_ = delay_controller_->GetDelay( - render_buffer_->GetDownsampledRenderBuffer(), render_buffer_->Delay(), - echo_remover_delay_, (*capture_block)[0]); + estimated_delay_ = + delay_controller_->GetDelay(render_buffer_->GetDownsampledRenderBuffer(), + render_buffer_->Delay(), (*capture_block)[0]); if (estimated_delay_) { bool delay_change = render_buffer_->SetDelay(estimated_delay_->delay); @@ -173,10 +172,6 @@ void BlockProcessorImpl::ProcessCapture( echo_path_variability, capture_signal_saturation, estimated_delay_, render_buffer_->GetRenderBuffer(), capture_block); - // Check to see if a refined delay estimate has been obtained from the echo - // remover. - echo_remover_delay_ = echo_remover_->Delay(); - // Update the metrics. metrics_.UpdateCapture(false); } diff --git a/modules/audio_processing/aec3/block_processor_unittest.cc b/modules/audio_processing/aec3/block_processor_unittest.cc index 71457868b2..439419f5ed 100644 --- a/modules/audio_processing/aec3/block_processor_unittest.cc +++ b/modules/audio_processing/aec3/block_processor_unittest.cc @@ -166,7 +166,7 @@ TEST(BlockProcessor, DISABLED_SubmoduleIntegration) { EXPECT_CALL(*render_delay_buffer_mock, Delay()) .Times(kNumBlocks) .WillRepeatedly(Return(0)); - EXPECT_CALL(*render_delay_controller_mock, GetDelay(_, _, _, _)) + EXPECT_CALL(*render_delay_controller_mock, GetDelay(_, _, _)) .Times(kNumBlocks); EXPECT_CALL(*echo_remover_mock, ProcessCapture(_, _, _, _, _)) .Times(kNumBlocks); diff --git a/modules/audio_processing/aec3/echo_remover.cc b/modules/audio_processing/aec3/echo_remover.cc index 534bab5b1c..1ae9a8b4a6 100644 --- a/modules/audio_processing/aec3/echo_remover.cc +++ b/modules/audio_processing/aec3/echo_remover.cc @@ -97,12 +97,6 @@ class EchoRemoverImpl final : public EchoRemover { RenderBuffer* render_buffer, std::vector>* capture) override; - // Returns the internal delay estimate in blocks. - absl::optional Delay() const override { - // TODO(peah): Remove or reactivate this functionality. - return absl::nullopt; - } - // Updates the status on whether echo leakage is detected in the output of the // echo remover. void UpdateEchoLeakageStatus(bool leakage_detected) override { diff --git a/modules/audio_processing/aec3/echo_remover.h b/modules/audio_processing/aec3/echo_remover.h index cc8dae9c17..357f67d51e 100644 --- a/modules/audio_processing/aec3/echo_remover.h +++ b/modules/audio_processing/aec3/echo_remover.h @@ -42,9 +42,6 @@ class EchoRemover { RenderBuffer* render_buffer, std::vector>* capture) = 0; - // Returns the internal delay estimate in blocks. - virtual absl::optional Delay() const = 0; - // Updates the status on whether echo leakage is detected in the output of the // echo remover. virtual void UpdateEchoLeakageStatus(bool leakage_detected) = 0; diff --git a/modules/audio_processing/aec3/mock/mock_render_delay_controller.h b/modules/audio_processing/aec3/mock/mock_render_delay_controller.h index 5f652e192f..097c8ccbbb 100644 --- a/modules/audio_processing/aec3/mock/mock_render_delay_controller.h +++ b/modules/audio_processing/aec3/mock/mock_render_delay_controller.h @@ -27,11 +27,10 @@ class MockRenderDelayController : public RenderDelayController { MOCK_METHOD1(Reset, void(bool reset_delay_statistics)); MOCK_METHOD0(LogRenderCall, void()); - MOCK_METHOD4(GetDelay, + MOCK_METHOD3(GetDelay, absl::optional( const DownsampledRenderBuffer& render_buffer, size_t render_delay_buffer_delay, - const absl::optional& echo_remover_delay, rtc::ArrayView capture)); MOCK_CONST_METHOD0(HasClockdrift, bool()); }; diff --git a/modules/audio_processing/aec3/render_delay_controller.cc b/modules/audio_processing/aec3/render_delay_controller.cc index 4f9fa8e56d..e8423cb8ac 100644 --- a/modules/audio_processing/aec3/render_delay_controller.cc +++ b/modules/audio_processing/aec3/render_delay_controller.cc @@ -39,7 +39,6 @@ class RenderDelayControllerImpl final : public RenderDelayController { absl::optional GetDelay( const DownsampledRenderBuffer& render_buffer, size_t render_delay_buffer_delay, - const absl::optional& echo_remover_delay, rtc::ArrayView capture) override; bool HasClockdrift() const override; @@ -117,21 +116,12 @@ void RenderDelayControllerImpl::LogRenderCall() {} absl::optional RenderDelayControllerImpl::GetDelay( const DownsampledRenderBuffer& render_buffer, size_t render_delay_buffer_delay, - const absl::optional& echo_remover_delay, rtc::ArrayView capture) { RTC_DCHECK_EQ(kBlockSize, capture.size()); ++capture_call_counter_; auto delay_samples = delay_estimator_.EstimateDelay(render_buffer, capture); - // Overrule the delay estimator delay if the echo remover reports a delay. - if (echo_remover_delay) { - int total_echo_remover_delay_samples = - (render_delay_buffer_delay + *echo_remover_delay) * kBlockSize; - delay_samples = DelayEstimate(DelayEstimate::Quality::kRefined, - total_echo_remover_delay_samples); - } - if (delay_samples) { if (!delay_samples_ || delay_samples->delay != delay_samples_->delay) { delay_change_counter_ = 0; diff --git a/modules/audio_processing/aec3/render_delay_controller.h b/modules/audio_processing/aec3/render_delay_controller.h index fb865298fb..741d73475a 100644 --- a/modules/audio_processing/aec3/render_delay_controller.h +++ b/modules/audio_processing/aec3/render_delay_controller.h @@ -39,7 +39,6 @@ class RenderDelayController { virtual absl::optional GetDelay( const DownsampledRenderBuffer& render_buffer, size_t render_delay_buffer_delay, - const absl::optional& echo_remover_delay, rtc::ArrayView capture) = 0; // Returns true if clockdrift has been detected. diff --git a/modules/audio_processing/aec3/render_delay_controller_unittest.cc b/modules/audio_processing/aec3/render_delay_controller_unittest.cc index c8405d8abc..96c62179a2 100644 --- a/modules/audio_processing/aec3/render_delay_controller_unittest.cc +++ b/modules/audio_processing/aec3/render_delay_controller_unittest.cc @@ -48,7 +48,6 @@ constexpr size_t kDownSamplingFactors[] = {2, 4, 8}; TEST(RenderDelayController, NoRenderSignal) { std::vector block(kBlockSize, 0.f); EchoCanceller3Config config; - absl::optional echo_remover_delay_; for (size_t num_matched_filters = 4; num_matched_filters == 10; num_matched_filters++) { for (auto down_sampling_factor : kDownSamplingFactors) { @@ -63,7 +62,7 @@ TEST(RenderDelayController, NoRenderSignal) { for (size_t k = 0; k < 100; ++k) { auto delay = delay_controller->GetDelay( delay_buffer->GetDownsampledRenderBuffer(), delay_buffer->Delay(), - echo_remover_delay_, block); + block); EXPECT_FALSE(delay->delay); } } @@ -75,7 +74,6 @@ TEST(RenderDelayController, NoRenderSignal) { TEST(RenderDelayController, BasicApiCalls) { std::vector capture_block(kBlockSize, 0.f); absl::optional delay_blocks; - absl::optional echo_remover_delay; for (size_t num_matched_filters = 4; num_matched_filters == 10; num_matched_filters++) { for (auto down_sampling_factor : kDownSamplingFactors) { @@ -95,7 +93,7 @@ TEST(RenderDelayController, BasicApiCalls) { delay_blocks = delay_controller->GetDelay( render_delay_buffer->GetDownsampledRenderBuffer(), - render_delay_buffer->Delay(), echo_remover_delay, capture_block); + render_delay_buffer->Delay(), capture_block); } EXPECT_TRUE(delay_blocks); EXPECT_FALSE(delay_blocks->delay); @@ -108,7 +106,6 @@ TEST(RenderDelayController, BasicApiCalls) { // simple timeshifts between the signals. TEST(RenderDelayController, Alignment) { Random random_generator(42U); - absl::optional echo_remover_delay; std::vector capture_block(kBlockSize, 0.f); for (size_t num_matched_filters = 4; num_matched_filters == 10; num_matched_filters++) { @@ -136,8 +133,7 @@ TEST(RenderDelayController, Alignment) { render_delay_buffer->PrepareCaptureProcessing(); delay_blocks = delay_controller->GetDelay( render_delay_buffer->GetDownsampledRenderBuffer(), - render_delay_buffer->Delay(), echo_remover_delay, - capture_block); + render_delay_buffer->Delay(), capture_block); } ASSERT_TRUE(!!delay_blocks); @@ -157,7 +153,6 @@ TEST(RenderDelayController, Alignment) { // delays. TEST(RenderDelayController, NonCausalAlignment) { Random random_generator(42U); - absl::optional echo_remover_delay; for (size_t num_matched_filters = 4; num_matched_filters == 10; num_matched_filters++) { for (auto down_sampling_factor : kDownSamplingFactors) { @@ -186,8 +181,7 @@ TEST(RenderDelayController, NonCausalAlignment) { render_delay_buffer->PrepareCaptureProcessing(); delay_blocks = delay_controller->GetDelay( render_delay_buffer->GetDownsampledRenderBuffer(), - render_delay_buffer->Delay(), echo_remover_delay, - capture_block[0]); + render_delay_buffer->Delay(), capture_block[0]); } ASSERT_FALSE(delay_blocks); @@ -201,7 +195,6 @@ TEST(RenderDelayController, NonCausalAlignment) { // simple timeshifts between the signals when there is jitter in the API calls. TEST(RenderDelayController, AlignmentWithJitter) { Random random_generator(42U); - absl::optional echo_remover_delay; std::vector capture_block(kBlockSize, 0.f); for (size_t num_matched_filters = 4; num_matched_filters == 10; num_matched_filters++) { @@ -236,8 +229,7 @@ TEST(RenderDelayController, AlignmentWithJitter) { render_delay_buffer->PrepareCaptureProcessing(); delay_blocks = delay_controller->GetDelay( render_delay_buffer->GetDownsampledRenderBuffer(), - render_delay_buffer->Delay(), echo_remover_delay, - capture_block_buffer[k]); + render_delay_buffer->Delay(), capture_block_buffer[k]); } } @@ -285,7 +277,6 @@ TEST(RenderDelayController, InitialHeadroom) { TEST(RenderDelayController, WrongCaptureSize) { std::vector block(kBlockSize - 1, 0.f); EchoCanceller3Config config; - absl::optional echo_remover_delay; for (auto rate : {8000, 16000, 32000, 48000}) { SCOPED_TRACE(ProduceDebugText(rate)); std::unique_ptr render_delay_buffer( @@ -294,7 +285,7 @@ TEST(RenderDelayController, WrongCaptureSize) { std::unique_ptr( RenderDelayController::Create(EchoCanceller3Config(), rate)) ->GetDelay(render_delay_buffer->GetDownsampledRenderBuffer(), - render_delay_buffer->Delay(), echo_remover_delay, block), + render_delay_buffer->Delay(), block), ""); } }