AEC3: Removing some old kill switches
Removing the some kill switches from the AEC3 codebase. CL is tested for bit exactness. Bug: webrtc:8671 Change-Id: I6ecdb1b5ccb05dca79bf0a0cd471f53d79d71d7e Reviewed-on: https://webrtc-review.googlesource.com/96181 Reviewed-by: Per Åhgren <peah@webrtc.org> Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24460}
This commit is contained in:
parent
d8111e2169
commit
9ed9792def
@ -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();
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user