summaryrefslogtreecommitdiff
path: root/chromium/third_party/webrtc/modules/audio_processing/aec/echo_cancellation.c
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/webrtc/modules/audio_processing/aec/echo_cancellation.c')
-rw-r--r--chromium/third_party/webrtc/modules/audio_processing/aec/echo_cancellation.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/chromium/third_party/webrtc/modules/audio_processing/aec/echo_cancellation.c b/chromium/third_party/webrtc/modules/audio_processing/aec/echo_cancellation.c
index 54ac24dcf43..733dee0db9a 100644
--- a/chromium/third_party/webrtc/modules/audio_processing/aec/echo_cancellation.c
+++ b/chromium/third_party/webrtc/modules/audio_processing/aec/echo_cancellation.c
@@ -242,7 +242,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_delay_correction_enabled(aecpc->aec) ||
+ WebRtcAec_reported_delay_enabled(aecpc->aec);
aecpc->bufSizeStart = 0;
aecpc->checkBufSizeCtr = 0;
aecpc->msInSndCardBuf = 0;
@@ -725,9 +728,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
@@ -789,12 +790,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;
@@ -802,9 +804,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