Remove deprecated legacy AEC code
This CL removes the deprecated legacy AEC code.
Note that this CL should not be landed before the M80 release has been cut.
Bug: webrtc:11165
Change-Id: I59ee94526e62f702bb9fa9fa2d38c4e48f44753c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161238
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30036}
diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc
index 97a8379..4d9cdb4 100644
--- a/modules/audio_processing/audio_processing_impl.cc
+++ b/modules/audio_processing/audio_processing_impl.cc
@@ -155,7 +155,6 @@
bool AudioProcessingImpl::SubmoduleStates::Update(
bool high_pass_filter_enabled,
- bool echo_canceller_enabled,
bool mobile_echo_controller_enabled,
bool residual_echo_detector_enabled,
bool noise_suppressor_enabled,
@@ -167,7 +166,6 @@
bool transient_suppressor_enabled) {
bool changed = false;
changed |= (high_pass_filter_enabled != high_pass_filter_enabled_);
- changed |= (echo_canceller_enabled != echo_canceller_enabled_);
changed |=
(mobile_echo_controller_enabled != mobile_echo_controller_enabled_);
changed |=
@@ -182,7 +180,6 @@
changed |= (transient_suppressor_enabled != transient_suppressor_enabled_);
if (changed) {
high_pass_filter_enabled_ = high_pass_filter_enabled;
- echo_canceller_enabled_ = echo_canceller_enabled;
mobile_echo_controller_enabled_ = mobile_echo_controller_enabled;
residual_echo_detector_enabled_ = residual_echo_detector_enabled;
noise_suppressor_enabled_ = noise_suppressor_enabled;
@@ -212,9 +209,8 @@
bool AudioProcessingImpl::SubmoduleStates::CaptureMultiBandProcessingActive(
bool ec_processing_active) const {
- return high_pass_filter_enabled_ || echo_canceller_enabled_ ||
- mobile_echo_controller_enabled_ || noise_suppressor_enabled_ ||
- adaptive_gain_controller_enabled_ ||
+ return high_pass_filter_enabled_ || mobile_echo_controller_enabled_ ||
+ noise_suppressor_enabled_ || adaptive_gain_controller_enabled_ ||
(echo_controller_enabled_ && ec_processing_active);
}
@@ -230,9 +226,8 @@
bool AudioProcessingImpl::SubmoduleStates::RenderMultiBandSubModulesActive()
const {
- return RenderMultiBandProcessingActive() || echo_canceller_enabled_ ||
- mobile_echo_controller_enabled_ || adaptive_gain_controller_enabled_ ||
- echo_controller_enabled_;
+ return RenderMultiBandProcessingActive() || mobile_echo_controller_enabled_ ||
+ adaptive_gain_controller_enabled_ || echo_controller_enabled_;
}
bool AudioProcessingImpl::SubmoduleStates::RenderFullBandProcessingActive()
@@ -246,8 +241,8 @@
}
bool AudioProcessingImpl::SubmoduleStates::HighPassFilteringRequired() const {
- return high_pass_filter_enabled_ || echo_canceller_enabled_ ||
- mobile_echo_controller_enabled_ || noise_suppressor_enabled_;
+ return high_pass_filter_enabled_ || mobile_echo_controller_enabled_ ||
+ noise_suppressor_enabled_;
}
AudioProcessingBuilder::AudioProcessingBuilder() = default;
@@ -638,12 +633,7 @@
const bool aec_config_changed =
config_.echo_canceller.enabled != config.echo_canceller.enabled ||
- config_.echo_canceller.use_legacy_aec !=
- config.echo_canceller.use_legacy_aec ||
- config_.echo_canceller.mobile_mode != config.echo_canceller.mobile_mode ||
- (config_.echo_canceller.enabled && config.echo_canceller.use_legacy_aec &&
- config_.echo_canceller.legacy_moderate_suppression_level !=
- config.echo_canceller.legacy_moderate_suppression_level);
+ config_.echo_canceller.mobile_mode != config.echo_canceller.mobile_mode;
const bool agc1_config_changed =
config_.gain_controller1.enabled != config.gain_controller1.enabled ||
@@ -668,6 +658,9 @@
config_ = config;
+ // Ensure that this deprecated setting is not used by mistake.
+ RTC_DCHECK(!config_.echo_canceller.use_legacy_aec);
+
if (aec_config_changed) {
InitializeEchoController();
}
@@ -737,13 +730,6 @@
rtc::CritScope cs_render(&crit_render_);
rtc::CritScope cs_capture(&crit_capture_);
- capture_nonlocked_.use_aec2_extended_filter =
- config.Get<ExtendedFilter>().enabled;
- capture_nonlocked_.use_aec2_delay_agnostic =
- config.Get<DelayAgnostic>().enabled;
- capture_nonlocked_.use_aec2_refined_adaptive_filter =
- config.Get<RefinedAdaptiveFilter>().enabled;
-
if (capture_.transient_suppressor_enabled !=
config.Get<ExperimentalNs>().enabled) {
capture_.transient_suppressor_enabled =
@@ -997,23 +983,6 @@
void AudioProcessingImpl::QueueBandedRenderAudio(AudioBuffer* audio) {
RTC_DCHECK_GE(160, audio->num_frames_per_band());
- // Insert the samples into the queue.
- if (submodules_.echo_cancellation) {
- RTC_DCHECK(aec_render_signal_queue_);
- EchoCancellationImpl::PackRenderAudioBuffer(audio, num_output_channels(),
- num_reverse_channels(),
- &aec_render_queue_buffer_);
-
- if (!aec_render_signal_queue_->Insert(&aec_render_queue_buffer_)) {
- // The data queue is full and needs to be emptied.
- EmptyQueuedRenderAudio();
-
- // Retry the insert (should always work).
- bool result = aec_render_signal_queue_->Insert(&aec_render_queue_buffer_);
- RTC_DCHECK(result);
- }
- }
-
if (submodules_.echo_control_mobile) {
EchoControlMobileImpl::PackRenderAudioBuffer(audio, num_output_channels(),
num_reverse_channels(),
@@ -1110,14 +1079,6 @@
void AudioProcessingImpl::EmptyQueuedRenderAudio() {
rtc::CritScope cs_capture(&crit_capture_);
- if (submodules_.echo_cancellation) {
- RTC_DCHECK(aec_render_signal_queue_);
- while (aec_render_signal_queue_->Remove(&aec_capture_queue_buffer_)) {
- submodules_.echo_cancellation->ProcessRenderAudio(
- aec_capture_queue_buffer_);
- }
- }
-
if (submodules_.echo_control_mobile) {
RTC_DCHECK(aecm_render_signal_queue_);
while (aecm_render_signal_queue_->Remove(&aecm_capture_queue_buffer_)) {
@@ -1236,7 +1197,6 @@
// TODO(peah): Simplify once the public API Enable functions for these
// are moved to APM.
RTC_DCHECK_LE(!!submodules_.echo_controller +
- !!submodules_.echo_cancellation +
!!submodules_.echo_control_mobile,
1);
@@ -1350,15 +1310,6 @@
AudioBuffer* linear_aec_buffer = capture_.linear_aec_output.get();
submodules_.echo_controller->ProcessCapture(
capture_buffer, linear_aec_buffer, capture_.echo_path_gain_change);
- } else if (submodules_.echo_cancellation) {
- // Ensure that the stream delay was set before the call to the
- // AEC ProcessCaptureAudio function.
- if (!was_stream_delay_set()) {
- return AudioProcessing::kStreamParameterNotSetError;
- }
-
- RETURN_ON_ERR(submodules_.echo_cancellation->ProcessCaptureAudio(
- capture_buffer, stream_delay_ms()));
}
if (submodules_.noise_suppressor) {
@@ -1387,8 +1338,7 @@
}
// TODO(peah): Add reporting from AEC3 whether there is echo.
RETURN_ON_ERR(submodules_.gain_control->ProcessCaptureAudio(
- capture_buffer, submodules_.echo_cancellation &&
- submodules_.echo_cancellation->stream_has_echo()));
+ capture_buffer, /*stream_has_echo*/ false));
if (submodule_states_.CaptureMultiBandProcessingPresent() &&
SampleRateSupportsMultiBand(
@@ -1754,7 +1704,6 @@
return capture_.stats;
}
AudioProcessingStats stats = capture_.stats;
- EchoCancellationImpl::Metrics metrics;
if (submodules_.echo_controller) {
auto ec_metrics = submodules_.echo_controller->GetMetrics();
stats.echo_return_loss = ec_metrics.echo_return_loss;
@@ -1788,8 +1737,8 @@
bool AudioProcessingImpl::UpdateActiveSubmoduleStates() {
return submodule_states_.Update(
- config_.high_pass_filter.enabled, !!submodules_.echo_cancellation,
- !!submodules_.echo_control_mobile, config_.residual_echo_detector.enabled,
+ config_.high_pass_filter.enabled, !!submodules_.echo_control_mobile,
+ config_.residual_echo_detector.enabled,
!!submodules_.legacy_noise_suppressor || !!submodules_.noise_suppressor,
submodules_.gain_control->is_enabled(), config_.gain_controller2.enabled,
config_.pre_amplifier.enabled, capture_nonlocked_.echo_controller_enabled,
@@ -1831,8 +1780,7 @@
void AudioProcessingImpl::InitializeEchoController() {
bool use_echo_controller =
echo_control_factory_ ||
- (config_.echo_canceller.enabled && !config_.echo_canceller.mobile_mode &&
- !config_.echo_canceller.use_legacy_aec);
+ (config_.echo_canceller.enabled && !config_.echo_canceller.mobile_mode);
if (use_echo_controller) {
// Create and activate the echo controller.
@@ -1863,8 +1811,6 @@
capture_nonlocked_.echo_controller_enabled = true;
- submodules_.echo_cancellation.reset();
- aec_render_signal_queue_.reset();
submodules_.echo_control_mobile.reset();
aecm_render_signal_queue_.reset();
return;
@@ -1875,8 +1821,6 @@
capture_.linear_aec_output.reset();
if (!config_.echo_canceller.enabled) {
- submodules_.echo_cancellation.reset();
- aec_render_signal_queue_.reset();
submodules_.echo_control_mobile.reset();
aecm_render_signal_queue_.reset();
return;
@@ -1905,46 +1849,11 @@
submodules_.echo_control_mobile->Initialize(proc_split_sample_rate_hz(),
num_reverse_channels(),
num_output_channels());
-
- submodules_.echo_cancellation.reset();
- aec_render_signal_queue_.reset();
return;
}
submodules_.echo_control_mobile.reset();
aecm_render_signal_queue_.reset();
-
- // Create and activate AEC2.
- submodules_.echo_cancellation.reset(new EchoCancellationImpl());
- submodules_.echo_cancellation->SetExtraOptions(
- capture_nonlocked_.use_aec2_extended_filter,
- capture_nonlocked_.use_aec2_delay_agnostic,
- capture_nonlocked_.use_aec2_refined_adaptive_filter);
-
- size_t element_max_size =
- std::max(static_cast<size_t>(1),
- kMaxAllowedValuesOfSamplesPerBand *
- EchoCancellationImpl::NumCancellersRequired(
- num_output_channels(), num_reverse_channels()));
-
- std::vector<float> template_queue_element(element_max_size);
-
- aec_render_signal_queue_.reset(
- new SwapQueue<std::vector<float>, RenderQueueItemVerifier<float>>(
- kMaxNumFramesToBuffer, template_queue_element,
- RenderQueueItemVerifier<float>(element_max_size)));
-
- aec_render_queue_buffer_.resize(element_max_size);
- aec_capture_queue_buffer_.resize(element_max_size);
-
- submodules_.echo_cancellation->Initialize(
- proc_sample_rate_hz(), num_reverse_channels(), num_output_channels(),
- num_proc_channels());
-
- submodules_.echo_cancellation->set_suppression_level(
- config_.echo_canceller.legacy_moderate_suppression_level
- ? EchoCancellationImpl::SuppressionLevel::kModerateSuppression
- : EchoCancellationImpl::SuppressionLevel::kHighSuppression);
}
void AudioProcessingImpl::InitializeGainController2() {
@@ -2039,10 +1948,6 @@
}
std::string experiments_description = "";
- if (submodules_.echo_cancellation) {
- experiments_description +=
- submodules_.echo_cancellation->GetExperimentsDescription();
- }
// TODO(peah): Add semicolon-separated concatenations of experiment
// descriptions for other submodules.
if (constants_.agc_clipped_level_min != kClippedLevelMin) {
@@ -2058,19 +1963,9 @@
InternalAPMConfig apm_config;
apm_config.aec_enabled = config_.echo_canceller.enabled;
- apm_config.aec_delay_agnostic_enabled =
- submodules_.echo_cancellation &&
- submodules_.echo_cancellation->is_delay_agnostic_enabled();
- apm_config.aec_drift_compensation_enabled =
- submodules_.echo_cancellation &&
- submodules_.echo_cancellation->is_drift_compensation_enabled();
- apm_config.aec_extended_filter_enabled =
- submodules_.echo_cancellation &&
- submodules_.echo_cancellation->is_extended_filter_enabled();
- apm_config.aec_suppression_level =
- submodules_.echo_cancellation
- ? static_cast<int>(submodules_.echo_cancellation->suppression_level())
- : 0;
+ apm_config.aec_delay_agnostic_enabled = false;
+ apm_config.aec_extended_filter_enabled = false;
+ apm_config.aec_suppression_level = 0;
apm_config.aecm_enabled = !!submodules_.echo_control_mobile;
apm_config.aecm_comfort_noise_enabled =
@@ -2151,10 +2046,7 @@
RTC_DCHECK(aec_dump_);
AecDump::AudioProcessingState audio_proc_state;
audio_proc_state.delay = capture_nonlocked_.stream_delay_ms;
- audio_proc_state.drift =
- submodules_.echo_cancellation
- ? submodules_.echo_cancellation->stream_drift_samples()
- : 0;
+ audio_proc_state.drift = 0;
audio_proc_state.level = recommended_stream_analog_level();
audio_proc_state.keypress = capture_.key_pressed;
aec_dump_->AddAudioProcessingState(audio_proc_state);