AEC3: Enable usage of external delay estimator

This change makes it possible to disable AEC3's render delay
controller and delay estimator, and instead rely on an external
delay estimator. The delay is communicated via SetAudioBufferDelay.

When the feature is enabled, no echo removal will be performed
until the first delay is provided.

The delay is

Bug: b/130016532
Change-Id: I16643109d78d770ff1d2713cf247b0b9cce1bc1c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131327
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27467}
This commit is contained in:
Gustaf Ullberg
2019-04-05 16:23:50 +02:00
committed by Commit Bot
parent a553c72659
commit 8f32b6c18c
9 changed files with 86 additions and 40 deletions

View File

@ -48,7 +48,10 @@ class RenderDelayBuffer {
// Sets the buffer delay and returns a bool indicating whether the delay
// changed.
virtual bool SetDelay(size_t delay) = 0;
virtual bool AlignFromDelay(size_t delay) = 0;
// Sets the buffer delay from the most recently reported external delay.
virtual void AlignFromExternalDelay() = 0;
// Gets the buffer delay.
virtual size_t Delay() const = 0;
@ -67,6 +70,10 @@ class RenderDelayBuffer {
// Provides an optional external estimate of the audio buffer delay.
virtual void SetAudioBufferDelay(size_t delay_ms) = 0;
// Returns whether an external delay estimate has been reported via
// SetAudioBufferDelay.
virtual bool HasReceivedBufferDelay() = 0;
};
} // namespace webrtc