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

Unified Diff: webrtc/modules/audio_processing/aec3/suppression_gain.cc

Issue 2808733002: Added forced zero AEC output after call startup and echo path changes (Closed)
Patch Set: Created 3 years, 8 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
Index: webrtc/modules/audio_processing/aec3/suppression_gain.cc
diff --git a/webrtc/modules/audio_processing/aec3/suppression_gain.cc b/webrtc/modules/audio_processing/aec3/suppression_gain.cc
index 0e50292008947cbc1799d3affb5e3faf35867792..598f5d8e07cc1af156fb332182ef5e407b81f04b 100644
--- a/webrtc/modules/audio_processing/aec3/suppression_gain.cc
+++ b/webrtc/modules/audio_processing/aec3/suppression_gain.cc
@@ -325,38 +325,47 @@ void SuppressionGain::GetGain(
bool saturated_echo,
const std::vector<std::vector<float>>& render,
size_t num_capture_bands,
+ bool force_zero_gain,
float* high_bands_gain,
std::array<float, kFftLengthBy2Plus1>* low_band_gain) {
RTC_DCHECK(high_bands_gain);
RTC_DCHECK(low_band_gain);
- // Choose margin to use.
- const float margin = saturated_echo ? 0.001f : 0.01f;
- switch (optimization_) {
+ if (!force_zero_gain) {
+ // Choose margin to use.
+ const float margin = saturated_echo ? 0.001f : 0.01f;
+ switch (optimization_) {
#if defined(WEBRTC_ARCH_X86_FAMILY)
- case Aec3Optimization::kSse2:
- aec3::ComputeGains_SSE2(
- nearend_power, residual_echo_power, comfort_noise_power, margin,
- &previous_gain_squared_, &previous_masker_, low_band_gain);
- break;
+ case Aec3Optimization::kSse2:
+ aec3::ComputeGains_SSE2(
+ nearend_power, residual_echo_power, comfort_noise_power, margin,
+ &previous_gain_squared_, &previous_masker_, low_band_gain);
+ break;
#endif
- default:
- aec3::ComputeGains(nearend_power, residual_echo_power,
- comfort_noise_power, margin, &previous_gain_squared_,
- &previous_masker_, low_band_gain);
- }
+ default:
+ aec3::ComputeGains(nearend_power, residual_echo_power,
+ comfort_noise_power, margin, &previous_gain_squared_,
+ &previous_masker_, low_band_gain);
+ }
- if (num_capture_bands > 1) {
- // Compute the gain for upper frequencies.
- const float min_high_band_gain =
- HighFrequencyGainBound(saturated_echo, render);
- *high_bands_gain =
- *std::min_element(low_band_gain->begin() + 32, low_band_gain->end());
+ if (num_capture_bands > 1) {
+ // Compute the gain for upper frequencies.
+ const float min_high_band_gain =
+ HighFrequencyGainBound(saturated_echo, render);
+ *high_bands_gain =
+ *std::min_element(low_band_gain->begin() + 32, low_band_gain->end());
- *high_bands_gain = std::min(*high_bands_gain, min_high_band_gain);
+ *high_bands_gain = std::min(*high_bands_gain, min_high_band_gain);
+ } else {
+ *high_bands_gain = 1.f;
+ }
} else {
- *high_bands_gain = 1.f;
+ previous_gain_squared_.fill(0.f);
+ std::copy(comfort_noise_power.begin(), comfort_noise_power.end(),
+ previous_masker_.begin());
+ low_band_gain->fill(0.f);
+ *high_bands_gain = 0.f;
aleloi 2017/04/10 09:35:51 I think this function will be a bit more simple if
peah-webrtc 2017/04/10 09:57:24 That is indeed a much better way to write this. Gr
}
}

Powered by Google App Engine
This is Rietveld 408576698