| 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 de7e856676ef14e86bebe2a53511d16f7a204943..400e8e449d12d35c1bc193a427d326d7ff7858eb 100644
|
| --- a/webrtc/modules/audio_processing/noise_suppression_impl.cc
|
| +++ b/webrtc/modules/audio_processing/noise_suppression_impl.cc
|
| @@ -172,4 +172,30 @@ float NoiseSuppressionImpl::speech_probability() const {
|
| return AudioProcessing::kUnsupportedFunctionError;
|
| #endif
|
| }
|
| +
|
| +std::vector<float> NoiseSuppressionImpl::NoiseEstimate() {
|
| + rtc::CritScope cs(crit_);
|
| + std::vector<float> noise_estimate;
|
| +#if defined(WEBRTC_NS_FLOAT)
|
| + 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] += noise[i] / suppressors_.size();
|
| + }
|
| + }
|
| +#elif defined(WEBRTC_NS_FIXED)
|
| + const float kNormalizationFactor = 1.f / (1 << 8);
|
| + noise_estimate.assign(WebRtcNsx_num_freq(), 0.f);
|
| + for (auto& suppressor : suppressors_) {
|
| + const uint32_t* noise = WebRtcNsx_noise_estimate(suppressor->state());
|
| + for (size_t i = 0; i < noise_estimate.size(); ++i) {
|
| + noise_estimate[i] += kNormalizationFactor *
|
| + static_cast<float>(noise[i]) / suppressors_.size();
|
| + }
|
| + }
|
| +#endif
|
| + return noise_estimate;
|
| +}
|
| +
|
| } // namespace webrtc
|
|
|