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;