Fixing the bounds for the max and min erle in the erle instantaneous estimation.
Bug: webrtc:12283
Change-Id: I534a5da30e575f9b100046fff31a84774afbf67f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/196654
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32834}
diff --git a/modules/audio_processing/aec3/fullband_erle_estimator.cc b/modules/audio_processing/aec3/fullband_erle_estimator.cc
index 1d7a191..e56674e 100644
--- a/modules/audio_processing/aec3/fullband_erle_estimator.cc
+++ b/modules/audio_processing/aec3/fullband_erle_estimator.cc
@@ -162,17 +162,12 @@
void FullBandErleEstimator::ErleInstantaneous::UpdateMaxMin() {
RTC_DCHECK(erle_log2_);
- if (erle_log2_.value() > max_erle_log2_) {
- max_erle_log2_ = erle_log2_.value();
- } else {
- max_erle_log2_ -= 0.0004; // Forget factor, approx 1dB every 3 sec.
- }
-
- if (erle_log2_.value() < min_erle_log2_) {
- min_erle_log2_ = erle_log2_.value();
- } else {
- min_erle_log2_ += 0.0004; // Forget factor, approx 1dB every 3 sec.
- }
+ // Adding the forgetting factors for the maximum and minimum and capping the
+ // result to the incoming value.
+ max_erle_log2_ -= 0.0004f; // Forget factor, approx 1dB every 3 sec.
+ max_erle_log2_ = std::max(max_erle_log2_, erle_log2_.value());
+ min_erle_log2_ += 0.0004f; // Forget factor, approx 1dB every 3 sec.
+ min_erle_log2_ = std::min(min_erle_log2_, erle_log2_.value());
}
void FullBandErleEstimator::ErleInstantaneous::UpdateQualityEstimate() {