| Index: webrtc/modules/audio_processing/aec/echo_cancellation.c
|
| diff --git a/webrtc/modules/audio_processing/aec/echo_cancellation.c b/webrtc/modules/audio_processing/aec/echo_cancellation.c
|
| index a39fd2c9d5a53e7c6bc1d0d4368823d13044cd4d..5dfe7ad4d544f9e77b74d88eb8a5460c2930d29a 100644
|
| --- a/webrtc/modules/audio_processing/aec/echo_cancellation.c
|
| +++ b/webrtc/modules/audio_processing/aec/echo_cancellation.c
|
| @@ -235,7 +235,10 @@ int32_t WebRtcAec_Init(void* aecInst, int32_t sampFreq, int32_t scSampFreq) {
|
| aecpc->checkBuffSize = 1;
|
| aecpc->firstVal = 0;
|
|
|
| - aecpc->startup_phase = WebRtcAec_reported_delay_enabled(aecpc->aec);
|
| + // We skip the startup_phase completely (setting to 0) if DA-AEC is enabled,
|
| + // but not extended_filter mode.
|
| + aecpc->startup_phase = WebRtcAec_extended_filter_enabled(aecpc->aec) ||
|
| + WebRtcAec_reported_delay_enabled(aecpc->aec);
|
| aecpc->bufSizeStart = 0;
|
| aecpc->checkBufSizeCtr = 0;
|
| aecpc->msInSndCardBuf = 0;
|
| @@ -718,9 +721,7 @@ static int ProcessNormal(Aec* aecpc,
|
| }
|
| } else {
|
| // AEC is enabled.
|
| - if (WebRtcAec_reported_delay_enabled(aecpc->aec)) {
|
| - EstBufDelayNormal(aecpc);
|
| - }
|
| + EstBufDelayNormal(aecpc);
|
|
|
| // Call the AEC.
|
| // TODO(bjornv): Re-structure such that we don't have to pass
|
| @@ -782,12 +783,13 @@ static void ProcessExtended(Aec* self,
|
| // measurement.
|
| int startup_size_ms =
|
| reported_delay_ms < kFixedDelayMs ? kFixedDelayMs : reported_delay_ms;
|
| +#if defined(WEBRTC_ANDROID)
|
| int target_delay = startup_size_ms * self->rate_factor * 8;
|
| -#if !defined(WEBRTC_ANDROID)
|
| +#else
|
| // To avoid putting the AEC in a non-causal state we're being slightly
|
| // conservative and scale by 2. On Android we use a fixed delay and
|
| // therefore there is no need to scale the target_delay.
|
| - target_delay /= 2;
|
| + int target_delay = startup_size_ms * self->rate_factor * 8 / 2;
|
| #endif
|
| int overhead_elements =
|
| (WebRtcAec_system_delay(self->aec) - target_delay) / PART_LEN;
|
| @@ -795,9 +797,7 @@ static void ProcessExtended(Aec* self,
|
| self->startup_phase = 0;
|
| }
|
|
|
| - if (WebRtcAec_reported_delay_enabled(self->aec)) {
|
| - EstBufDelayExtended(self);
|
| - }
|
| + EstBufDelayExtended(self);
|
|
|
| {
|
| // |delay_diff_offset| gives us the option to manually rewind the delay on
|
|
|