AGC2: rename AdaptiveDigitalGainApplier -> AdaptiveDigitalGainController

Bug: webrtc:7494
Change-Id: Id45495d1742f7d2027429c97a3b286468da99b1b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/287220
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Hanna Silen <silen@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38857}
diff --git a/modules/audio_processing/BUILD.gn b/modules/audio_processing/BUILD.gn
index 44082f7..79a0255 100644
--- a/modules/audio_processing/BUILD.gn
+++ b/modules/audio_processing/BUILD.gn
@@ -138,7 +138,7 @@
     "../../rtc_base:logging",
     "../../rtc_base:stringutils",
     "../../system_wrappers:field_trial",
-    "agc2:adaptive_digital_gain_applier",
+    "agc2:adaptive_digital_gain_controller",
     "agc2:cpu_features",
     "agc2:fixed_digital",
     "agc2:gain_applier",
@@ -420,7 +420,7 @@
         "../audio_coding:neteq_input_audio_tools",
         "aec_dump:mock_aec_dump_unittests",
         "agc:agc_unittests",
-        "agc2:adaptive_digital_gain_applier_unittest",
+        "agc2:adaptive_digital_gain_controller_unittest",
         "agc2:biquad_filter_unittests",
         "agc2:fixed_digital_unittests",
         "agc2:gain_applier_unittest",
diff --git a/modules/audio_processing/agc2/BUILD.gn b/modules/audio_processing/agc2/BUILD.gn
index b26d692..220f4d0 100644
--- a/modules/audio_processing/agc2/BUILD.gn
+++ b/modules/audio_processing/agc2/BUILD.gn
@@ -32,10 +32,10 @@
   ]
 }
 
