Added support in the AEC for refined filter adaptation.
The following algorithmic functionality was added: -Add support for an exact regressor power to be computed which avoids the issue with the updating of the filter sometimes being unstable. -Lowered the fixed step size of the adaptive filter to 0.05 which significantly reduces the sensitivity of the adaptive filter to near-end noise, nonlinearities, doubletalk and the unmodelled echo path tail. It also reduces the tracking speed of the adaptive filter but the chosen value proved to give a sufficient tradeoff for the requirements on the adaptive filter. To allow the new functionality to be selectively applied the following was done: -A new Config was added for selectively activating the functionality. -Functionality was added in the audioprocessing and echocancellationimpl classes for passing the activation of the functionality down to the AEC algorithms. To make the code for the introduction of the functionality clean, the following refactoring was done: -The selection of the step size was moved to a single place. -The constant for the step size of the adaptive filter in extended filter mode was made local. -The state variable storing the step-size was renamed to a more describing name. When the new functionality is not activated, the changes have been tested for bitexactness on Linux. TBR=minyue@webrtc.org BUG=webrtc:5778, webrtc:5777 Review URL: https://codereview.webrtc.org/1887003002 Cr-Commit-Position: refs/heads/master@{#12384}
This commit is contained in:
@ -48,6 +48,7 @@ class EchoCancellationImpl : public EchoCancellation {
|
||||
bool is_extended_filter_enabled() const;
|
||||
bool is_aec3_enabled() const;
|
||||
std::string GetExperimentsDescription();
|
||||
bool is_refined_adaptive_filter_enabled() const;
|
||||
|
||||
// Checks whether the module is enabled. Must only be
|
||||
// called from the render side of APM as otherwise
|
||||
@ -102,6 +103,7 @@ class EchoCancellationImpl : public EchoCancellation {
|
||||
bool extended_filter_enabled_ GUARDED_BY(crit_capture_);
|
||||
bool delay_agnostic_enabled_ GUARDED_BY(crit_capture_);
|
||||
bool aec3_enabled_ GUARDED_BY(crit_capture_);
|
||||
bool refined_adaptive_filter_enabled_ GUARDED_BY(crit_capture_) = false;
|
||||
|
||||
size_t render_queue_element_max_size_ GUARDED_BY(crit_render_)
|
||||
GUARDED_BY(crit_capture_);
|
||||
|
||||
Reference in New Issue
Block a user