Index: webrtc/modules/audio_processing/aec3/echo_remover.cc |
diff --git a/webrtc/modules/audio_processing/aec3/echo_remover.cc b/webrtc/modules/audio_processing/aec3/echo_remover.cc |
index 842c3854e50f1a1a0ee279be4f332326b5926ff7..64ffbad21ee4750e63f34087425a5c503c196ddd 100644 |
--- a/webrtc/modules/audio_processing/aec3/echo_remover.cc |
+++ b/webrtc/modules/audio_processing/aec3/echo_remover.cc |
@@ -131,6 +131,8 @@ void EchoRemoverImpl::ProcessCapture( |
LowestBandRate(sample_rate_hz_), 1); |
data_dumper_->DumpWav("aec3_echo_remover_render_input", kBlockSize, &x0[0], |
LowestBandRate(sample_rate_hz_), 1); |
+ data_dumper_->DumpRaw("aec3_echo_remover_capture_input", y0); |
+ data_dumper_->DumpRaw("aec3_echo_remover_render_input", x0); |
aec_state_.UpdateCaptureSaturation(capture_signal_saturation); |
@@ -167,13 +169,15 @@ void EchoRemoverImpl::ProcessCapture( |
// Update the AEC state information. |
aec_state_.Update(subtractor_.FilterFrequencyResponse(), |
+ subtractor_.FilterImpulseResponse(), |
echo_path_delay_samples, render_buffer, E2_main, Y2, x0, |
- echo_leakage_detected_); |
+ subtractor_output.s_main, echo_leakage_detected_); |
// Choose the linear output. |
output_selector_.FormLinearOutput(!aec_state_.HeadsetDetected(), e_main, y0); |
data_dumper_->DumpWav("aec3_output_linear", kBlockSize, &y0[0], |
LowestBandRate(sample_rate_hz_), 1); |
+ data_dumper_->DumpRaw("aec3_output_linear", y0); |
const auto& E2 = output_selector_.UseSubtractorOutput() ? E2_main : Y2; |
// Estimate the residual echo power. |
@@ -194,7 +198,14 @@ void EchoRemoverImpl::ProcessCapture( |
// Update the metrics. |
metrics_.Update(aec_state_, cng_.NoiseSpectrum(), G); |
+ // Update the aec state with the aec output characteristics. |
+ aec_state_.UpdateWithOutput(y0); |
+ |
// Debug outputs for the purpose of development and analysis. |
+ data_dumper_->DumpWav("aec3_echo_estimate", kBlockSize, |
+ &subtractor_output.s_main[0], |
+ LowestBandRate(sample_rate_hz_), 1); |
+ data_dumper_->DumpRaw("aec3_output", y0); |
data_dumper_->DumpRaw("aec3_N2", cng_.NoiseSpectrum()); |
data_dumper_->DumpRaw("aec3_suppressor_gain", G); |
data_dumper_->DumpWav("aec3_output", |