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

Unified Diff: webrtc/modules/audio_processing/noise_suppression_impl.cc

Issue 1821443003: Fix normalization of noise estimate in NoiseSuppressor (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Disable noise suppressor bit-exactness unittests Created 4 years, 9 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/noise_suppression_impl.cc
diff --git a/webrtc/modules/audio_processing/noise_suppression_impl.cc b/webrtc/modules/audio_processing/noise_suppression_impl.cc
index a9d9f4a93bbf8086105ea4cb28fc0ee181be644b..4344c56fcc60907fceaafdf3eb86646ea9a46dda 100644
--- a/webrtc/modules/audio_processing/noise_suppression_impl.cc
+++ b/webrtc/modules/audio_processing/noise_suppression_impl.cc
@@ -177,23 +177,24 @@ std::vector<float> NoiseSuppressionImpl::NoiseEstimate() {
rtc::CritScope cs(crit_);
std::vector<float> noise_estimate;
#if defined(WEBRTC_NS_FLOAT)
- const float kNormalizationFactor = 1.f / (1 << 15);
+ const float kNumChannelsFraction = 1.f / suppressors_.size();
noise_estimate.assign(WebRtcNs_num_freq(), 0.f);
for (auto& suppressor : suppressors_) {
const float* noise = WebRtcNs_noise_estimate(suppressor->state());
for (size_t i = 0; i < noise_estimate.size(); ++i) {
- noise_estimate[i] +=
- kNormalizationFactor * noise[i] / suppressors_.size();
+ noise_estimate[i] += kNumChannelsFraction * noise[i];
}
}
#elif defined(WEBRTC_NS_FIXED)
- const float kNormalizationFactor = 1.f / (1 << 23);
noise_estimate.assign(WebRtcNsx_num_freq(), 0.f);
for (auto& suppressor : suppressors_) {
- const uint32_t* noise = WebRtcNsx_noise_estimate(suppressor->state());
+ int q_noise;
+ const uint32_t* noise = WebRtcNsx_noise_estimate(suppressor->state(),
+ &q_noise);
+ const float kNormalizationFactor =
+ 1.f / ((1 << q_noise) * suppressors_.size());
for (size_t i = 0; i < noise_estimate.size(); ++i) {
- noise_estimate[i] += kNormalizationFactor *
- static_cast<float>(noise[i]) / suppressors_.size();
+ noise_estimate[i] += kNormalizationFactor * noise[i];
}
}
#endif

Powered by Google App Engine
This is Rietveld 408576698