InputVolumeController: Hardcode some digital gain parameters

In InputVolumeController/MonoInputVolumeController, set
min_digital_gain_db_ and disable_digital_adaptive_ to fixed values
ahead of replacing speech level target as well as digital gain
minimum and maximum with target range parameters.

In InputVolumeController, remove digital_adaptive_follows and
min_digital_gain_db from the config as they are no longer needed.

Bug: webrtc:7494
Change-Id: I1378b6e182224c41038c6d8c649e7a28961f73d4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/280962
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Hanna Silen <silen@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38554}
diff --git a/modules/audio_processing/agc2/input_volume_controller.cc b/modules/audio_processing/agc2/input_volume_controller.cc
index 4f969e9..0fb3c19 100644
--- a/modules/audio_processing/agc2/input_volume_controller.cc
+++ b/modules/audio_processing/agc2/input_volume_controller.cc
@@ -163,17 +163,12 @@
 
 }  // namespace
 
-MonoInputVolumeController::MonoInputVolumeController(
-    int startup_min_level,
-    int clipped_level_min,
-    bool disable_digital_adaptive,
-    int min_mic_level,
-    int max_digital_gain_db,
-    int min_digital_gain_db)
+MonoInputVolumeController::MonoInputVolumeController(int startup_min_level,
+                                                     int clipped_level_min,
+                                                     int min_mic_level,
+                                                     int max_digital_gain_db)
     : min_mic_level_(min_mic_level),
-      disable_digital_adaptive_(disable_digital_adaptive),
       max_digital_gain_db_(max_digital_gain_db),
-      min_digital_gain_db_(min_digital_gain_db),
       max_level_(kMaxMicLevel),
       startup_min_level_(ClampLevel(startup_min_level, min_mic_level_)),
       clipped_level_min_(clipped_level_min) {}
@@ -337,12 +332,7 @@
   frames_since_update_gain_ = 0;
 
   int raw_digital_gain = 0;
-  if (!disable_digital_adaptive_) {
-    rms_error += min_digital_gain_db_;
-
-    raw_digital_gain =
-        rtc::SafeClamp(rms_error, min_digital_gain_db_, max_digital_gain_db_);
-  }
+  raw_digital_gain = rtc::SafeClamp(rms_error, 0, max_digital_gain_db_);
 
   const int residual_gain =
       rtc::SafeClamp(rms_error - raw_digital_gain, -kMaxResidualGainChange,
@@ -366,7 +356,6 @@
       min_mic_level_override_(GetMinMicLevelOverride()),
       use_min_channel_level_(!UseMaxAnalogChannelLevel()),
       num_capture_channels_(num_capture_channels),
-      disable_digital_adaptive_(!config.digital_adaptive_follows),
       frames_since_clipped_(config.clipped_wait_frames),
       capture_output_used_(true),
       clipped_level_step_(config.clipped_level_step),
@@ -393,9 +382,8 @@
 
   for (auto& controller : channel_controllers_) {
     controller = std::make_unique<MonoInputVolumeController>(
-        config.startup_min_volume, config.clipped_level_min,
-        disable_digital_adaptive_, min_mic_level, config.max_digital_gain_db,
-        config.min_digital_gain_db);
+        config.startup_min_volume, config.clipped_level_min, min_mic_level,
+        config.max_digital_gain_db);
   }
 
   RTC_DCHECK(!channel_controllers_.empty());
diff --git a/modules/audio_processing/agc2/input_volume_controller.h b/modules/audio_processing/agc2/input_volume_controller.h
index 65c47a0..3d0be94 100644
--- a/modules/audio_processing/agc2/input_volume_controller.h
+++ b/modules/audio_processing/agc2/input_volume_controller.h
@@ -43,8 +43,6 @@
     // Lowest analog microphone level that will be applied in response to
     // clipping.
     int clipped_level_min = 70;
-    // If true, an adaptive digital gain is applied.
-    bool digital_adaptive_follows = true;
     // Amount the microphone level is lowered with every clipping event.
     // Limited to (0, 255].
     int clipped_level_step = 15;
@@ -56,10 +54,8 @@
     int clipped_wait_frames = 300;
     // Enables clipping prediction functionality.
     bool enable_clipping_predictor = false;
-    // Minimum and maximum digital gain used before input volume is
-    // adjusted.
+    // Maximum digital gain used before input volume is adjusted.
     int max_digital_gain_db = 30;
