webrtc/modules/audio_processing/aec3/subtractor_output_analyzer.h
Per Åhgren 6204adf2ed AEC3: Loosen the echo removal requirements in conservative mode
This CL lowers the margins in the AEC3 conservative mode to increase
the transparency when there are audio buffer issues, and during call
startup.

In particular, this CL adjusts the parameters and thresholds to
-Make the requirements for filter divergence more strict, to minimize
the transparency loss during minor filter divergence.
-Decrease the echo power uncertainty used during initial filter
convergence, to increase transparency after audio buffer issues.
-Deactivate the enforcement of conservative suppressor gain after
audio buffer.

Bug: webrtc:9641,chromium:875611
Change-Id: Ie171bb411f17a1e8661c291118debd334f65c74f
Reviewed-on: https://webrtc-review.googlesource.com/94776
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24333}
2018-08-19 10:43:46 +00:00

48 lines
1.5 KiB
C++

/*
* Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef MODULES_AUDIO_PROCESSING_AEC3_SUBTRACTOR_OUTPUT_ANALYZER_H_
#define MODULES_AUDIO_PROCESSING_AEC3_SUBTRACTOR_OUTPUT_ANALYZER_H_
#include "api/array_view.h"
#include "modules/audio_processing/aec3/subtractor_output.h"
namespace webrtc {
// Class for analyzing the properties subtractor output
class SubtractorOutputAnalyzer {
public:
SubtractorOutputAnalyzer();
~SubtractorOutputAnalyzer() = default;
// Analyses the subtractor output.
void Update(const SubtractorOutput& subtractor_output);
bool ConvergedFilter() const {
return main_filter_converged_ || shadow_filter_converged_;
}
bool DivergedFilter() const { return filter_diverged_; }
bool SeverelyDivergedFilter() const { return filter_severely_diverged_; }
// Handle echo path change.
void HandleEchoPathChange();
private:
const bool strict_divergence_check_;
bool shadow_filter_converged_ = false;
bool main_filter_converged_ = false;
bool filter_diverged_ = false;
bool filter_severely_diverged_ = false;
};
} // namespace webrtc
#endif // MODULES_AUDIO_PROCESSING_AEC3_SUBTRACTOR_OUTPUT_ANALYZER_H_