APM: Add field trial parameters and rename
Add AGC2 digital adaptive config parameters in the field trial
"WebRTC-Audio-InputVolumeControllerExperiment". Rename it as
"WebRTC-Audio-GainController2" to reflect that the override now adjusts
the parameters for both input volume controller and adaptive digital
controller.
Bug: webrtc:7494
Change-Id: Ifbc1b8be76cf23b0b6b74b22b5167a45972cab38
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/286880
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Hanna Silen <silen@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38855}
diff --git a/modules/audio_processing/audio_processing_impl_unittest.cc b/modules/audio_processing/audio_processing_impl_unittest.cc
index 7a45c45..b394e93 100644
--- a/modules/audio_processing/audio_processing_impl_unittest.cc
+++ b/modules/audio_processing/audio_processing_impl_unittest.cc
@@ -1235,10 +1235,12 @@
EXPECT_EQ(ProcessInputVolume(*apm, kOneFrame, /*initial_volume=*/135), 135);
}
-TEST(AudioProcessingImplInputVolumeControllerExperimentTest,
+TEST(AudioProcessingImplGainController2FieldTrialTest,
ConfigAdjustedWhenExperimentEnabledAndAgc1AnalogEnabled) {
+ constexpr AudioProcessing::Config::GainController2::AdaptiveDigital
+ kDefaultAdaptiveDigitalConfig;
webrtc::test::ScopedFieldTrials field_trials(
- "WebRTC-Audio-InputVolumeControllerExperiment/"
+ "WebRTC-Audio-GainController2/"
"Enabled,"
"enable_clipping_predictor:true,"
"clipped_level_min:20,"
@@ -1249,7 +1251,11 @@
"target_range_min_dbfs:-70,"
"update_input_volume_wait_frames:80,"
"speech_probability_threshold:0.9,"
- "speech_ratio_threshold:1.0/");
+ "speech_ratio_threshold:1.0,"
+ "headroom_db:10,"
+ "max_gain_db:20,"
+ "max_gain_change_db_per_second:3,"
+ "max_output_noise_level_dbfs:-40/");
AudioProcessingBuilderForTesting apm_builder;
@@ -1275,6 +1281,8 @@
EXPECT_TRUE(adjusted_config.gain_controller2.enabled);
EXPECT_TRUE(adjusted_config.gain_controller2.adaptive_digital.enabled);
EXPECT_TRUE(adjusted_config.gain_controller2.input_volume_controller.enabled);
+ EXPECT_NE(adjusted_config.gain_controller2.adaptive_digital,
+ kDefaultAdaptiveDigitalConfig);
// Change config back and compare.
adjusted_config.gain_controller1.enabled = config.gain_controller1.enabled;
@@ -1285,14 +1293,18 @@
config.gain_controller2.adaptive_digital.enabled;
adjusted_config.gain_controller2.input_volume_controller.enabled =
config.gain_controller2.input_volume_controller.enabled;
+ adjusted_config.gain_controller2.adaptive_digital =
+ config.gain_controller2.adaptive_digital;
EXPECT_THAT(adjusted_config.ToString(), ::testing::StrEq(config.ToString()));
}
-TEST(AudioProcessingImplInputVolumeControllerExperimentTest,
+TEST(AudioProcessingImplGainController2FieldTrialTest,
ConfigAdjustedWhenExperimentEnabledAndHybridAgcEnabled) {
+ constexpr AudioProcessing::Config::GainController2::AdaptiveDigital
+ kDefaultAdaptiveDigitalConfig;
webrtc::test::ScopedFieldTrials field_trials(
- "WebRTC-Audio-InputVolumeControllerExperiment/"
+ "WebRTC-Audio-GainController2/"
"Enabled,"
"enable_clipping_predictor:true,"
"clipped_level_min:20,"
@@ -1303,7 +1315,11 @@
"target_range_min_dbfs:-70,"
"update_input_volume_wait_frames:80,"
"speech_probability_threshold:0.9,"
- "speech_ratio_threshold:1.0/");
+ "speech_ratio_threshold:1.0,"
+ "headroom_db:10,"
+ "max_gain_db:20,"
+ "max_gain_change_db_per_second:3,"
+ "max_output_noise_level_dbfs:-40/");
AudioProcessingBuilderForTesting apm_builder;
@@ -1331,6 +1347,8 @@
EXPECT_TRUE(adjusted_config.gain_controller2.enabled);
EXPECT_TRUE(adjusted_config.gain_controller2.adaptive_digital.enabled);
EXPECT_TRUE(adjusted_config.gain_controller2.input_volume_controller.enabled);
+ EXPECT_NE(adjusted_config.gain_controller2.adaptive_digital,
+ kDefaultAdaptiveDigitalConfig);
// Change config back and compare.
adjusted_config.gain_controller1.enabled = config.gain_controller1.enabled;
@@ -1341,14 +1359,16 @@
config.gain_controller2.adaptive_digital.enabled;
adjusted_config.gain_controller2.input_volume_controller.enabled =
config.gain_controller2.input_volume_controller.enabled;
+ adjusted_config.gain_controller2.adaptive_digital =
+ config.gain_controller2.adaptive_digital;
EXPECT_THAT(adjusted_config.ToString(), ::testing::StrEq(config.ToString()));
}
-TEST(AudioProcessingImplInputVolumeControllerExperimentTest,
+TEST(AudioProcessingImplGainController2FieldTrialTest,
ConfigNotAdjustedWhenExperimentEnabledAndAgc1AnalogNotEnabled) {
webrtc::test::ScopedFieldTrials field_trials(
- "WebRTC-Audio-InputVolumeControllerExperiment/"
+ "WebRTC-Audio-GainController2/"
"Enabled,"
"enable_clipping_predictor:true,"
"clipped_level_min:20,"
@@ -1359,7 +1379,11 @@
"target_range_min_dbfs:-70,"
"update_input_volume_wait_frames:80,"
"speech_probability_threshold:0.9,"
- "speech_ratio_threshold:1.0/");
+ "speech_ratio_threshold:1.0,"
+ "headroom_db:10,"
+ "max_gain_db:20,"
+ "max_gain_change_db_per_second:3,"
+ "max_output_noise_level_dbfs:-40/");
AudioProcessingBuilderForTesting apm_builder;
@@ -1393,10 +1417,10 @@
EXPECT_THAT(adjusted_config.ToString(), ::testing::StrEq(config.ToString()));
}
-TEST(AudioProcessingImplInputVolumeControllerExperimentTest,
+TEST(AudioProcessingImplGainController2FieldTrialTest,
ConfigNotAdjustedWhenExperimentEnabledAndHybridAgcNotEnabled) {
webrtc::test::ScopedFieldTrials field_trials(
- "WebRTC-Audio-InputVolumeControllerExperiment/"
+ "WebRTC-Audio-GainController2/"
"Enabled,"
"enable_clipping_predictor:true,"
"clipped_level_min:20,"
@@ -1407,7 +1431,11 @@
"target_range_min_dbfs:-70,"
"update_input_volume_wait_frames:80,"
"speech_probability_threshold:0.9,"
- "speech_ratio_threshold:1.0/");
+ "speech_ratio_threshold:1.0,"
+ "headroom_db:10,"
+ "max_gain_db:20,"
+ "max_gain_change_db_per_second:3,"
+ "max_output_noise_level_dbfs:-40/");
AudioProcessingBuilderForTesting apm_builder;
@@ -1443,7 +1471,7 @@
EXPECT_THAT(adjusted_config.ToString(), ::testing::StrEq(config.ToString()));
}
-TEST(AudioProcessingImplInputVolumeControllerExperimentTest,
+TEST(AudioProcessingImplGainController2FieldTrialTest,
ConfigNotAdjustedWhenExperimentNotEnabledAndAgc1AnalogEnabled) {
AudioProcessingBuilderForTesting apm_builder;
@@ -1477,7 +1505,7 @@
EXPECT_THAT(adjusted_config.ToString(), ::testing::StrEq(config.ToString()));
}
-TEST(AudioProcessingImplInputVolumeControllerExperimentTest,
+TEST(AudioProcessingImplGainController2FieldTrialTest,
ConfigNotAdjustedWhenExperimentNotEnabledAndHybridAgcEnabled) {
AudioProcessingBuilderForTesting apm_builder;