-    int min_digital_gain_db = 0;
   };
 
   // Ctor. `num_capture_channels` specifies the number of channels for the audio
@@ -158,9 +154,6 @@
   const bool use_min_channel_level_;
   const int num_capture_channels_;
 
-  // TODO(webrtc:7494): Replace with `digital_adaptive_follows_`.
-  const bool disable_digital_adaptive_;
-
   int frames_since_clipped_;
 
   // TODO(bugs.webrtc.org/7494): Create a separate member for the applied input
@@ -194,10 +187,8 @@
  public:
   MonoInputVolumeController(int startup_min_level,
                             int clipped_level_min,
-                            bool disable_digital_adaptive,
                             int min_mic_level,
-                            int max_digital_gain_db,
-                            int min_digital_gain_db);
+                            int max_digital_gain_db);
   ~MonoInputVolumeController();
   MonoInputVolumeController(const MonoInputVolumeController&) = delete;
   MonoInputVolumeController& operator=(const MonoInputVolumeController&) =
@@ -241,10 +232,7 @@
 
   const int min_mic_level_;
 
-  // TODO(webrtc:7494): Replace with `digital_adaptive_follows_`.
-  const bool disable_digital_adaptive_;
   const int max_digital_gain_db_;
-  const int min_digital_gain_db_;
 
   int level_ = 0;
   int max_level_;
diff --git a/modules/audio_processing/agc2/input_volume_controller_unittest.cc b/modules/audio_processing/agc2/input_volume_controller_unittest.cc
index 3657cd6..7c79921 100644
--- a/modules/audio_processing/agc2/input_volume_controller_unittest.cc
+++ b/modules/audio_processing/agc2/input_volume_controller_unittest.cc
@@ -45,7 +45,6 @@
 constexpr float kHighSpeechProbability = 0.7f;
 constexpr float kSpeechLevel = -25.0f;
 constexpr int kMaxDigitalGainDb = 12;
-constexpr int kMinDigitalGainDb = 0;
 
 constexpr float kMinSample = std::numeric_limits<int16_t>::min();
 constexpr float kMaxSample = std::numeric_limits<int16_t>::max();
@@ -68,13 +67,11 @@
       .enabled = true,
       .startup_min_volume = startup_min_volume,
       .clipped_level_min = kClippedMin,
-      .digital_adaptive_follows = true,
       .clipped_level_step = clipped_level_step,
       .clipped_ratio_threshold = clipped_ratio_threshold,
       .clipped_wait_frames = clipped_wait_frames,
       .enable_clipping_predictor = enable_clipping_predictor,
       .max_digital_gain_db = kMaxDigitalGainDb,
-      .min_digital_gain_db = kMinDigitalGainDb,
   };
 
   return std::make_unique<InputVolumeController>(/*num_capture_channels=*/1,
@@ -261,13 +258,11 @@
       .enabled = true,
       .startup_min_volume = kInitialInputVolume,
       .clipped_level_min = kClippedMin,
-      .digital_adaptive_follows = true,
       .clipped_level_step = kClippedLevelStep,
       .clipped_ratio_threshold = kClippedRatioThreshold,
       .clipped_wait_frames = kClippedWaitFrames,
       .enable_clipping_predictor = kDefaultClippingPredictorConfig.enabled,
       .max_digital_gain_db = kMaxDigitalGainDb,
-      .min_digital_gain_db = kMinDigitalGainDb,
   };
   return config;
 }
@@ -1139,7 +1134,6 @@
     InputVolumeControllerConfig config = kDefaultInputVolumeControllerConfig;
     config.enabled = true;
     config.startup_min_volume = kInitialInputVolume;
-    config.digital_adaptive_follows = true;
     config.clipped_level_step = 64;
     config.clipped_ratio_threshold = kClippedRatioThreshold;
     config.clipped_wait_frames = kClippedWaitFrames;
@@ -1206,7 +1200,6 @@
     InputVolumeControllerConfig config = kDefaultInputVolumeControllerConfig;
     config.enabled = true;
     config.startup_min_volume = kInitialInputVolume;
-    config.digital_adaptive_follows = true;
     config.clipped_level_step = 64;
     config.clipped_ratio_threshold = kClippedRatioThreshold;
     config.clipped_wait_frames = kClippedWaitFrames;