| Index: webrtc/modules/audio_processing/aec3/erle_estimator.cc
|
| diff --git a/webrtc/modules/audio_processing/aec3/erle_estimator.cc b/webrtc/modules/audio_processing/aec3/erle_estimator.cc
|
| index 8cdaee56be298c750dfe1923830f0c2c5643df3a..da0e421c008b6c99f2ed7df45a75539580261ea2 100644
|
| --- a/webrtc/modules/audio_processing/aec3/erle_estimator.cc
|
| +++ b/webrtc/modules/audio_processing/aec3/erle_estimator.cc
|
| @@ -16,16 +16,13 @@
|
|
|
| namespace webrtc {
|
|
|
| -namespace {
|
| -
|
| -constexpr float kMinErle = 1.f;
|
| -constexpr float kMaxLfErle = 8.f;
|
| -constexpr float kMaxHfErle = 1.5f;
|
| -
|
| -} // namespace
|
| -
|
| -ErleEstimator::ErleEstimator() {
|
| - erle_.fill(kMinErle);
|
| +ErleEstimator::ErleEstimator(float min_erle,
|
| + float max_erle_lf,
|
| + float max_erle_hf)
|
| + : min_erle_(min_erle),
|
| + max_erle_lf_(max_erle_lf),
|
| + max_erle_hf_(max_erle_hf) {
|
| + erle_.fill(min_erle_);
|
| hold_counters_.fill(0);
|
| }
|
|
|
| @@ -50,19 +47,19 @@ void ErleEstimator::Update(
|
| if (new_erle > erle_[k]) {
|
| hold_counters_[k - 1] = 100;
|
| erle_[k] += 0.1f * (new_erle - erle_[k]);
|
| - erle_[k] = rtc::SafeClamp(erle_[k], kMinErle, max_erle);
|
| + erle_[k] = rtc::SafeClamp(erle_[k], min_erle_, max_erle);
|
| }
|
| }
|
| }
|
| };
|
| - erle_update(1, kFftLengthBy2 / 2, kMaxLfErle);
|
| - erle_update(kFftLengthBy2 / 2, kFftLengthBy2, kMaxHfErle);
|
| + erle_update(1, kFftLengthBy2 / 2, max_erle_lf_);
|
| + erle_update(kFftLengthBy2 / 2, kFftLengthBy2, max_erle_hf_);
|
|
|
| std::for_each(hold_counters_.begin(), hold_counters_.end(),
|
| [](int& a) { --a; });
|
| std::transform(hold_counters_.begin(), hold_counters_.end(),
|
| - erle_.begin() + 1, erle_.begin() + 1, [](int a, float b) {
|
| - return a > 0 ? b : std::max(kMinErle, 0.97f * b);
|
| + erle_.begin() + 1, erle_.begin() + 1, [&](int a, float b) {
|
| + return a > 0 ? b : std::max(min_erle_, 0.97f * b);
|
| });
|
|
|
| erle_[0] = erle_[1];
|
|
|