diff --git a/modules/audio_processing/aec3/aec_state.cc b/modules/audio_processing/aec3/aec_state.cc index 1d5070f2de..cfe4bdf39f 100644 --- a/modules/audio_processing/aec3/aec_state.cc +++ b/modules/audio_processing/aec3/aec_state.cc @@ -40,11 +40,6 @@ bool EnableEnforcingDelayAfterRealignment() { "WebRTC-Aec3EnforceDelayAfterRealignmentKillSwitch"); } -bool EnableLinearModeWithDivergedFilter() { - return !field_trial::IsEnabled( - "WebRTC-Aec3LinearModeWithDivergedFilterKillSwitch"); -} - bool EnableEarlyFilterUsage() { return !field_trial::IsEnabled("WebRTC-Aec3EarlyLinearFilterUsageKillSwitch"); } @@ -53,25 +48,11 @@ bool EnableShortInitialState() { return !field_trial::IsEnabled("WebRTC-Aec3ShortInitialStateKillSwitch"); } -bool EnableNoWaitForAlignment() { - return !field_trial::IsEnabled("WebRTC-Aec3NoAlignmentWaitKillSwitch"); -} - -bool EnableConvergenceTriggeredLinearMode() { - return !field_trial::IsEnabled( - "WebRTC-Aec3ConvergenceTriggingLinearKillSwitch"); -} - bool EnableUncertaintyUntilSufficientAdapted() { return !field_trial::IsEnabled( "WebRTC-Aec3ErleUncertaintyUntilSufficientlyAdaptedKillSwitch"); } -bool TreatTransparentModeAsNonlinear() { - return !field_trial::IsEnabled( - "WebRTC-Aec3TreatTransparentModeAsNonlinearKillSwitch"); -} - bool LowUncertaintyBeforeConvergence() { return !field_trial::IsEnabled( "WebRTC-Aec3LowUncertaintyBeforeConvergenceKillSwitch"); @@ -87,11 +68,6 @@ bool EarlyEntryToConvergedMode() { "WebRTC-Aec3EarlyEntryToConvergedModeKillSwitch"); } -bool ConservativeFilterDivergence() { - return !field_trial::IsEnabled( - "WebRTC-Aec3ConservativeFilterDivergenceKillSwitch"); -} - bool UseEarlyLimiterDeactivation() { return !field_trial::IsEnabled( "WebRTC-Aec3EarlyLimiterDeactivationKillSwitch"); @@ -128,25 +104,18 @@ AecState::AecState(const EchoCanceller3Config& config) EnableStationaryRenderImprovements() && config_.echo_audibility.use_stationary_properties), enforce_delay_after_realignment_(EnableEnforcingDelayAfterRealignment()), - allow_linear_mode_with_diverged_filter_( - EnableLinearModeWithDivergedFilter()), early_filter_usage_activated_(EnableEarlyFilterUsage() && !config.filter.conservative_initial_phase), use_short_initial_state_(EnableShortInitialState() && !config.filter.conservative_initial_phase), convergence_trigger_linear_mode_( - EnableConvergenceTriggeredLinearMode() && !config.filter.conservative_initial_phase), no_alignment_required_for_linear_mode_( - EnableNoWaitForAlignment() && !config.filter.conservative_initial_phase), use_uncertainty_until_sufficiently_adapted_( EnableUncertaintyUntilSufficientAdapted()), - transparent_mode_enforces_nonlinear_mode_( - TreatTransparentModeAsNonlinear()), uncertainty_before_convergence_(UncertaintyBeforeConvergence()), early_entry_to_converged_mode_(EarlyEntryToConvergedMode()), - conservative_filter_divergence_(ConservativeFilterDivergence()), early_limiter_deactivation_(UseEarlyLimiterDeactivation()), erle_estimator_(config.erle.min, config.erle.max_l, config.erle.max_h), max_render_(config_.filter.main.length_blocks, 0.f), @@ -166,7 +135,6 @@ void AecState::HandleEchoPathChange( filter_analyzer_.Reset(); blocks_since_last_saturation_ = 0; usable_linear_estimate_ = false; - diverged_linear_filter_ = false; capture_signal_saturation_ = false; echo_saturation_ = false; std::fill(max_render_.begin(), max_render_.end(), 0.f); @@ -378,24 +346,11 @@ void AecState::Update( if (!config_.echo_removal_control.linear_and_stable_echo_path) { usable_linear_estimate_ = usable_linear_estimate_ && recently_converged_filter; - if (!allow_linear_mode_with_diverged_filter_) { - usable_linear_estimate_ = usable_linear_estimate_ && !diverged_filter; - } - } - if (transparent_mode_enforces_nonlinear_mode_) { - usable_linear_estimate_ = usable_linear_estimate_ && !TransparentMode(); } + usable_linear_estimate_ = usable_linear_estimate_ && !TransparentMode(); use_linear_filter_output_ = usable_linear_estimate_ && !TransparentMode(); - if (conservative_filter_divergence_) { - diverged_linear_filter_ = - subtractor_output_analyzer_.SeverelyDivergedFilter() && - active_render_block; - } else { - diverged_linear_filter_ = diverged_filter; - } - const bool stationary_block = use_stationary_properties_ && echo_audibility_.IsBlockStationary(); diff --git a/modules/audio_processing/aec3/aec_state.h b/modules/audio_processing/aec3/aec_state.h index 0339efbf38..9171f0b8ff 100644 --- a/modules/audio_processing/aec3/aec_state.h +++ b/modules/audio_processing/aec3/aec_state.h @@ -171,16 +171,13 @@ class AecState { const bool allow_transparent_mode_; const bool use_stationary_properties_; const bool enforce_delay_after_realignment_; - const bool allow_linear_mode_with_diverged_filter_; const bool early_filter_usage_activated_; const bool use_short_initial_state_; const bool convergence_trigger_linear_mode_; const bool no_alignment_required_for_linear_mode_; const bool use_uncertainty_until_sufficiently_adapted_; - const bool transparent_mode_enforces_nonlinear_mode_; const float uncertainty_before_convergence_; const bool early_entry_to_converged_mode_; - const bool conservative_filter_divergence_; const bool early_limiter_deactivation_; ErlEstimator erl_estimator_; ErleEstimator erle_estimator_; @@ -189,7 +186,6 @@ class AecState { size_t blocks_with_proper_filter_adaptation_ = 0; size_t blocks_with_active_render_ = 0; bool usable_linear_estimate_ = false; - bool diverged_linear_filter_ = false; bool capture_signal_saturation_ = false; bool echo_saturation_ = false; bool transparent_mode_ = false; diff --git a/modules/audio_processing/aec3/subtractor_output_analyzer.cc b/modules/audio_processing/aec3/subtractor_output_analyzer.cc index 93675f5f6b..3cacb45630 100644 --- a/modules/audio_processing/aec3/subtractor_output_analyzer.cc +++ b/modules/audio_processing/aec3/subtractor_output_analyzer.cc @@ -36,19 +36,16 @@ void SubtractorOutputAnalyzer::Update( constexpr float kConvergenceThreshold = 50 * 50 * kBlockSize; main_filter_converged_ = e2_main < 0.5f * y2 && y2 > kConvergenceThreshold; shadow_filter_converged_ = - e2_shadow < 0.05 * y2 && y2 > kConvergenceThreshold; + e2_shadow < 0.05f * y2 && y2 > kConvergenceThreshold; float min_e2 = strict_divergence_check_ ? std::min(e2_main, e2_shadow) : e2_main; filter_diverged_ = min_e2 > 1.5f * y2 && y2 > 30.f * 30.f * kBlockSize; - filter_severely_diverged_ = - min_e2 > 1.5f * y2 && y2 > 200.f * 200.f * kBlockSize; } void SubtractorOutputAnalyzer::HandleEchoPathChange() { shadow_filter_converged_ = false; main_filter_converged_ = false; filter_diverged_ = false; - filter_severely_diverged_ = false; } } // namespace webrtc diff --git a/modules/audio_processing/aec3/subtractor_output_analyzer.h b/modules/audio_processing/aec3/subtractor_output_analyzer.h index b9a2445ea6..b59a68e5e6 100644 --- a/modules/audio_processing/aec3/subtractor_output_analyzer.h +++ b/modules/audio_processing/aec3/subtractor_output_analyzer.h @@ -30,7 +30,6 @@ class SubtractorOutputAnalyzer { } bool DivergedFilter() const { return filter_diverged_; } - bool SeverelyDivergedFilter() const { return filter_severely_diverged_; } // Handle echo path change. void HandleEchoPathChange(); @@ -40,7 +39,6 @@ class SubtractorOutputAnalyzer { bool shadow_filter_converged_ = false; bool main_filter_converged_ = false; bool filter_diverged_ = false; - bool filter_severely_diverged_ = false; }; } // namespace webrtc