Cleaned up the EchoSuppression method in the AEC so that it

does not have to use the aec state as an input.

Furthermore, the debug dump output of e_fft was removed as
it is not really used in any analysis scripts.

BUG=webrtc:5298

Review URL: https://codereview.webrtc.org/1883293003

Cr-Commit-Position: refs/heads/master@{#12387}
This commit is contained in:
peah
2016-04-16 04:03:56 -07:00
committed by Commit bot
parent 86c540196e
commit 594a877f2d

View File

@ -959,9 +959,9 @@ static void RegressorPower(int num_partitions,
}
}
static void EchoSubtraction(AecCore* aec,
int num_partitions,
static void EchoSubtraction(int num_partitions,
int extended_filter_enabled,
int* extreme_filter_divergence,
float filter_step_size,
float error_threshold,
float* x_fft,
@ -997,9 +997,10 @@ static void EchoSubtraction(AecCore* aec,
// Conditionally reset the echo subtraction filter if the filter has diverged
// significantly.
if (!aec->extended_filter_enabled && aec->extreme_filter_divergence) {
memset(aec->wfBuf, 0, sizeof(aec->wfBuf));
aec->extreme_filter_divergence = 0;
if (!extended_filter_enabled && *extreme_filter_divergence) {
memset(h_fft_buf, 0,
2 * kExtendedNumPartitions * PART_LEN1 * sizeof(h_fft_buf[0][0]));
*extreme_filter_divergence = 0;
}
// Produce echo estimate s_fft.
@ -1020,9 +1021,6 @@ static void EchoSubtraction(AecCore* aec,
memcpy(e_extended + PART_LEN, e, sizeof(float) * PART_LEN);
Fft(e_extended, e_fft);
RTC_AEC_DEBUG_RAW_WRITE(aec->e_fft_file, &e_fft[0][0],
sizeof(e_fft[0][0]) * PART_LEN1 * 2);
// Scale error signal inversely with far power.
WebRtcAec_ScaleErrorSignal(filter_step_size, error_threshold, x_pow, e_fft);
WebRtcAec_FilterAdaptation(num_partitions, *x_fft_buf_block_pos, x_fft_buf,
@ -1413,10 +1411,11 @@ static void ProcessBlock(AecCore* aec) {
}
// Perform echo subtraction.
EchoSubtraction(aec, aec->num_partitions, aec->extended_filter_enabled,
aec->filter_step_size, aec->error_threshold, &x_fft[0][0],
&aec->xfBufBlockPos, aec->xfBuf, nearend_ptr, aec->xPow,
aec->wfBuf, echo_subtractor_output);
EchoSubtraction(aec->num_partitions, aec->extended_filter_enabled,
&aec->extreme_filter_divergence, aec->filter_step_size,
aec->error_threshold, &x_fft[0][0], &aec->xfBufBlockPos,
aec->xfBuf, nearend_ptr, aec->xPow, aec->wfBuf,
echo_subtractor_output);
RTC_AEC_DEBUG_WAV_WRITE(aec->outLinearFile, echo_subtractor_output, PART_LEN);