Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Unified Diff: webrtc/modules/audio_processing/aec/aec_core.c

Issue 1639773002: Moved buffering of farend into the EchoSubtraction method. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/audio_processing/aec/aec_core.c
diff --git a/webrtc/modules/audio_processing/aec/aec_core.c b/webrtc/modules/audio_processing/aec/aec_core.c
index 26e13bc2c2dac54529e129c62ab964e3befd282d..f1c448a6be7dc43da6b22c0d76520e370fc16953 100644
--- a/webrtc/modules/audio_processing/aec/aec_core.c
+++ b/webrtc/modules/audio_processing/aec/aec_core.c
@@ -899,20 +899,22 @@ static int SignalBasedDelayCorrection(AecCore* self) {
return delay_correction;
}
-static void EchoSubtraction(
- AecCore* aec,
- int num_partitions,
- int x_fft_buf_block_pos,
- int metrics_mode,
- int extended_filter_enabled,
- float normal_mu,
- float normal_error_threshold,
- float x_fft_buf[2][kExtendedNumPartitions * PART_LEN1],
- float* const y,
- float x_pow[PART_LEN1],
- float h_fft_buf[2][kExtendedNumPartitions * PART_LEN1],
- PowerLevel* linout_level,
- float echo_subtractor_output[PART_LEN]) {
+static void EchoSubtraction(AecCore* aec,
+ int num_partitions,
+ int metrics_mode,
minyue-webrtc 2016/01/26 15:15:26 I prefer the old line breaking. less lines and cle
peah-webrtc 2016/01/28 13:06:07 This breaking is according to (caused by) clang-fo
minyue-webrtc 2016/01/28 14:10:40 That is generally ok, although I prefer some manua
+ int extended_filter_enabled,
+ float normal_mu,
+ float normal_error_threshold,
+ float* xf,
minyue-webrtc 2016/01/26 15:15:26 would it better to change xf to something more mea
peah-webrtc 2016/01/28 13:06:07 That makes sense! I will change to x_fft, as that
+ int* x_fft_buf_block_pos,
+ float x_fft_buf[2]
+ [kExtendedNumPartitions * PART_LEN1],
+ float* const y,
+ float x_pow[PART_LEN1],
+ float h_fft_buf[2]
+ [kExtendedNumPartitions * PART_LEN1],
+ PowerLevel* linout_level,
+ float echo_subtractor_output[PART_LEN]) {
float s_fft[2][PART_LEN1];
float e_extended[PART_LEN2];
float s_extended[PART_LEN2];
@@ -920,6 +922,19 @@ static void EchoSubtraction(
float e[PART_LEN];
float e_fft[2][PART_LEN1];
int i;
+
+ // Update the x_fft_buf block position.
+ (*x_fft_buf_block_pos)--;
+ if ((*x_fft_buf_block_pos) == -1) {
+ *x_fft_buf_block_pos = num_partitions - 1;
+ }
+
+ // Buffer xf.
+ memcpy(x_fft_buf[0] + (*x_fft_buf_block_pos) * PART_LEN1, xf,
+ sizeof(float) * PART_LEN1);
+ memcpy(x_fft_buf[1] + (*x_fft_buf_block_pos) * PART_LEN1, &xf[PART_LEN1],
+ sizeof(float) * PART_LEN1);
+
memset(s_fft, 0, sizeof(s_fft));
// Conditionally reset the echo subtraction filter if the filter has diverged
@@ -931,11 +946,8 @@ static void EchoSubtraction(
}
// Produce echo estimate s_fft.
- WebRtcAec_FilterFar(num_partitions,
- x_fft_buf_block_pos,
- x_fft_buf,
- h_fft_buf,
- s_fft);
+ WebRtcAec_FilterFar(num_partitions, *x_fft_buf_block_pos, x_fft_buf,
+ h_fft_buf, s_fft);
// Compute the time-domain echo estimate s.
ScaledInverseFft(s_fft, s_extended, 2.0f, 0);
@@ -968,11 +980,8 @@ static void EchoSubtraction(
normal_error_threshold,
x_pow,
e_fft);
- WebRtcAec_FilterAdaptation(num_partitions,
- x_fft_buf_block_pos,
- x_fft_buf,
- e_fft,
- h_fft_buf);
+ WebRtcAec_FilterAdaptation(num_partitions, *x_fft_buf_block_pos, x_fft_buf,
+ e_fft, h_fft_buf);
memcpy(echo_subtractor_output, e, sizeof(float) * PART_LEN);
}
@@ -1356,34 +1365,12 @@ static void ProcessBlock(AecCore* aec) {
}
}
- // Update the xfBuf block position.
- aec->xfBufBlockPos--;
- if (aec->xfBufBlockPos == -1) {
- aec->xfBufBlockPos = aec->num_partitions - 1;
- }
-
- // Buffer xf
- memcpy(aec->xfBuf[0] + aec->xfBufBlockPos * PART_LEN1,
- xf_ptr,
- sizeof(float) * PART_LEN1);
- memcpy(aec->xfBuf[1] + aec->xfBufBlockPos * PART_LEN1,
- &xf_ptr[PART_LEN1],
- sizeof(float) * PART_LEN1);
-
// Perform echo subtraction.
- EchoSubtraction(aec,
- aec->num_partitions,
- aec->xfBufBlockPos,
- aec->metricsMode,
- aec->extended_filter_enabled,
- aec->normal_mu,
- aec->normal_error_threshold,
- aec->xfBuf,
- nearend_ptr,
- aec->xPow,
- aec->wfBuf,
- &aec->linoutlevel,
- echo_subtractor_output);
+ EchoSubtraction(aec, aec->num_partitions, aec->metricsMode,
+ aec->extended_filter_enabled, aec->normal_mu,
+ aec->normal_error_threshold, &xf[0][0], &aec->xfBufBlockPos,
minyue-webrtc 2016/01/26 15:15:26 if you like you can change xf here to something mo
peah-webrtc 2016/01/28 13:06:07 Done.
+ aec->xfBuf, nearend_ptr, aec->xPow, aec->wfBuf,
+ &aec->linoutlevel, echo_subtractor_output);
RTC_AEC_DEBUG_WAV_WRITE(aec->outLinearFile, echo_subtractor_output, PART_LEN);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698