Index: webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc |
diff --git a/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc b/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc |
index ae7f9119213d91e104e692b47af175eed1854f0b..a10d10a75e582267c6547b72a1b9866382bbba4e 100644 |
--- a/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc |
+++ b/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.cc |
@@ -40,6 +40,7 @@ const float kRho = 0.0004f; // Default production and interpretation SNR. |
const float kPowerNormalizationFactor = 1.f / (1 << 30); |
const float kMaxActiveSNR = 128.f; // 21dB |
const float kMinInactiveSNR = 32.f; // 15dB |
+const size_t kGainUpdatePeriod = 10u; |
// Returns dot product of vectors |a| and |b| with size |length|. |
float DotProduct(const float* a, const float* b, size_t length) { |
@@ -88,6 +89,7 @@ IntelligibilityEnhancer::IntelligibilityEnhancer(int sample_rate_hz, |
is_speech_(false), |
snr_(kMaxActiveSNR), |
is_active_(false), |
+ num_chunks_(0u), |
noise_estimation_buffer_(num_noise_bins), |
noise_estimation_queue_(kMaxNumNoiseEstimatesToBuffer, |
std::vector<float>(num_noise_bins), |
@@ -144,7 +146,7 @@ void IntelligibilityEnhancer::ProcessAudioBlock( |
clear_power_estimator_.Step(in_block[0]); |
} |
SnrBasedEffectActivation(); |
- if (is_active_) { |
+ if (is_active_ && num_chunks_++ % kGainUpdatePeriod == 0) { |
MapToErbBands(clear_power_estimator_.power().data(), render_filter_bank_, |
filtered_clear_pow_.data()); |
MapToErbBands(noise_power_estimator_.power().data(), capture_filter_bank_, |