Field trial to disable the transient suppressor

This change adds the field trial "WebRTC-TransientSuppressorForcedOff"
that can be used to disable the transient suppressor (removal of
keyboard typing sounds). The field trial can be enabled by users via
command-line or via experimentation.

Bug: chromium:1186705
Change-Id: I7272df6a20fbbee24a7ba0904502c76bd775d275
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219282
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34038}
This commit is contained in:
Gustaf Ullberg 2021-05-18 12:17:56 +02:00 committed by WebRTC LUCI CQ
parent a77e16ca2c
commit a399c823bb
2 changed files with 9 additions and 4 deletions

View File

@ -271,7 +271,8 @@ AudioProcessingImpl::AudioProcessingImpl(
!field_trial::IsEnabled( !field_trial::IsEnabled(
"WebRTC-ApmExperimentalMultiChannelCaptureKillSwitch"), "WebRTC-ApmExperimentalMultiChannelCaptureKillSwitch"),
EnforceSplitBandHpf(), EnforceSplitBandHpf(),
MinimizeProcessingForUnusedOutput()), MinimizeProcessingForUnusedOutput(),
field_trial::IsEnabled("WebRTC-TransientSuppressorForcedOff")),
capture_(), capture_(),
capture_nonlocked_() { capture_nonlocked_() {
RTC_LOG(LS_INFO) << "Injected APM submodules:" RTC_LOG(LS_INFO) << "Injected APM submodules:"
@ -1732,7 +1733,8 @@ bool AudioProcessingImpl::UpdateActiveSubmoduleStates() {
} }
void AudioProcessingImpl::InitializeTransientSuppressor() { void AudioProcessingImpl::InitializeTransientSuppressor() {
if (config_.transient_suppression.enabled) { if (config_.transient_suppression.enabled &&
!constants_.transient_suppressor_forced_off) {
// Attempt to create a transient suppressor, if one is not already created. // Attempt to create a transient suppressor, if one is not already created.
if (!submodules_.transient_suppressor) { if (!submodules_.transient_suppressor) {
submodules_.transient_suppressor = submodules_.transient_suppressor =

View File

@ -422,16 +422,19 @@ class AudioProcessingImpl : public AudioProcessing {
ApmConstants(bool multi_channel_render_support, ApmConstants(bool multi_channel_render_support,
bool multi_channel_capture_support, bool multi_channel_capture_support,
bool enforce_split_band_hpf, bool enforce_split_band_hpf,
bool minimize_processing_for_unused_output) bool minimize_processing_for_unused_output,
bool transient_suppressor_forced_off)
: multi_channel_render_support(multi_channel_render_support), : multi_channel_render_support(multi_channel_render_support),
multi_channel_capture_support(multi_channel_capture_support), multi_channel_capture_support(multi_channel_capture_support),
enforce_split_band_hpf(enforce_split_band_hpf), enforce_split_band_hpf(enforce_split_band_hpf),
minimize_processing_for_unused_output( minimize_processing_for_unused_output(
minimize_processing_for_unused_output) {} minimize_processing_for_unused_output),
transient_suppressor_forced_off(transient_suppressor_forced_off) {}
bool multi_channel_render_support; bool multi_channel_render_support;
bool multi_channel_capture_support; bool multi_channel_capture_support;
bool enforce_split_band_hpf; bool enforce_split_band_hpf;
bool minimize_processing_for_unused_output; bool minimize_processing_for_unused_output;
bool transient_suppressor_forced_off;
} constants_; } constants_;
struct ApmCaptureState { struct ApmCaptureState {