summaryrefslogtreecommitdiffstats
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.c58
1 files changed, 31 insertions, 27 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 bbdd5f628b2..ba3b9243e19 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
@@ -104,18 +104,18 @@ int webrtc_aec_instance_count = 0;
static void EstBufDelayNormal(aecpc_t* aecInst);
static void EstBufDelayExtended(aecpc_t* aecInst);
static int ProcessNormal(aecpc_t* self,
- const int16_t* near,
- const int16_t* near_high,
- int16_t* out,
- int16_t* out_high,
+ const float* near,
+ const float* near_high,
+ float* out,
+ float* out_high,
int16_t num_samples,
int16_t reported_delay_ms,
int32_t skew);
static void ProcessExtended(aecpc_t* self,
- const int16_t* near,
- const int16_t* near_high,
- int16_t* out,
- int16_t* out_high,
+ const float* near,
+ const float* near_high,
+ float* out,
+ float* out_high,
int16_t num_samples,
int16_t reported_delay_ms,
int32_t skew);
@@ -254,7 +254,7 @@ int32_t WebRtcAec_Init(void* aecInst, int32_t sampFreq, int32_t scSampFreq) {
aecpc->checkBuffSize = 1;
aecpc->firstVal = 0;
- aecpc->startup_phase = 1;
+ aecpc->startup_phase = WebRtcAec_reported_delay_enabled(aecpc->aec);
aecpc->bufSizeStart = 0;
aecpc->checkBufSizeCtr = 0;
aecpc->msInSndCardBuf = 0;
@@ -372,10 +372,10 @@ int32_t WebRtcAec_BufferFarend(void* aecInst,
}
int32_t WebRtcAec_Process(void* aecInst,
- const int16_t* nearend,
- const int16_t* nearendH,
- int16_t* out,
- int16_t* outH,
+ const float* nearend,
+ const float* nearendH,
+ float* out,
+ float* outH,
int16_t nrOfSamples,
int16_t msInSndCardBuf,
int32_t skew) {
@@ -632,10 +632,10 @@ AecCore* WebRtcAec_aec_core(void* handle) {
}
static int ProcessNormal(aecpc_t* aecpc,
- const int16_t* nearend,
- const int16_t* nearendH,
- int16_t* out,
- int16_t* outH,
+ const float* nearend,
+ const float* nearendH,
+ float* out,
+ float* outH,
int16_t nrOfSamples,
int16_t msInSndCardBuf,
int32_t skew) {
@@ -689,10 +689,10 @@ static int ProcessNormal(aecpc_t* aecpc,
if (aecpc->startup_phase) {
// Only needed if they don't already point to the same place.
if (nearend != out) {
- memcpy(out, nearend, sizeof(short) * nrOfSamples);
+ memcpy(out, nearend, sizeof(*out) * nrOfSamples);
}
if (nearendH != outH) {
- memcpy(outH, nearendH, sizeof(short) * nrOfSamples);
+ memcpy(outH, nearendH, sizeof(*outH) * nrOfSamples);
}
// The AEC is in the start up mode
@@ -766,7 +766,9 @@ static int ProcessNormal(aecpc_t* aecpc,
}
} else {
// AEC is enabled.
- EstBufDelayNormal(aecpc);
+ if (WebRtcAec_reported_delay_enabled(aecpc->aec)) {
+ EstBufDelayNormal(aecpc);
+ }
// Note that 1 frame is supported for NB and 2 frames for WB.
for (i = 0; i < nFrames; i++) {
@@ -787,10 +789,10 @@ static int ProcessNormal(aecpc_t* aecpc,
}
static void ProcessExtended(aecpc_t* self,
- const int16_t* near,
- const int16_t* near_high,
- int16_t* out,
- int16_t* out_high,
+ const float* near,
+ const float* near_high,
+ float* out,
+ float* out_high,
int16_t num_samples,
int16_t reported_delay_ms,
int32_t skew) {
@@ -821,10 +823,10 @@ static void ProcessExtended(aecpc_t* self,
if (!self->farend_started) {
// Only needed if they don't already point to the same place.
if (near != out) {
- memcpy(out, near, sizeof(short) * num_samples);
+ memcpy(out, near, sizeof(*out) * num_samples);
}
if (near_high != out_high) {
- memcpy(out_high, near_high, sizeof(short) * num_samples);
+ memcpy(out_high, near_high, sizeof(*out_high) * num_samples);
}
return;
}
@@ -842,7 +844,9 @@ static void ProcessExtended(aecpc_t* self,
self->startup_phase = 0;
}
- EstBufDelayExtended(self);
+ if (WebRtcAec_reported_delay_enabled(self->aec)) {
+ EstBufDelayExtended(self);
+ }
{
// |delay_diff_offset| gives us the option to manually rewind the delay on