diff --git a/api/audio/echo_control.h b/api/audio/echo_control.h index c8f73b8bac..9872889204 100644 --- a/api/audio/echo_control.h +++ b/api/audio/echo_control.h @@ -39,7 +39,11 @@ class EchoControl { virtual Metrics GetMetrics() const = 0; // Provides an optional external estimate of the audio buffer delay. - virtual void SetAudioBufferDelay(size_t delay_ms) = 0; + virtual void SetAudioBufferDelay(size_t delay_ms) {} + virtual void SetAudioBufferDelay(int delay_ms) { + // Default to old implementation. + SetAudioBufferDelay(static_cast(delay_ms)); + } // Returns wheter the signal is altered. virtual bool ActiveProcessing() const = 0; diff --git a/modules/audio_processing/aec3/block_processor.cc b/modules/audio_processing/aec3/block_processor.cc index fa9c7b3fb3..89425707a4 100644 --- a/modules/audio_processing/aec3/block_processor.cc +++ b/modules/audio_processing/aec3/block_processor.cc @@ -61,7 +61,7 @@ class BlockProcessorImpl final : public BlockProcessor { void GetMetrics(EchoControl::Metrics* metrics) const override; - void SetAudioBufferDelay(size_t delay_ms) override; + void SetAudioBufferDelay(int delay_ms) override; private: static int instance_count_; @@ -230,7 +230,7 @@ void BlockProcessorImpl::GetMetrics(EchoControl::Metrics* metrics) const { metrics->delay_ms = delay ? static_cast(*delay) * block_size_ms : 0; } -void BlockProcessorImpl::SetAudioBufferDelay(size_t delay_ms) { +void BlockProcessorImpl::SetAudioBufferDelay(int delay_ms) { render_buffer_->SetAudioBufferDelay(delay_ms); } diff --git a/modules/audio_processing/aec3/block_processor.h b/modules/audio_processing/aec3/block_processor.h index 3ae5a75a8a..755444aad4 100644 --- a/modules/audio_processing/aec3/block_processor.h +++ b/modules/audio_processing/aec3/block_processor.h @@ -53,7 +53,7 @@ class BlockProcessor { virtual void GetMetrics(EchoControl::Metrics* metrics) const = 0; // Provides an optional external estimate of the audio buffer delay. - virtual void SetAudioBufferDelay(size_t delay_ms) = 0; + virtual void SetAudioBufferDelay(int delay_ms) = 0; // Processes a block of capture data. virtual void ProcessCapture( diff --git a/modules/audio_processing/aec3/echo_canceller3.cc b/modules/audio_processing/aec3/echo_canceller3.cc index a7a76d35d9..2b50e613f8 100644 --- a/modules/audio_processing/aec3/echo_canceller3.cc +++ b/modules/audio_processing/aec3/echo_canceller3.cc @@ -374,7 +374,7 @@ EchoControl::Metrics EchoCanceller3::GetMetrics() const { return metrics; } -void EchoCanceller3::SetAudioBufferDelay(size_t delay_ms) { +void EchoCanceller3::SetAudioBufferDelay(int delay_ms) { RTC_DCHECK_RUNS_SERIALIZED(&capture_race_checker_); block_processor_->SetAudioBufferDelay(delay_ms); } diff --git a/modules/audio_processing/aec3/echo_canceller3.h b/modules/audio_processing/aec3/echo_canceller3.h index 7a7df07171..ce36cc1bfc 100644 --- a/modules/audio_processing/aec3/echo_canceller3.h +++ b/modules/audio_processing/aec3/echo_canceller3.h @@ -109,7 +109,7 @@ class EchoCanceller3 : public EchoControl { // Collect current metrics from the echo canceller. Metrics GetMetrics() const override; // Provides an optional external estimate of the audio buffer delay. - void SetAudioBufferDelay(size_t delay_ms) override; + void SetAudioBufferDelay(int delay_ms) override; bool ActiveProcessing() const override; diff --git a/modules/audio_processing/aec3/echo_canceller3_unittest.cc b/modules/audio_processing/aec3/echo_canceller3_unittest.cc index c7a71c34fc..e7b9ddb957 100644 --- a/modules/audio_processing/aec3/echo_canceller3_unittest.cc +++ b/modules/audio_processing/aec3/echo_canceller3_unittest.cc @@ -121,7 +121,7 @@ class CaptureTransportVerificationProcessor : public BlockProcessor { void GetMetrics(EchoControl::Metrics* metrics) const override {} - void SetAudioBufferDelay(size_t delay_ms) override {} + void SetAudioBufferDelay(int delay_ms) override {} private: RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(CaptureTransportVerificationProcessor); @@ -153,7 +153,7 @@ class RenderTransportVerificationProcessor : public BlockProcessor { void GetMetrics(EchoControl::Metrics* metrics) const override {} - void SetAudioBufferDelay(size_t delay_ms) override {} + void SetAudioBufferDelay(int delay_ms) override {} private: std::deque>>> diff --git a/modules/audio_processing/aec3/mock/mock_block_processor.h b/modules/audio_processing/aec3/mock/mock_block_processor.h index cb93714513..634d26e691 100644 --- a/modules/audio_processing/aec3/mock/mock_block_processor.h +++ b/modules/audio_processing/aec3/mock/mock_block_processor.h @@ -33,7 +33,7 @@ class MockBlockProcessor : public BlockProcessor { void(const std::vector>>& block)); MOCK_METHOD1(UpdateEchoLeakageStatus, void(bool leakage_detected)); MOCK_CONST_METHOD1(GetMetrics, void(EchoControl::Metrics* metrics)); - MOCK_METHOD1(SetAudioBufferDelay, void(size_t delay_ms)); + MOCK_METHOD1(SetAudioBufferDelay, void(int delay_ms)); }; } // namespace test diff --git a/modules/audio_processing/aec3/mock/mock_render_delay_buffer.h b/modules/audio_processing/aec3/mock/mock_render_delay_buffer.h index 8882001f12..f83c670632 100644 --- a/modules/audio_processing/aec3/mock/mock_render_delay_buffer.h +++ b/modules/audio_processing/aec3/mock/mock_render_delay_buffer.h @@ -40,7 +40,7 @@ class MockRenderDelayBuffer : public RenderDelayBuffer { MOCK_CONST_METHOD0(GetDownsampledRenderBuffer, const DownsampledRenderBuffer&()); MOCK_CONST_METHOD1(CausalDelay, bool(size_t delay)); - MOCK_METHOD1(SetAudioBufferDelay, void(size_t delay_ms)); + MOCK_METHOD1(SetAudioBufferDelay, void(int delay_ms)); MOCK_METHOD0(HasReceivedBufferDelay, bool()); private: diff --git a/modules/audio_processing/aec3/render_delay_buffer.cc b/modules/audio_processing/aec3/render_delay_buffer.cc index 14a6bd5cdb..fb32035e48 100644 --- a/modules/audio_processing/aec3/render_delay_buffer.cc +++ b/modules/audio_processing/aec3/render_delay_buffer.cc @@ -62,7 +62,7 @@ class RenderDelayBufferImpl final : public RenderDelayBuffer { } int BufferLatency() const; - void SetAudioBufferDelay(size_t delay_ms) override; + void SetAudioBufferDelay(int delay_ms) override; bool HasReceivedBufferDelay() override; private: @@ -90,7 +90,7 @@ class RenderDelayBufferImpl final : public RenderDelayBuffer { int64_t render_call_counter_ = 0; bool render_activity_ = false; size_t render_activity_counter_ = 0; - absl::optional external_audio_buffer_delay_; + absl::optional external_audio_buffer_delay_; bool external_audio_buffer_delay_verified_after_reset_ = false; size_t min_latency_blocks_ = 0; size_t excess_render_detection_counter_ = 0; @@ -165,7 +165,7 @@ void RenderDelayBufferImpl::Reset() { // Check for any external audio buffer delay and whether it is feasible. if (external_audio_buffer_delay_) { - const size_t headroom = 2; + const int headroom = 2; size_t audio_buffer_delay_to_set; // Minimum delay is 1 (like the low-rate render buffer). if (*external_audio_buffer_delay_ <= headroom) { @@ -318,7 +318,7 @@ bool RenderDelayBufferImpl::AlignFromDelay(size_t delay) { return true; } -void RenderDelayBufferImpl::SetAudioBufferDelay(size_t delay_ms) { +void RenderDelayBufferImpl::SetAudioBufferDelay(int delay_ms) { if (!external_audio_buffer_delay_) { RTC_LOG_V(delay_log_level_) << "Receiving a first externally reported audio buffer delay of " @@ -326,7 +326,7 @@ void RenderDelayBufferImpl::SetAudioBufferDelay(size_t delay_ms) { } // Convert delay from milliseconds to blocks (rounded down). - external_audio_buffer_delay_ = delay_ms >> 2; + external_audio_buffer_delay_ = delay_ms / 4; } bool RenderDelayBufferImpl::HasReceivedBufferDelay() { diff --git a/modules/audio_processing/aec3/render_delay_buffer.h b/modules/audio_processing/aec3/render_delay_buffer.h index e53f6d273d..0758e9dad9 100644 --- a/modules/audio_processing/aec3/render_delay_buffer.h +++ b/modules/audio_processing/aec3/render_delay_buffer.h @@ -71,7 +71,7 @@ class RenderDelayBuffer { static int DelayEstimatorOffset(const EchoCanceller3Config& config); // Provides an optional external estimate of the audio buffer delay. - virtual void SetAudioBufferDelay(size_t delay_ms) = 0; + virtual void SetAudioBufferDelay(int delay_ms) = 0; // Returns whether an external delay estimate has been reported via // SetAudioBufferDelay. diff --git a/modules/audio_processing/include/mock_audio_processing.h b/modules/audio_processing/include/mock_audio_processing.h index ba57d78af9..6b123923da 100644 --- a/modules/audio_processing/include/mock_audio_processing.h +++ b/modules/audio_processing/include/mock_audio_processing.h @@ -48,7 +48,7 @@ class MockEchoControl : public EchoControl { MOCK_METHOD2(ProcessCapture, void(AudioBuffer* capture, bool echo_path_change)); MOCK_CONST_METHOD0(GetMetrics, Metrics()); - MOCK_METHOD1(SetAudioBufferDelay, void(size_t delay_ms)); + MOCK_METHOD1(SetAudioBufferDelay, void(int delay_ms)); MOCK_CONST_METHOD0(ActiveProcessing, bool()); }; diff --git a/modules/audio_processing/test/echo_control_mock.h b/modules/audio_processing/test/echo_control_mock.h index 8479a7cd72..c2082c2b6b 100644 --- a/modules/audio_processing/test/echo_control_mock.h +++ b/modules/audio_processing/test/echo_control_mock.h @@ -25,7 +25,7 @@ class MockEchoControl : public EchoControl { MOCK_METHOD2(ProcessCapture, void(AudioBuffer* capture, bool echo_path_change)); MOCK_CONST_METHOD0(GetMetrics, EchoControl::Metrics()); - MOCK_METHOD1(SetAudioBufferDelay, void(size_t delay_ms)); + MOCK_METHOD1(SetAudioBufferDelay, void(int delay_ms)); MOCK_CONST_METHOD0(ActiveProcessing, bool()); };