AGC2 adaptive digital controller config clean-up

- Remove dry-run option
- Hard-code `adjacent_speech_frames_threshold` and
  `vad_reset_period_ms`
- Expose `initial_gain_db` via field trial

Tested: adaptive digital controller bit-exactness verified

Bug: webrtc:7494
Change-Id: I6166611f91320b6c37de3f8e553c06c2ed95b772
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/287222
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Hanna Silen <silen@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38862}
diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc
index 3200ea4..18d4ad9 100644
--- a/modules/audio_processing/audio_processing_impl.cc
+++ b/modules/audio_processing/audio_processing_impl.cc
@@ -378,6 +378,9 @@
   FieldTrialConstrained<double> max_gain_db(
       "max_gain_db", kDefaultAdaptiveDigitalConfig.max_gain_db, 0,
       absl::nullopt);
+  FieldTrialConstrained<double> initial_gain_db(
+      "initial_gain_db", kDefaultAdaptiveDigitalConfig.initial_gain_db, 0,
+      absl::nullopt);
   FieldTrialConstrained<double> max_gain_change_db_per_second(
       "max_gain_change_db_per_second",
       kDefaultAdaptiveDigitalConfig.max_gain_change_db_per_second, 0,
@@ -392,46 +395,51 @@
   const std::string field_trial_name =
       field_trial::FindFullName(kFieldTrialName);
 
-  ParseFieldTrial({&enabled, &clipped_level_min, &clipped_level_step,
-                   &clipped_ratio_threshold, &clipped_wait_frames,
-                   &enable_clipping_predictor, &target_range_max_dbfs,
-                   &target_range_min_dbfs, &update_input_volume_wait_frames,
-                   &speech_probability_threshold, &speech_ratio_threshold,
-                   &headroom_db, &max_gain_db, &max_gain_change_db_per_second,
-                   &max_output_noise_level_dbfs},
-                  field_trial_name);
+  ParseFieldTrial(
+      {&enabled, &clipped_level_min, &clipped_level_step,
+       &clipped_ratio_threshold, &clipped_wait_frames,
+       &enable_clipping_predictor, &target_range_max_dbfs,
+       &target_range_min_dbfs, &update_input_volume_wait_frames,
+       &speech_probability_threshold, &speech_ratio_threshold, &headroom_db,
+       &max_gain_db, &initial_gain_db, &max_gain_change_db_per_second,
+       &max_output_noise_level_dbfs},
+      field_trial_name);
 
   // Checked already by `IsEnabled()` before parsing, therefore always true.
   RTC_DCHECK(enabled);
 
   return AudioProcessingImpl::GainController2ConfigOverride{
-      InputVolumeController::Config{
-          .clipped_level_min = static_cast<int>(clipped_level_min.Get()),
-          .clipped_level_step = static_cast<int>(clipped_level_step.Get()),
-          .clipped_ratio_threshold =
-              static_cast<float>(clipped_ratio_threshold.Get()),
-          .clipped_wait_frames = static_cast<int>(clipped_wait_frames.Get()),
-          .enable_clipping_predictor =
-              static_cast<bool>(enable_clipping_predictor.Get()),
-          .target_range_max_dbfs =
-              static_cast<int>(target_range_max_dbfs.Get()),
-          .target_range_min_dbfs =
-              static_cast<int>(target_range_min_dbfs.Get()),
-          .update_input_volume_wait_frames =
-              static_cast<int>(update_input_volume_wait_frames.Get()),
-          .speech_probability_threshold =
-              static_cast<float>(speech_probability_threshold.Get()),
-          .speech_ratio_threshold =
-              static_cast<float>(speech_ratio_threshold.Get()),
-      },
-      AudioProcessingImpl::GainController2ConfigOverride::AdaptiveDigitalConfig{
-          .headroom_db = static_cast<float>(headroom_db.Get()),
-          .max_gain_db = static_cast<float>(max_gain_db.Get()),
-          .max_gain_change_db_per_second =
-              static_cast<float>(max_gain_change_db_per_second.Get()),
-          .max_output_noise_level_dbfs =
-              static_cast<float>(max_output_noise_level_dbfs.Get()),
-      },
+      .input_volume_controller_config =
+          {
+              .clipped_level_min = static_cast<int>(clipped_level_min.Get()),
+              .clipped_level_step = static_cast<int>(clipped_level_step.Get()),
+              .clipped_ratio_threshold =
+                  static_cast<float>(clipped_ratio_threshold.Get()),
+              .clipped_wait_frames =
+                  static_cast<int>(clipped_wait_frames.Get()),
+              .enable_clipping_predictor =
+                  static_cast<bool>(enable_clipping_predictor.Get()),
+              .target_range_max_dbfs =
+                  static_cast<int>(target_range_max_dbfs.Get()),
+              .target_range_min_dbfs =
+                  static_cast<int>(target_range_min_dbfs.Get()),
+              .update_input_volume_wait_frames =
+                  static_cast<int>(update_input_volume_wait_frames.Get()),
+              .speech_probability_threshold =
+                  static_cast<float>(speech_probability_threshold.Get()),
+              .speech_ratio_threshold =
+                  static_cast<float>(speech_ratio_threshold.Get()),
+          },
+      .adaptive_digital_config =
+          {
+              .headroom_db = static_cast<float>(headroom_db.Get()),
+              .max_gain_db = static_cast<float>(max_gain_db.Get()),
+              .initial_gain_db = static_cast<float>(initial_gain_db.Get()),
+              .max_gain_change_db_per_second =
+                  static_cast<float>(max_gain_change_db_per_second.Get()),
+              .max_output_noise_level_dbfs =
+                  static_cast<float>(max_output_noise_level_dbfs.Get()),
+          },
   };
 }
 
@@ -489,21 +497,10 @@
       adjusted_config.gain_controller1.analog_gain_controller.enabled = false;
 
       adjusted_config.gain_controller2.enabled = true;
-      adjusted_config.gain_controller2.adaptive_digital.enabled = true;
       adjusted_config.gain_controller2.input_volume_controller.enabled = true;
-
-      auto& adjusted_adaptive_digital =  // Alias.
-          adjusted_config.gain_controller2.adaptive_digital;
-      const auto& adaptive_digital_override =  // Alias.
+      adjusted_config.gain_controller2.adaptive_digital =
           gain_controller2_config_override->adaptive_digital_config;
-      adjusted_adaptive_digital.headroom_db =
-          adaptive_digital_override.headroom_db;
-      adjusted_adaptive_digital.max_gain_db =
-          adaptive_digital_override.max_gain_db;
-      adjusted_adaptive_digital.max_gain_change_db_per_second =
-          adaptive_digital_override.max_gain_change_db_per_second;
-      adjusted_adaptive_digital.max_output_noise_level_dbfs =
-          adaptive_digital_override.max_output_noise_level_dbfs;
+      adjusted_config.gain_controller2.adaptive_digital.enabled = true;
     }
   }
 
@@ -2373,7 +2370,6 @@
     // TODO(bugs.webrtc.org/13663): Cache CPU features in APM and use here.
     submodules_.voice_activity_detector =
         std::make_unique<VoiceActivityDetectorWrapper>(
-            config_.gain_controller2.adaptive_digital.vad_reset_period_ms,
             submodules_.gain_controller2->GetCpuFeatures(),
             proc_fullband_sample_rate_hz());
   }