Aec3:Remove unused legacy code
Bug: webrtc:8671
Change-Id: I54f14cc304dbe1639fbb356dbdf9beeb1781ede4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137801
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28759}
diff --git a/modules/audio_processing/aec3/aec_state.cc b/modules/audio_processing/aec3/aec_state.cc
index e4ec9f8..c77b3e5 100644
--- a/modules/audio_processing/aec3/aec_state.cc
+++ b/modules/audio_processing/aec3/aec_state.cc
@@ -63,8 +63,6 @@
delay_state_(config_),
transparent_state_(config_),
filter_quality_state_(config_),
- legacy_filter_quality_state_(config_),
- legacy_saturation_detector_(config_),
erl_estimator_(2 * kNumBlocksPerSecond),
erle_estimator_(2 * kNumBlocksPerSecond, config_),
filter_analyzer_(config_),
@@ -83,7 +81,6 @@
blocks_with_active_render_ = 0;
initial_state_.Reset();
transparent_state_.Reset();
- legacy_saturation_detector_.Reset();
erle_estimator_.Reset(true);
erl_estimator_.Reset();
filter_quality_state_.Reset();
@@ -409,78 +406,6 @@
usable_linear_estimate_ = usable_linear_estimate_ && !transparent_mode;
}
-AecState::LegacyFilteringQualityAnalyzer::LegacyFilteringQualityAnalyzer(
- const EchoCanceller3Config& config)
- : conservative_initial_phase_(config.filter.conservative_initial_phase),
- required_blocks_for_convergence_(
- kNumBlocksPerSecond * (conservative_initial_phase_ ? 1.5f : 0.8f)),
- linear_and_stable_echo_path_(
- config.echo_removal_control.linear_and_stable_echo_path),
- non_converged_sequence_size_(kBlocksSinceConvergencedFilterInit) {}
-
-void AecState::LegacyFilteringQualityAnalyzer::Reset() {
- usable_linear_estimate_ = false;
- strong_not_saturated_render_blocks_ = 0;
- if (linear_and_stable_echo_path_) {
- recent_convergence_during_activity_ = false;
- }
- diverged_sequence_size_ = 0;
- // TODO(peah): Change to ensure proper triggering of usable filter.
- non_converged_sequence_size_ = 10000;
- recent_convergence_ = true;
-}
-
-void AecState::LegacyFilteringQualityAnalyzer::Update(
- bool saturated_echo,
- bool active_render,
- bool saturated_capture,
- bool transparent_mode,
- const absl::optional<DelayEstimate>& external_delay,
- bool converged_filter,
- bool diverged_filter) {
- diverged_sequence_size_ = diverged_filter ? diverged_sequence_size_ + 1 : 0;
- if (diverged_sequence_size_ >= 60) {
- // TODO(peah): Change these lines to ensure proper triggering of usable
- // filter.
- non_converged_sequence_size_ = 10000;
- recent_convergence_ = true;
- }
-
- if (converged_filter) {
- non_converged_sequence_size_ = 0;
- recent_convergence_ = true;
- active_non_converged_sequence_size_ = 0;
- recent_convergence_during_activity_ = true;
- } else {
- if (++non_converged_sequence_size_ >= 60 * kNumBlocksPerSecond) {
- recent_convergence_ = false;
- }
-
- if (active_render &&
- ++active_non_converged_sequence_size_ > 60 * kNumBlocksPerSecond) {
- recent_convergence_during_activity_ = false;
- }
- }
-
- strong_not_saturated_render_blocks_ +=
- active_render && !saturated_capture ? 1 : 0;
- const bool filter_has_had_time_to_converge =
- strong_not_saturated_render_blocks_ > required_blocks_for_convergence_;
-
- usable_linear_estimate_ = filter_has_had_time_to_converge && external_delay;
-
- if (!conservative_initial_phase_ && recent_convergence_during_activity_) {
- usable_linear_estimate_ = true;
- }
-
- if (!linear_and_stable_echo_path_ && !recent_convergence_) {
- usable_linear_estimate_ = false;
- }
-
- if (saturated_echo || transparent_mode) {
- usable_linear_estimate_ = false;
- }
-}
void AecState::SaturationDetector::Update(
rtc::ArrayView<const float> x,
@@ -505,39 +430,4 @@
}
}
-AecState::LegacySaturationDetector::LegacySaturationDetector(
- const EchoCanceller3Config& config)
- : echo_can_saturate_(config.ep_strength.echo_can_saturate),
- not_saturated_sequence_size_(1000) {}
-
-void AecState::LegacySaturationDetector::Reset() {
- not_saturated_sequence_size_ = 0;
-}
-
-void AecState::LegacySaturationDetector::Update(rtc::ArrayView<const float> x,
- bool saturated_capture,
- float echo_path_gain) {
- if (!echo_can_saturate_) {
- saturated_echo_ = false;
- return;
- }
-
- RTC_DCHECK_LT(0, x.size());
- if (saturated_capture) {
- const float max_sample = fabs(*std::max_element(
- x.begin(), x.end(), [](float a, float b) { return a * a < b * b; }));
-
- // Set flag for potential presence of saturated echo
- const float kMargin = 10.f;
- float peak_echo_amplitude = max_sample * echo_path_gain * kMargin;
- if (peak_echo_amplitude > 32000) {
- not_saturated_sequence_size_ = 0;
- saturated_echo_ = true;
- return;
- }
- }
-
- saturated_echo_ = ++not_saturated_sequence_size_ < 5;
-}
-
} // namespace webrtc
diff --git a/modules/audio_processing/aec3/aec_state.h b/modules/audio_processing/aec3/aec_state.h
index 713fa7e..43cdb0b 100644
--- a/modules/audio_processing/aec3/aec_state.h
+++ b/modules/audio_processing/aec3/aec_state.h
@@ -267,43 +267,6 @@
bool convergence_seen_ = false;
} filter_quality_state_;
- // Class containing the legacy functionality for analyzing how well the linear
- // filter is, and can be expected to perform on the current signals. The
- // purpose of this is for using to select the echo suppression functionality
- // as well as the input to the echo suppressor.
- class LegacyFilteringQualityAnalyzer {
- public:
- explicit LegacyFilteringQualityAnalyzer(const EchoCanceller3Config& config);
-
- // Returns whether the the linear filter is can be used for the echo
- // canceller output.
- bool LinearFilterUsable() const { return usable_linear_estimate_; }
-
- // Resets the state of the analyzer.
- void Reset();
-
- // Updates the analysis based on new data.
- void Update(bool saturated_echo,
- bool active_render,
- bool saturated_capture,
- bool transparent_mode,
- const absl::optional<DelayEstimate>& external_delay,
- bool converged_filter,
- bool diverged_filter);
-
- private:
- const bool conservative_initial_phase_;
- const float required_blocks_for_convergence_;
- const bool linear_and_stable_echo_path_;
- bool usable_linear_estimate_ = false;
- size_t strong_not_saturated_render_blocks_ = 0;
- size_t non_converged_sequence_size_;
- size_t diverged_sequence_size_ = 0;
- size_t active_non_converged_sequence_size_ = 0;
- bool recent_convergence_during_activity_ = false;
- bool recent_convergence_ = false;
- } legacy_filter_quality_state_;
-
// Class for detecting whether the echo is to be considered to be
// saturated.
class SaturationDetector {
@@ -322,30 +285,6 @@
bool saturated_echo_ = false;
} saturation_detector_;
- // Legacy class for detecting whether the echo is to be considered to be
- // saturated. This is kept as a fallback solution to use instead of the class
- // SaturationDetector,
- class LegacySaturationDetector {
- public:
- explicit LegacySaturationDetector(const EchoCanceller3Config& config);
-
- // Returns whether the echo is to be considered saturated.
- bool SaturatedEcho() const { return saturated_echo_; }
-
- // Resets the state of the detector.
- void Reset();
-
- // Updates the detection decision based on new data.
- void Update(rtc::ArrayView<const float> x,
- bool saturated_capture,
- float echo_path_gain);
-
- private:
- const bool echo_can_saturate_;
- size_t not_saturated_sequence_size_;
- bool saturated_echo_ = false;
- } legacy_saturation_detector_;
-
ErlEstimator erl_estimator_;
ErleEstimator erle_estimator_;
size_t strong_not_saturated_render_blocks_ = 0;