Remove unused audio options and corresponding media constraints

- experimental AGC (aka googAutoGainControl2) removed in [1]
- experimental NS (aka googNoiseSuppression2) removed in [2]
- typing noise detection (aka googTypingNoiseDetection)
  removed in [3]
- cricket::AudioOptions::tx_agc_ are unused

[1] https://webrtc-review.googlesource.com/c/src/+/219463
[2] https://webrtc-review.googlesource.com/c/src/+/232128
[3] https://chromium-review.googlesource.com/c/chromium/src/+/1617352

Bug: webrtc:11226
Change-Id: Id1ecef3d3e193c210fc11832e16db4f84d866d14
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/250680
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35987}
This commit is contained in:
Alessio Bazzica 2022-02-14 10:21:31 +01:00 committed by WebRTC LUCI CQ
parent 63472e5aea
commit 93348d89bc
7 changed files with 3 additions and 124 deletions

View file

@ -55,13 +55,7 @@ void AudioOptions::SetAll(const AudioOptions& change) {
SetFrom(&audio_jitter_buffer_enable_rtx_handling,
change.audio_jitter_buffer_enable_rtx_handling);
SetFrom(&typing_detection, change.typing_detection);
SetFrom(&experimental_agc, change.experimental_agc);
SetFrom(&experimental_ns, change.experimental_ns);
SetFrom(&residual_echo_detector, change.residual_echo_detector);
SetFrom(&tx_agc_target_dbov, change.tx_agc_target_dbov);
SetFrom(&tx_agc_digital_compression_gain,
change.tx_agc_digital_compression_gain);
SetFrom(&tx_agc_limiter, change.tx_agc_limiter);
SetFrom(&combined_audio_video_bwe, change.combined_audio_video_bwe);
SetFrom(&audio_network_adaptor, change.audio_network_adaptor);
SetFrom(&audio_network_adaptor_config, change.audio_network_adaptor_config);
@ -85,12 +79,7 @@ bool AudioOptions::operator==(const AudioOptions& o) const {
audio_jitter_buffer_enable_rtx_handling ==
o.audio_jitter_buffer_enable_rtx_handling &&
typing_detection == o.typing_detection &&
experimental_agc == o.experimental_agc &&
experimental_ns == o.experimental_ns &&
residual_echo_detector == o.residual_echo_detector &&
tx_agc_target_dbov == o.tx_agc_target_dbov &&
tx_agc_digital_compression_gain == o.tx_agc_digital_compression_gain &&
tx_agc_limiter == o.tx_agc_limiter &&
combined_audio_video_bwe == o.combined_audio_video_bwe &&
audio_network_adaptor == o.audio_network_adaptor &&
audio_network_adaptor_config == o.audio_network_adaptor_config &&
@ -119,13 +108,7 @@ std::string AudioOptions::ToString() const {
ToStringIfSet(&result, "audio_jitter_buffer_enable_rtx_handling",
audio_jitter_buffer_enable_rtx_handling);
ToStringIfSet(&result, "typing", typing_detection);
ToStringIfSet(&result, "experimental_agc", experimental_agc);
ToStringIfSet(&result, "experimental_ns", experimental_ns);
ToStringIfSet(&result, "residual_echo_detector", residual_echo_detector);
ToStringIfSet(&result, "tx_agc_target_dbov", tx_agc_target_dbov);
ToStringIfSet(&result, "tx_agc_digital_compression_gain",
tx_agc_digital_compression_gain);
ToStringIfSet(&result, "tx_agc_limiter", tx_agc_limiter);
ToStringIfSet(&result, "combined_audio_video_bwe", combined_audio_video_bwe);
ToStringIfSet(&result, "audio_network_adaptor", audio_network_adaptor);
ToStringIfSet(&result, "init_recording_on_send", init_recording_on_send);

View file

@ -64,16 +64,10 @@ struct RTC_EXPORT AudioOptions {
// TODO(bugs.webrtc.org/11226): Remove.
// Audio processing to detect typing.
absl::optional<bool> typing_detection;
absl::optional<bool> experimental_agc;
absl::optional<bool> experimental_ns;
// TODO(bugs.webrtc.org/11539): Deprecated, replaced by
// webrtc::CreateEchoDetector() and injection when creating the audio
// processing module.
absl::optional<bool> residual_echo_detector;
// Note that tx_agc_* only applies to non-experimental AGC.
absl::optional<uint16_t> tx_agc_target_dbov;
absl::optional<uint16_t> tx_agc_digital_compression_gain;
absl::optional<bool> tx_agc_limiter;
// Enable combined audio+bandwidth BWE.
// TODO(pthatcher): This flag is set from the
// "googCombinedAudioVideoBwe", but not used anywhere. So delete it,

View file

@ -404,14 +404,12 @@ void WebRtcVoiceEngine::Init() {
options.noise_suppression = true;
options.typing_detection = true;
#endif
options.experimental_ns = false;
options.highpass_filter = true;
options.stereo_swapping = false;
options.audio_jitter_buffer_max_packets = 200;
options.audio_jitter_buffer_fast_accelerate = false;
options.audio_jitter_buffer_min_delay_ms = 0;
options.audio_jitter_buffer_enable_rtx_handling = false;
options.experimental_agc = false;
bool error = ApplyOptions(options);
RTC_DCHECK(error);
}
@ -464,17 +462,14 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
// Override noise suppression options for Android.
#if defined(WEBRTC_ANDROID)
options.typing_detection = false;
options.experimental_ns = false;
#endif
// Set and adjust gain control options.
#if defined(WEBRTC_IOS)
// On iOS, VPIO provides built-in AGC.
options.auto_gain_control = false;
options.experimental_agc = false;
RTC_LOG(LS_INFO) << "Always disable AGC on iOS. Use built-in instead.";
#elif defined(WEBRTC_ANDROID)
options.experimental_agc = false;
#endif
#if defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
@ -582,18 +577,8 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
return true;
}
if (options.experimental_ns) {
experimental_ns_ = options.experimental_ns;
}
webrtc::AudioProcessing::Config apm_config = ap->GetConfig();
#if !(defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS))
if (experimental_ns_.has_value()) {
apm_config.transient_suppression.enabled = experimental_ns_.value();
}
#endif
if (options.echo_cancellation) {
apm_config.echo_canceller.enabled = *options.echo_cancellation;
apm_config.echo_canceller.mobile_mode = use_mobile_software_aec;
@ -610,16 +595,6 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
apm_config.gain_controller1.kAdaptiveAnalog;
#endif
}
if (options.tx_agc_target_dbov) {
apm_config.gain_controller1.target_level_dbfs = *options.tx_agc_target_dbov;
}
if (options.tx_agc_digital_compression_gain) {
apm_config.gain_controller1.compression_gain_db =
*options.tx_agc_digital_compression_gain;
}
if (options.tx_agc_limiter) {
apm_config.gain_controller1.enable_limiter = *options.tx_agc_limiter;
}
if (options.highpass_filter) {
apm_config.high_pass_filter.enabled = *options.highpass_filter;

View file

@ -124,9 +124,6 @@ class WebRtcVoiceEngine final : public VoiceEngineInterface {
bool is_dumping_aec_ = false;
bool initialized_ = false;
// Cache experimental_ns and apply in case they are missing in the audio
// options.
absl::optional<bool> experimental_ns_;
// Jitter buffer settings for new streams.
size_t audio_jitter_buffer_max_packets_ = 200;
bool audio_jitter_buffer_fast_accelerate_ = false;

View file

@ -2474,58 +2474,6 @@ TEST_P(WebRtcVoiceEngineTestFake, PlayoutWithMultipleStreams) {
EXPECT_TRUE(channel_->RemoveRecvStream(kSsrcY));
}
TEST_P(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) {
EXPECT_TRUE(SetupSendStream());
EXPECT_CALL(*adm_, BuiltInAGCIsAvailable())
.Times(::testing::AtLeast(1))
.WillRepeatedly(Return(false));
if (!use_null_apm_) {
// Ensure default options.
VerifyGainControlEnabledCorrectly();
VerifyGainControlDefaultSettings();
}
const auto& agc_config = apm_config_.gain_controller1;
send_parameters_.options.auto_gain_control = false;
SetSendParameters(send_parameters_);
if (!use_null_apm_) {
EXPECT_FALSE(agc_config.enabled);
}
send_parameters_.options.auto_gain_control = absl::nullopt;
send_parameters_.options.tx_agc_target_dbov = 5;
SetSendParameters(send_parameters_);
if (!use_null_apm_) {
EXPECT_EQ(5, agc_config.target_level_dbfs);
}
send_parameters_.options.tx_agc_target_dbov = absl::nullopt;
send_parameters_.options.tx_agc_digital_compression_gain = 10;
SetSendParameters(send_parameters_);
if (!use_null_apm_) {
EXPECT_EQ(10, agc_config.compression_gain_db);
}
send_parameters_.options.tx_agc_digital_compression_gain = absl::nullopt;
send_parameters_.options.tx_agc_limiter = false;
SetSendParameters(send_parameters_);
if (!use_null_apm_) {
EXPECT_FALSE(agc_config.enable_limiter);
}
send_parameters_.options.tx_agc_limiter = absl::nullopt;
SetSendParameters(send_parameters_);
if (!use_null_apm_) {
// Expect all options to have been preserved.
EXPECT_FALSE(agc_config.enabled);
EXPECT_EQ(5, agc_config.target_level_dbfs);
EXPECT_EQ(10, agc_config.compression_gain_db);
EXPECT_FALSE(agc_config.enable_limiter);
}
}
TEST_P(WebRtcVoiceEngineTestFake, SetAudioNetworkAdaptorViaOptions) {
EXPECT_TRUE(SetupSendStream());
send_parameters_.options.audio_network_adaptor = true;

View file

@ -95,14 +95,8 @@ const char MediaConstraints::kValueFalse[] = "false";
// Audio constraints.
const char MediaConstraints::kGoogEchoCancellation[] = "googEchoCancellation";
const char MediaConstraints::kAutoGainControl[] = "googAutoGainControl";
const char MediaConstraints::kExperimentalAutoGainControl[] =
"googAutoGainControl2";
const char MediaConstraints::kNoiseSuppression[] = "googNoiseSuppression";
const char MediaConstraints::kExperimentalNoiseSuppression[] =
"googNoiseSuppression2";
const char MediaConstraints::kHighpassFilter[] = "googHighpassFilter";
const char MediaConstraints::kTypingNoiseDetection[] =
"googTypingNoiseDetection";
const char MediaConstraints::kAudioMirroring[] = "googAudioMirroring";
const char MediaConstraints::kAudioNetworkAdaptorConfig[] =
"googAudioNetworkAdaptorConfig";
@ -190,19 +184,10 @@ void CopyConstraintsIntoAudioOptions(const MediaConstraints* constraints,
&options->echo_cancellation);
ConstraintToOptional<bool>(constraints, MediaConstraints::kAutoGainControl,
&options->auto_gain_control);
ConstraintToOptional<bool>(constraints,
MediaConstraints::kExperimentalAutoGainControl,
&options->experimental_agc);
ConstraintToOptional<bool>(constraints, MediaConstraints::kNoiseSuppression,
&options->noise_suppression);
ConstraintToOptional<bool>(constraints,
MediaConstraints::kExperimentalNoiseSuppression,
&options->experimental_ns);
ConstraintToOptional<bool>(constraints, MediaConstraints::kHighpassFilter,
&options->highpass_filter);
ConstraintToOptional<bool>(constraints,
MediaConstraints::kTypingNoiseDetection,
&options->typing_detection);
ConstraintToOptional<bool>(constraints, MediaConstraints::kAudioMirroring,
&options->stereo_swapping);
ConstraintToOptional<std::string>(

View file

@ -59,12 +59,9 @@ class MediaConstraints {
// These keys are google specific.
static const char kGoogEchoCancellation[]; // googEchoCancellation
static const char kAutoGainControl[]; // googAutoGainControl
static const char kExperimentalAutoGainControl[]; // googAutoGainControl2
static const char kNoiseSuppression[]; // googNoiseSuppression
static const char kExperimentalNoiseSuppression[]; // googNoiseSuppression2
static const char kHighpassFilter[]; // googHighpassFilter
static const char kTypingNoiseDetection[]; // googTypingNoiseDetection
static const char kAutoGainControl[]; // googAutoGainControl
static const char kNoiseSuppression[]; // googNoiseSuppression
static const char kHighpassFilter[]; // googHighpassFilter
static const char kAudioMirroring[]; // googAudioMirroring
static const char
kAudioNetworkAdaptorConfig[]; // googAudioNetworkAdaptorConfig