AudioProcessing: Make minimum and maximum analog levels non-configurable
Remove analog_level_minimum and analog_level_maximum from
AudioProcessing GainController1 and replace their use with fixed
values 0 and 255, respectively.
Bug: webrtc:12774
Change-Id: Ia4bfe5ed43a65f1587ed67f36bfbb2966b6fdf26
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/235822
Commit-Queue: Hanna Silen <silen@webrtc.org>
Reviewed-by: Per Ã…hgren <peah@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35297}
diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc
index 7ce5063..ad72aae 100644
--- a/media/engine/webrtc_voice_engine.cc
+++ b/media/engine/webrtc_voice_engine.cc
@@ -609,10 +609,6 @@
apm_config.gain_controller1.mode =
apm_config.gain_controller1.kAdaptiveAnalog;
#endif
- constexpr int kMinVolumeLevel = 0;
- constexpr int kMaxVolumeLevel = 255;
- apm_config.gain_controller1.analog_level_minimum = kMinVolumeLevel;
- apm_config.gain_controller1.analog_level_maximum = kMaxVolumeLevel;
}
if (options.tx_agc_target_dbov) {
apm_config.gain_controller1.target_level_dbfs = *options.tx_agc_target_dbov;
diff --git a/media/engine/webrtc_voice_engine_unittest.cc b/media/engine/webrtc_voice_engine_unittest.cc
index 088dba2..97e46b2 100644
--- a/media/engine/webrtc_voice_engine_unittest.cc
+++ b/media/engine/webrtc_voice_engine_unittest.cc
@@ -760,8 +760,6 @@
void VerifyGainControlEnabledCorrectly() {
EXPECT_TRUE(apm_config_.gain_controller1.enabled);
EXPECT_EQ(kDefaultAgcMode, apm_config_.gain_controller1.mode);
- EXPECT_EQ(0, apm_config_.gain_controller1.analog_level_minimum);
- EXPECT_EQ(255, apm_config_.gain_controller1.analog_level_maximum);
}
void VerifyGainControlDefaultSettings() {
diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc
index e731943..2b02a23 100644
--- a/modules/audio_processing/audio_processing_impl.cc
+++ b/modules/audio_processing/audio_processing_impl.cc
@@ -1867,7 +1867,6 @@
submodules_.gain_control->Initialize(num_proc_channels(),
proc_sample_rate_hz());
-
if (!config_.gain_controller1.analog_gain_controller.enabled) {
int error = submodules_.gain_control->set_mode(
Agc1ConfigModeToInterfaceMode(config_.gain_controller1.mode));
@@ -1881,9 +1880,10 @@
error = submodules_.gain_control->enable_limiter(
config_.gain_controller1.enable_limiter);
RTC_DCHECK_EQ(kNoError, error);
+ constexpr int kAnalogLevelMinimum = 0;
+ constexpr int kAnalogLevelMaximum = 255;
error = submodules_.gain_control->set_analog_level_limits(
- config_.gain_controller1.analog_level_minimum,
- config_.gain_controller1.analog_level_maximum);
+ kAnalogLevelMinimum, kAnalogLevelMaximum);
RTC_DCHECK_EQ(kNoError, error);
submodules_.agc_manager.reset();
diff --git a/modules/audio_processing/audio_processing_unittest.cc b/modules/audio_processing/audio_processing_unittest.cc
index 9109e29..cfb19f9 100644
--- a/modules/audio_processing/audio_processing_unittest.cc
+++ b/modules/audio_processing/audio_processing_unittest.cc
@@ -200,8 +200,6 @@
apm_config.gain_controller1.enabled = true;
apm_config.gain_controller1.mode =
AudioProcessing::Config::GainController1::kAdaptiveAnalog;
- apm_config.gain_controller1.analog_level_minimum = 0;
- apm_config.gain_controller1.analog_level_maximum = 255;
#endif
apm_config.noise_suppression.enabled = true;
@@ -1079,18 +1077,15 @@
EXPECT_EQ(apm_->kNoError, ProcessStreamChooser(kFloatFormat));
}
- // Testing level limits
- std::array<int, 4> kMinLevels = {0, 0, 255, 65000};
- std::array<int, 4> kMaxLevels = {255, 1024, 65535, 65535};
- for (size_t i = 0; i < kMinLevels.size(); ++i) {
- int min_level = kMinLevels[i];
- int max_level = kMaxLevels[i];
- config.gain_controller1.analog_level_minimum = min_level;
- config.gain_controller1.analog_level_maximum = max_level;
- apm_->ApplyConfig(config);
- apm_->set_stream_analog_level((min_level + max_level) / 2);
- EXPECT_EQ(apm_->kNoError, ProcessStreamChooser(kFloatFormat));
- }
+ // Testing level limits.
+ constexpr int kMinLevel = 0;
+ constexpr int kMaxLevel = 255;
+ apm_->set_stream_analog_level(kMinLevel);
+ EXPECT_EQ(apm_->kNoError, ProcessStreamChooser(kFloatFormat));
+ apm_->set_stream_analog_level((kMinLevel + kMaxLevel) / 2);
+ EXPECT_EQ(apm_->kNoError, ProcessStreamChooser(kFloatFormat));
+ apm_->set_stream_analog_level(kMaxLevel);
+ EXPECT_EQ(apm_->kNoError, ProcessStreamChooser(kFloatFormat));
}
#if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
@@ -1124,44 +1119,18 @@
EXPECT_DEATH(apm_->ApplyConfig(config), "");
}
-TEST_F(ApmDeathTest, GainControlDiesOnTooLowAnalogLevelLowerLimit) {
- auto config = apm_->GetConfig();
- config.gain_controller1.enabled = true;
- config.gain_controller1.analog_level_minimum = -1;
- EXPECT_DEATH(apm_->ApplyConfig(config), "");
-}
-
-TEST_F(ApmDeathTest, GainControlDiesOnTooHighAnalogLevelUpperLimit) {
- auto config = apm_->GetConfig();
- config.gain_controller1.enabled = true;
- config.gain_controller1.analog_level_maximum = 65536;
- EXPECT_DEATH(apm_->ApplyConfig(config), "");
-}
-
-TEST_F(ApmDeathTest, GainControlDiesOnInvertedAnalogLevelLimits) {
- auto config = apm_->GetConfig();
- config.gain_controller1.enabled = true;
- config.gain_controller1.analog_level_minimum = 512;
- config.gain_controller1.analog_level_maximum = 255;
- EXPECT_DEATH(apm_->ApplyConfig(config), "");
-}
-
TEST_F(ApmDeathTest, ApmDiesOnTooLowAnalogLevel) {
auto config = apm_->GetConfig();
config.gain_controller1.enabled = true;
- config.gain_controller1.analog_level_minimum = 255;
- config.gain_controller1.analog_level_maximum = 512;
apm_->ApplyConfig(config);
- EXPECT_DEATH(apm_->set_stream_analog_level(254), "");
+ EXPECT_DEATH(apm_->set_stream_analog_level(-1), "");
}
TEST_F(ApmDeathTest, ApmDiesOnTooHighAnalogLevel) {
auto config = apm_->GetConfig();
config.gain_controller1.enabled = true;
- config.gain_controller1.analog_level_minimum = 255;
- config.gain_controller1.analog_level_maximum = 512;
apm_->ApplyConfig(config);
- EXPECT_DEATH(apm_->set_stream_analog_level(513), "");
+ EXPECT_DEATH(apm_->set_stream_analog_level(256), "");
}
#endif
@@ -2928,14 +2897,6 @@
b.enable_limiter = a.enable_limiter;
EXPECT_EQ(a, b);
- a.analog_level_minimum++;
- b.analog_level_minimum = a.analog_level_minimum;
- EXPECT_EQ(a, b);
-
- a.analog_level_maximum--;
- b.analog_level_maximum = a.analog_level_maximum;
- EXPECT_EQ(a, b);
-
auto& a_analog = a.analog_gain_controller;
auto& b_analog = b.analog_gain_controller;
@@ -2982,14 +2943,6 @@
EXPECT_NE(a, b);
a = b;
- a.analog_level_minimum++;
- EXPECT_NE(a, b);
- a = b;
-
- a.analog_level_maximum--;
- EXPECT_NE(a, b);
- a = b;
-
auto& a_analog = a.analog_gain_controller;
const auto& b_analog = b.analog_gain_controller;
diff --git a/modules/audio_processing/include/audio_processing.cc b/modules/audio_processing/include/audio_processing.cc
index 63244ed..0fd18fd 100644
--- a/modules/audio_processing/include/audio_processing.cc
+++ b/modules/audio_processing/include/audio_processing.cc
@@ -60,8 +60,6 @@
target_level_dbfs == rhs.target_level_dbfs &&
compression_gain_db == rhs.compression_gain_db &&
enable_limiter == rhs.enable_limiter &&
- analog_level_minimum == rhs.analog_level_minimum &&
- analog_level_maximum == rhs.analog_level_maximum &&
analog_lhs.enabled == analog_rhs.enabled &&
analog_lhs.startup_min_volume == analog_rhs.startup_min_volume &&
analog_lhs.clipped_level_min == analog_rhs.clipped_level_min &&
@@ -153,8 +151,6 @@
<< ", target_level_dbfs: " << gain_controller1.target_level_dbfs
<< ", compression_gain_db: " << gain_controller1.compression_gain_db
<< ", enable_limiter: " << gain_controller1.enable_limiter
- << ", analog_level_minimum: " << gain_controller1.analog_level_minimum
- << ", analog_level_maximum: " << gain_controller1.analog_level_maximum
<< ", analog_gain_controller { enabled: "
<< gain_controller1.analog_gain_controller.enabled
<< ", startup_min_volume: "
diff --git a/modules/audio_processing/include/audio_processing.h b/modules/audio_processing/include/audio_processing.h
index ac9cea4..b3ef3af 100644
--- a/modules/audio_processing/include/audio_processing.h
+++ b/modules/audio_processing/include/audio_processing.h
@@ -291,10 +291,6 @@
// target level. Otherwise, the signal will be compressed but not limited
// above the target level.
bool enable_limiter = true;
- // Sets the minimum and maximum analog levels of the audio capture device.
- // Must be set if an analog mode is used. Limited to [0, 65535].
- int analog_level_minimum = 0;
- int analog_level_maximum = 255;
// Enables the analog gain controller functionality.
struct AnalogGainController {
@@ -621,7 +617,7 @@
// This must be called prior to ProcessStream() if and only if adaptive analog
// gain control is enabled, to pass the current analog level from the audio
- // HAL. Must be within the range provided in Config::GainController1.
+ // HAL. Must be within the range [0, 255].
virtual void set_stream_analog_level(int level) = 0;
// When an analog mode is set, this should be called after ProcessStream()