Add AEC proxies for simple deprecation of AEC configurability.

Some changes need access to both the APM interface and the AECs,
hence we can't make the changes inside the AECs themselves.

The proxies also make it easy to drop support for individual parts of the
interfaces one at a time.


Bug: webrtc:9535
Change-Id: I3398e1182157f7d8b1e4c455060b830b61c20dd9
Reviewed-on: https://webrtc-review.googlesource.com/94500
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24317}
This commit is contained in:
Sam Zackrisson
2018-08-16 10:54:07 +02:00
committed by Commit Bot
parent 84ccb2de77
commit 74ed734d71
6 changed files with 283 additions and 2 deletions

View File

@ -24,7 +24,9 @@
#include "modules/audio_processing/audio_buffer.h"
#include "modules/audio_processing/common.h"
#include "modules/audio_processing/echo_cancellation_impl.h"
#include "modules/audio_processing/echo_cancellation_proxy.h"
#include "modules/audio_processing/echo_control_mobile_impl.h"
#include "modules/audio_processing/echo_control_mobile_proxy.h"
#include "modules/audio_processing/gain_control_for_experimental_agc.h"
#include "modules/audio_processing/gain_control_impl.h"
#include "modules/audio_processing/gain_controller2.h"
@ -264,6 +266,8 @@ struct AudioProcessingImpl::ApmPublicSubmodules {
// Accessed externally of APM without any lock acquired.
std::unique_ptr<EchoCancellationImpl> echo_cancellation;
std::unique_ptr<EchoControlMobileImpl> echo_control_mobile;
std::unique_ptr<EchoCancellationProxy> echo_cancellation_proxy;
std::unique_ptr<EchoControlMobileProxy> echo_control_mobile_proxy;
std::unique_ptr<GainControlImpl> gain_control;
std::unique_ptr<LevelEstimatorImpl> level_estimator;
std::unique_ptr<NoiseSuppressionImpl> noise_suppression;
@ -394,6 +398,11 @@ AudioProcessingImpl::AudioProcessingImpl(
new EchoCancellationImpl(&crit_render_, &crit_capture_));
public_submodules_->echo_control_mobile.reset(
new EchoControlMobileImpl(&crit_render_, &crit_capture_));
public_submodules_->echo_cancellation_proxy.reset(new EchoCancellationProxy(
this, public_submodules_->echo_cancellation.get()));
public_submodules_->echo_control_mobile_proxy.reset(
new EchoControlMobileProxy(
this, public_submodules_->echo_control_mobile.get()));
public_submodules_->gain_control.reset(
new GainControlImpl(&crit_render_, &crit_capture_));
public_submodules_->level_estimator.reset(
@ -1714,11 +1723,11 @@ AudioProcessingStats AudioProcessingImpl::GetStatistics(
}
EchoCancellation* AudioProcessingImpl::echo_cancellation() const {
return public_submodules_->echo_cancellation.get();
return public_submodules_->echo_cancellation_proxy.get();
}
EchoControlMobile* AudioProcessingImpl::echo_control_mobile() const {
return public_submodules_->echo_control_mobile.get();
return public_submodules_->echo_control_mobile_proxy.get();
}
GainControl* AudioProcessingImpl::gain_control() const {