Chromium Code Reviews| Index: webrtc/modules/audio_processing/audio_processing_impl.cc |
| diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc |
| index f63cb206b5c6aaf72a4bc30b47ebd0b6c7c8680b..3be029171bb6ffda39b4d14c6c311edfce7a64c6 100644 |
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc |
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc |
| @@ -120,6 +120,16 @@ int FindNativeProcessRateToUse(int minimum_rate, bool band_splitting_required) { |
| return uppermost_native_rate; |
| } |
| +webrtc::AudioProcessing::Statistic FixStatistic( |
| + const webrtc::AudioProcessing::Statistic& stat) { |
| + webrtc::AudioProcessing::Statistic result = stat; |
| + if (result.average == -100 || result.instant == -100 || |
| + result.maximum == -100 || result.minimum == -100) { |
| + result.average = result.instant = result.maximum = result.minimum = -100; |
| + } |
| + return result; |
| +} |
| + |
| // Maximum length that a frame of samples can have. |
| static const size_t kMaxAllowedValuesOfSamplesPerFrame = 160; |
| // Maximum number of frames to buffer in the render queue. |
| @@ -1489,12 +1499,13 @@ AudioProcessing::AudioProcessingStatistics AudioProcessingImpl::GetStatistics() |
| EchoCancellation::Metrics metrics; |
| int success = public_submodules_->echo_cancellation->GetMetrics(&metrics); |
| if (success == Error::kNoError) { |
| - stats.a_nlp.Set(metrics.a_nlp); |
| + stats.a_nlp.Set(FixStatistic(metrics.a_nlp)); |
|
peah-webrtc
2016/11/10 10:36:09
What you do here is basically to ensure that if an
ossu
2016/11/10 11:29:47
peah: Did you read my analysis of the problem in q
|
| stats.divergent_filter_fraction = metrics.divergent_filter_fraction; |
| - stats.echo_return_loss.Set(metrics.echo_return_loss); |
| + stats.echo_return_loss.Set(FixStatistic(metrics.echo_return_loss)); |
| stats.echo_return_loss_enhancement.Set( |
| - metrics.echo_return_loss_enhancement); |
| - stats.residual_echo_return_loss.Set(metrics.residual_echo_return_loss); |
| + FixStatistic(metrics.echo_return_loss_enhancement)); |
| + stats.residual_echo_return_loss.Set( |
| + FixStatistic(metrics.residual_echo_return_loss)); |
| } |
| public_submodules_->echo_cancellation->GetDelayMetrics( |
| &stats.delay_median, &stats.delay_standard_deviation, |