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:
Gustaf Ullberg 2018-08-27 14:38:28 +02:00 committed by Commit Bot
parent d8111e2169
commit 9ed9792def
4 changed files with 2 additions and 56 deletions

View File

@ -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();

View File

@ -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;

View File

@ -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

View File

@ -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