-rtc_library("adaptive_digital_gain_applier") {
+rtc_library("adaptive_digital_gain_controller") {
   sources = [
-    "adaptive_digital_gain_applier.cc",
-    "adaptive_digital_gain_applier.h",
+    "adaptive_digital_gain_controller.cc",
+    "adaptive_digital_gain_controller.h",
   ]
 
   visibility = [
@@ -309,14 +309,14 @@
   ]
 }
 
-rtc_library("adaptive_digital_gain_applier_unittest") {
+rtc_library("adaptive_digital_gain_controller_unittest") {
   testonly = true
   configs += [ "..:apm_debug_dump" ]
 
-  sources = [ "adaptive_digital_gain_applier_unittest.cc" ]
+  sources = [ "adaptive_digital_gain_controller_unittest.cc" ]
 
   deps = [
-    ":adaptive_digital_gain_applier",
+    ":adaptive_digital_gain_controller",
     ":common",
     ":test_utils",
     "..:api",
diff --git a/modules/audio_processing/agc2/adaptive_digital_gain_applier.cc b/modules/audio_processing/agc2/adaptive_digital_gain_controller.cc
similarity index 96%
rename from modules/audio_processing/agc2/adaptive_digital_gain_applier.cc
rename to modules/audio_processing/agc2/adaptive_digital_gain_controller.cc
index a34f598..b8a99da 100644
--- a/modules/audio_processing/agc2/adaptive_digital_gain_applier.cc
+++ b/modules/audio_processing/agc2/adaptive_digital_gain_controller.cc
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "modules/audio_processing/agc2/adaptive_digital_gain_applier.h"
+#include "modules/audio_processing/agc2/adaptive_digital_gain_controller.h"
 
 #include <algorithm>
 
@@ -116,7 +116,7 @@
 
 }  // namespace
 
-AdaptiveDigitalGainApplier::AdaptiveDigitalGainApplier(
+AdaptiveDigitalGainController::AdaptiveDigitalGainController(
     ApmDataDumper* apm_data_dumper,
     const AudioProcessing::Config::GainController2::AdaptiveDigital& config,
     int sample_rate_hz,
@@ -139,8 +139,8 @@
   Initialize(sample_rate_hz, num_channels);
 }
 
-void AdaptiveDigitalGainApplier::Initialize(int sample_rate_hz,
-                                            int num_channels) {
+void AdaptiveDigitalGainController::Initialize(int sample_rate_hz,
+                                               int num_channels) {
   if (!config_.dry_run) {
     return;
   }
@@ -163,8 +163,8 @@
   }
 }
 
-void AdaptiveDigitalGainApplier::Process(const FrameInfo& info,
-                                         AudioFrameView<float> frame) {
+void AdaptiveDigitalGainController::Process(const FrameInfo& info,
+                                            AudioFrameView<float> frame) {
   RTC_DCHECK_GE(info.speech_level_dbfs, -150.0f);
   RTC_DCHECK_GE(frame.num_channels(), 1);
   RTC_DCHECK(
diff --git a/modules/audio_processing/agc2/adaptive_digital_gain_applier.h b/modules/audio_processing/agc2/adaptive_digital_gain_controller.h
similarity index 67%
rename from modules/audio_processing/agc2/adaptive_digital_gain_applier.h
rename to modules/audio_processing/agc2/adaptive_digital_gain_controller.h
index 0b1cceb..05b2ef9 100644
--- a/modules/audio_processing/agc2/adaptive_digital_gain_applier.h
+++ b/modules/audio_processing/agc2/adaptive_digital_gain_controller.h
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#ifndef MODULES_AUDIO_PROCESSING_AGC2_ADAPTIVE_DIGITAL_GAIN_APPLIER_H_
-#define MODULES_AUDIO_PROCESSING_AGC2_ADAPTIVE_DIGITAL_GAIN_APPLIER_H_
+#ifndef MODULES_AUDIO_PROCESSING_AGC2_ADAPTIVE_DIGITAL_GAIN_CONTROLLER_H_
+#define MODULES_AUDIO_PROCESSING_AGC2_ADAPTIVE_DIGITAL_GAIN_CONTROLLER_H_
 
 #include <vector>
 
@@ -21,30 +21,29 @@
 
 class ApmDataDumper;
 
-// TODO(bugs.webrtc.org/7494): Split into `GainAdaptor` and `GainApplier`.
 // Selects the target digital gain, decides when and how quickly to adapt to the
 // target and applies the current gain to 10 ms frames.
-class AdaptiveDigitalGainApplier {
+class AdaptiveDigitalGainController {
  public:
   // Information about a frame to process.
   struct FrameInfo {
-    float speech_probability;     // Probability of speech in the [0, 1] range.
-    float speech_level_dbfs;      // Estimated speech level (dBFS).
-    bool speech_level_reliable;   // True with reliable speech level estimation.
-    float noise_rms_dbfs;         // Estimated noise RMS level (dBFS).
-    float headroom_db;            // Headroom (dB).
+    float speech_probability;    // Probability of speech in the [0, 1] range.
+    float speech_level_dbfs;     // Estimated speech level (dBFS).
+    bool speech_level_reliable;  // True with reliable speech level estimation.
+    float noise_rms_dbfs;        // Estimated noise RMS level (dBFS).
+    float headroom_db;           // Headroom (dB).
     // TODO(bugs.webrtc.org/7494): Remove `limiter_envelope_dbfs`.
     float limiter_envelope_dbfs;  // Envelope level from the limiter (dBFS).
   };
 
-  AdaptiveDigitalGainApplier(
+  AdaptiveDigitalGainController(
       ApmDataDumper* apm_data_dumper,
       const AudioProcessing::Config::GainController2::AdaptiveDigital& config,
       int sample_rate_hz,
       int num_channels);
-  AdaptiveDigitalGainApplier(const AdaptiveDigitalGainApplier&) = delete;
-  AdaptiveDigitalGainApplier& operator=(const AdaptiveDigitalGainApplier&) =
-      delete;
+  AdaptiveDigitalGainController(const AdaptiveDigitalGainController&) = delete;
+  AdaptiveDigitalGainController& operator=(
+      const AdaptiveDigitalGainController&) = delete;
 
   void Initialize(int sample_rate_hz, int num_channels);
 
@@ -69,4 +68,4 @@
 
 }  // namespace webrtc
 
-#endif  // MODULES_AUDIO_PROCESSING_AGC2_ADAPTIVE_DIGITAL_GAIN_APPLIER_H_
+#endif  // MODULES_AUDIO_PROCESSING_AGC2_ADAPTIVE_DIGITAL_GAIN_CONTROLLER_H_
diff --git a/modules/audio_processing/agc2/adaptive_digital_gain_applier_unittest.cc b/modules/audio_processing/agc2/adaptive_digital_gain_controller_unittest.cc
similarity index 83%
rename from modules/audio_processing/agc2/adaptive_digital_gain_applier_unittest.cc
rename to modules/audio_processing/agc2/adaptive_digital_gain_controller_unittest.cc
index ea7485f..832be1e 100644
--- a/modules/audio_processing/agc2/adaptive_digital_gain_applier_unittest.cc
+++ b/modules/audio_processing/agc2/adaptive_digital_gain_controller_unittest.cc
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "modules/audio_processing/agc2/adaptive_digital_gain_applier.h"
+#include "modules/audio_processing/agc2/adaptive_digital_gain_controller.h"
 
 #include <algorithm>
 #include <memory>
@@ -48,28 +48,28 @@
 
 constexpr AdaptiveDigitalConfig kDefaultConfig{};
 
-// Helper to create initialized `AdaptiveDigitalGainApplier` objects.
+// Helper to create initialized `AdaptiveDigitalGainController` objects.
 struct GainApplierHelper {
   GainApplierHelper(const AdaptiveDigitalConfig& config,
                     int sample_rate_hz,
                     int num_channels)
       : apm_data_dumper(0),
         gain_applier(
-            std::make_unique<AdaptiveDigitalGainApplier>(&apm_data_dumper,
-                                                         config,
-                                                         sample_rate_hz,
-                                                         num_channels)) {}
+            std::make_unique<AdaptiveDigitalGainController>(&apm_data_dumper,
+                                                            config,
+                                                            sample_rate_hz,
+                                                            num_channels)) {}
   ApmDataDumper apm_data_dumper;
-  std::unique_ptr<AdaptiveDigitalGainApplier> gain_applier;
+  std::unique_ptr<AdaptiveDigitalGainController> gain_applier;
 };
 
 // Returns a `FrameInfo` sample to simulate noiseless speech detected with
 // maximum probability and with level, headroom and limiter envelope chosen
 // so that the resulting gain equals the default initial adaptive digital gain
 // i.e., no gain adaptation is expected.
-AdaptiveDigitalGainApplier::FrameInfo GetFrameInfoToNotAdapt(
+AdaptiveDigitalGainController::FrameInfo GetFrameInfoToNotAdapt(
     const AdaptiveDigitalConfig& config) {
-  AdaptiveDigitalGainApplier::FrameInfo info;
+  AdaptiveDigitalGainController::FrameInfo info;
   info.speech_probability = kMaxSpeechProbability;
   info.speech_level_dbfs = -config.initial_gain_db - config.headroom_db;
   info.speech_level_reliable = true;
@@ -79,7 +79,8 @@
   return info;
 }
 
-TEST(GainController2AdaptiveGainApplier, GainApplierShouldNotCrash) {
+TEST(GainController2AdaptiveDigitalGainControllerTest,
+     GainApplierShouldNotCrash) {
   GainApplierHelper helper(kDefaultConfig, /*sample_rate_hz=*/48000, kStereo);
   // Make one call with reasonable audio level values and settings.
   VectorFloatFrame fake_audio(kStereo, kFrameLen10ms48kHz, 10000.0f);
@@ -88,7 +89,7 @@
 }
 
 // Checks that the maximum allowed gain is applied.
-TEST(GainController2AdaptiveGainApplier, MaxGainApplied) {
+TEST(GainController2AdaptiveDigitalGainControllerTest, MaxGainApplied) {
   constexpr int kNumFramesToAdapt =
       static_cast<int>(kDefaultConfig.max_gain_db /
                        GetMaxGainChangePerFrameDb(
@@ -96,7 +97,7 @@
       kNumExtraFrames;
 
   GainApplierHelper helper(kDefaultConfig, /*sample_rate_hz=*/8000, kMono);
-  AdaptiveDigitalGainApplier::FrameInfo info =
+  AdaptiveDigitalGainController::FrameInfo info =
       GetFrameInfoToNotAdapt(kDefaultConfig);
   info.speech_level_dbfs = -60.0f;
   float applied_gain;
@@ -109,7 +110,7 @@
   EXPECT_NEAR(applied_gain_db, kDefaultConfig.max_gain_db, 0.1f);
 }
 
-TEST(GainController2AdaptiveGainApplier, GainDoesNotChangeFast) {
+TEST(GainController2AdaptiveDigitalGainControllerTest, GainDoesNotChangeFast) {
   GainApplierHelper helper(kDefaultConfig, /*sample_rate_hz=*/8000, kMono);
 
   constexpr float initial_level_dbfs = -25.0f;
@@ -125,7 +126,7 @@
   for (int i = 0; i < kNumFramesToAdapt; ++i) {
     SCOPED_TRACE(i);
     VectorFloatFrame fake_audio(kMono, kFrameLen10ms8kHz, 1.0f);
-    AdaptiveDigitalGainApplier::FrameInfo info =
+    AdaptiveDigitalGainController::FrameInfo info =
         GetFrameInfoToNotAdapt(kDefaultConfig);
     info.speech_level_dbfs = initial_level_dbfs;
     helper.gain_applier->Process(info, fake_audio.float_frame_view());
@@ -139,7 +140,7 @@
   for (int i = 0; i < kNumFramesToAdapt; ++i) {
     SCOPED_TRACE(i);
     VectorFloatFrame fake_audio(kMono, kFrameLen10ms8kHz, 1.0f);
-    AdaptiveDigitalGainApplier::FrameInfo info =
+    AdaptiveDigitalGainController::FrameInfo info =
         GetFrameInfoToNotAdapt(kDefaultConfig);
     info.speech_level_dbfs = 0.f;
     helper.gain_applier->Process(info, fake_audio.float_frame_view());
@@ -150,13 +151,13 @@
   }
 }
 
-TEST(GainController2AdaptiveGainApplier, GainIsRampedInAFrame) {
+TEST(GainController2AdaptiveDigitalGainControllerTest, GainIsRampedInAFrame) {
   GainApplierHelper helper(kDefaultConfig, /*sample_rate_hz=*/48000, kMono);
 
   constexpr float initial_level_dbfs = -25.0f;
 
   VectorFloatFrame fake_audio(kMono, kFrameLen10ms48kHz, 1.0f);
-  AdaptiveDigitalGainApplier::FrameInfo info =
+  AdaptiveDigitalGainController::FrameInfo info =
       GetFrameInfoToNotAdapt(kDefaultConfig);
   info.speech_level_dbfs = initial_level_dbfs;
   helper.gain_applier->Process(info, fake_audio.float_frame_view());
@@ -176,7 +177,7 @@
   EXPECT_LE(maximal_difference, max_change_per_sample);
 }
 
-TEST(GainController2AdaptiveGainApplier, NoiseLimitsGain) {
+TEST(GainController2AdaptiveDigitalGainControllerTest, NoiseLimitsGain) {
   GainApplierHelper helper(kDefaultConfig, /*sample_rate_hz=*/48000, kMono);
 
   constexpr float initial_level_dbfs = -25.0f;
@@ -190,7 +191,7 @@
 
   for (int i = 0; i < num_initial_frames + num_frames; ++i) {
     VectorFloatFrame fake_audio(kMono, kFrameLen10ms48kHz, 1.0f);
-    AdaptiveDigitalGainApplier::FrameInfo info =
+    AdaptiveDigitalGainController::FrameInfo info =
         GetFrameInfoToNotAdapt(kDefaultConfig);
     info.speech_level_dbfs = initial_level_dbfs;
     info.noise_rms_dbfs = kWithNoiseDbfs;
@@ -207,18 +208,19 @@
   }
 }
 
-TEST(GainController2GainApplier, CanHandlePositiveSpeechLevels) {
+TEST(GainController2AdaptiveDigitalGainControllerTest,
+     CanHandlePositiveSpeechLevels) {
   GainApplierHelper helper(kDefaultConfig, /*sample_rate_hz=*/48000, kStereo);
 
   // Make one call with positive audio level values and settings.
   VectorFloatFrame fake_audio(kStereo, kFrameLen10ms48kHz, 10000.0f);
-  AdaptiveDigitalGainApplier::FrameInfo info =
+  AdaptiveDigitalGainController::FrameInfo info =
       GetFrameInfoToNotAdapt(kDefaultConfig);
   info.speech_level_dbfs = 5.0f;
   helper.gain_applier->Process(info, fake_audio.float_frame_view());
 }
 
-TEST(GainController2GainApplier, AudioLevelLimitsGain) {
+TEST(GainController2AdaptiveDigitalGainControllerTest, AudioLevelLimitsGain) {
   GainApplierHelper helper(kDefaultConfig, /*sample_rate_hz=*/48000, kMono);
 
   constexpr float initial_level_dbfs = -25.0f;
@@ -232,7 +234,7 @@
 
   for (int i = 0; i < num_initial_frames + num_frames; ++i) {
     VectorFloatFrame fake_audio(kMono, kFrameLen10ms48kHz, 1.0f);
-    AdaptiveDigitalGainApplier::FrameInfo info =
+    AdaptiveDigitalGainController::FrameInfo info =
         GetFrameInfoToNotAdapt(kDefaultConfig);
     info.speech_level_dbfs = initial_level_dbfs;
     info.limiter_envelope_dbfs = 1.0f;
@@ -250,19 +252,21 @@
   }
 }
 
-class AdaptiveDigitalGainApplierTest : public ::testing::TestWithParam<int> {
+class AdaptiveDigitalGainControllerParametrizedTest
+    : public ::testing::TestWithParam<int> {
  protected:
   int adjacent_speech_frames_threshold() const { return GetParam(); }
 };
 
-TEST_P(AdaptiveDigitalGainApplierTest,
+TEST_P(AdaptiveDigitalGainControllerParametrizedTest,
        DoNotIncreaseGainWithTooFewSpeechFrames) {
   AdaptiveDigitalConfig config;
   config.adjacent_speech_frames_threshold = adjacent_speech_frames_threshold();
   GainApplierHelper helper(config, /*sample_rate_hz=*/48000, kMono);
 
   // Lower the speech level so that the target gain will be increased.
-  AdaptiveDigitalGainApplier::FrameInfo info = GetFrameInfoToNotAdapt(config);
+  AdaptiveDigitalGainController::FrameInfo info =
+      GetFrameInfoToNotAdapt(config);
   info.speech_level_dbfs -= 12.0f;
 
   float prev_gain = 0.0f;
@@ -278,13 +282,15 @@
   }
 }
 
-TEST_P(AdaptiveDigitalGainApplierTest, IncreaseGainWithEnoughSpeechFrames) {
+TEST_P(AdaptiveDigitalGainControllerParametrizedTest,
+       IncreaseGainWithEnoughSpeechFrames) {
   AdaptiveDigitalConfig config;
   config.adjacent_speech_frames_threshold = adjacent_speech_frames_threshold();
   GainApplierHelper helper(config, /*sample_rate_hz=*/48000, kMono);
 
   // Lower the speech level so that the target gain will be increased.
-  AdaptiveDigitalGainApplier::FrameInfo info = GetFrameInfoToNotAdapt(config);
+  AdaptiveDigitalGainController::FrameInfo info =
+      GetFrameInfoToNotAdapt(config);
   info.speech_level_dbfs -= 12.0f;
 
   float prev_gain = 0.0f;
@@ -304,17 +310,19 @@
 }
 
 INSTANTIATE_TEST_SUITE_P(GainController2,
-                         AdaptiveDigitalGainApplierTest,
+                         AdaptiveDigitalGainControllerParametrizedTest,
                          ::testing::Values(1, 7, 31));
 
 // Checks that the input is never modified when running in dry run mode.
-TEST(GainController2GainApplier, DryRunDoesNotChangeInput) {
+TEST(GainController2AdaptiveDigitalGainControllerTest,
+     DryRunDoesNotChangeInput) {
   AdaptiveDigitalConfig config;
   config.dry_run = true;
   GainApplierHelper helper(config, /*sample_rate_hz=*/8000, kMono);
 
   // Simulate an input signal with log speech level.
-  AdaptiveDigitalGainApplier::FrameInfo info = GetFrameInfoToNotAdapt(config);
+  AdaptiveDigitalGainController::FrameInfo info =
+      GetFrameInfoToNotAdapt(config);
   info.speech_level_dbfs = -60.0f;
   const int num_frames_to_adapt =
       static_cast<int>(
@@ -332,12 +340,14 @@
 }
 
 // Checks that no sample is modified before and after the sample rate changes.
-TEST(GainController2GainApplier, DryRunHandlesSampleRateChange) {
+TEST(GainController2AdaptiveDigitalGainControllerTest,
+     DryRunHandlesSampleRateChange) {
   AdaptiveDigitalConfig config;
   config.dry_run = true;
   GainApplierHelper helper(config, /*sample_rate_hz=*/8000, kMono);
 
-  AdaptiveDigitalGainApplier::FrameInfo info = GetFrameInfoToNotAdapt(config);
+  AdaptiveDigitalGainController::FrameInfo info =
+      GetFrameInfoToNotAdapt(config);
   info.speech_level_dbfs = -60.0f;
   constexpr float kPcmSamples = 123.456f;
   VectorFloatFrame fake_audio_8k(kMono, kFrameLen10ms8kHz, kPcmSamples);
@@ -351,12 +361,14 @@
 
 // Checks that no sample is modified before and after the number of channels
 // changes.
-TEST(GainController2GainApplier, DryRunHandlesNumChannelsChange) {
+TEST(GainController2AdaptiveDigitalGainControllerTest,
+     DryRunHandlesNumChannelsChange) {
   AdaptiveDigitalConfig config;
   config.dry_run = true;
   GainApplierHelper helper(config, /*sample_rate_hz=*/8000, kMono);
 
-  AdaptiveDigitalGainApplier::FrameInfo info = GetFrameInfoToNotAdapt(config);
+  AdaptiveDigitalGainController::FrameInfo info =
+      GetFrameInfoToNotAdapt(config);
   info.speech_level_dbfs = -60.0f;
   constexpr float kPcmSamples = 123.456f;
   VectorFloatFrame fake_audio_8k(kMono, kFrameLen10ms8kHz, kPcmSamples);
diff --git a/modules/audio_processing/gain_controller2.cc b/modules/audio_processing/gain_controller2.cc
index 6a57dca..d25ce7a 100644
--- a/modules/audio_processing/gain_controller2.cc
+++ b/modules/audio_processing/gain_controller2.cc
@@ -128,8 +128,10 @@
         config.adaptive_digital.adjacent_speech_frames_threshold,
         &data_dumper_);
     // Create controller.
-    adaptive_digital_controller_ = std::make_unique<AdaptiveDigitalGainApplier>(
-        &data_dumper_, config.adaptive_digital, sample_rate_hz, num_channels);
+    adaptive_digital_controller_ =
+        std::make_unique<AdaptiveDigitalGainController>(
+            &data_dumper_, config.adaptive_digital, sample_rate_hz,
+            num_channels);
   }
 }
 
diff --git a/modules/audio_processing/gain_controller2.h b/modules/audio_processing/gain_controller2.h
index fa4743c..7f22f4d 100644
--- a/modules/audio_processing/gain_controller2.h
+++ b/modules/audio_processing/gain_controller2.h
@@ -15,7 +15,7 @@
 #include <memory>
 #include <string>
 
-#include "modules/audio_processing/agc2/adaptive_digital_gain_applier.h"
+#include "modules/audio_processing/agc2/adaptive_digital_gain_controller.h"
 #include "modules/audio_processing/agc2/cpu_features.h"
 #include "modules/audio_processing/agc2/gain_applier.h"
 #include "modules/audio_processing/agc2/input_volume_controller.h"
@@ -92,8 +92,7 @@
   std::unique_ptr<InputVolumeController> input_volume_controller_;
   // TODO(bugs.webrtc.org/7494): Rename to `CrestFactorEstimator`.
   std::unique_ptr<SaturationProtector> saturation_protector_;
-  // TODO(bugs.webrtc.org/7494): Rename to `AdaptiveDigitalGainController`.
-  std::unique_ptr<AdaptiveDigitalGainApplier> adaptive_digital_controller_;
+  std::unique_ptr<AdaptiveDigitalGainController> adaptive_digital_controller_;
   Limiter limiter_;
 
   int calls_since_last_limiter_log_;