AGC2: Remove unused parameters
- `NoiseEstimator` and `LevelEstimator` enums - `vad_probability_attack` - `level_estimator_adjacent_speech_frames_threshold` - `use_saturation_protector` - `gain_applier_adjacent_speech_frames_threshold` - `initial_saturation_margin_db` - `extra_saturation_margin_db` Bug: webrtc:7494 Change-Id: I12e40c8efe2d2126d7597ec18a78cf9d5d39baf2 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/232903 Reviewed-by: Sam Zackrisson <saza@webrtc.org> Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org> Commit-Queue: Alessio Bazzica <alessiob@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35096}
This commit is contained in:
parent
f75f9c2b29
commit
1ac4f2a29e
@ -22,8 +22,6 @@ namespace {
|
||||
|
||||
using AdaptiveDigitalConfig =
|
||||
AudioProcessing::Config::GainController2::AdaptiveDigital;
|
||||
using NoiseEstimatorType =
|
||||
AudioProcessing::Config::GainController2::NoiseEstimator;
|
||||
|
||||
// Detects the available CPU features and applies any kill-switches.
|
||||
AvailableCpuFeatures GetAllowedCpuFeatures(
|
||||
@ -63,9 +61,6 @@ AdaptiveAgc::AdaptiveAgc(ApmDataDumper* apm_data_dumper,
|
||||
RTC_DCHECK(apm_data_dumper);
|
||||
RTC_DCHECK(noise_level_estimator_);
|
||||
RTC_DCHECK(saturation_protector_);
|
||||
if (!config.use_saturation_protector) {
|
||||
RTC_LOG(LS_WARNING) << "The saturation protector cannot be disabled.";
|
||||
}
|
||||
}
|
||||
|
||||
AdaptiveAgc::~AdaptiveAgc() = default;
|
||||
|
||||
@ -19,9 +19,6 @@
|
||||
namespace webrtc {
|
||||
namespace {
|
||||
|
||||
using LevelEstimatorType =
|
||||
AudioProcessing::Config::GainController2::LevelEstimator;
|
||||
|
||||
float ClampLevelEstimateDbfs(float level_estimate_dbfs) {
|
||||
return rtc::SafeClamp<float>(level_estimate_dbfs, -90.f, 30.f);
|
||||
}
|
||||
|
||||
@ -47,14 +47,13 @@ class AdaptiveModeLevelEstimator {
|
||||
inline bool operator!=(const LevelEstimatorState& s) const {
|
||||
return !(*this == s);
|
||||
}
|
||||
// TODO(bugs.webrtc.org/7494): Remove `time_to_confidence_ms` if redundant.
|
||||
int time_to_confidence_ms;
|
||||
struct Ratio {
|
||||
float numerator;
|
||||
float denominator;
|
||||
float GetRatio() const;
|
||||
};
|
||||
// TODO(crbug.com/webrtc/7494): Remove time_to_confidence_ms if redundant.
|
||||
int time_to_confidence_ms;
|
||||
Ratio level_dbfs;
|
||||
} level_dbfs;
|
||||
};
|
||||
static_assert(std::is_trivially_copyable<LevelEstimatorState>::value, "");
|
||||
|
||||
|
||||
@ -106,16 +106,8 @@ bool GainController2::Validate(
|
||||
const auto& fixed = config.fixed_digital;
|
||||
const auto& adaptive = config.adaptive_digital;
|
||||
return fixed.gain_db >= 0.f && fixed.gain_db < 50.f &&
|
||||
adaptive.vad_probability_attack > 0.f &&
|
||||
adaptive.vad_probability_attack <= 1.f &&
|
||||
adaptive.level_estimator_adjacent_speech_frames_threshold >= 1 &&
|
||||
adaptive.initial_saturation_margin_db >= 0.f &&
|
||||
adaptive.initial_saturation_margin_db <= 100.f &&
|
||||
adaptive.extra_saturation_margin_db >= 0.f &&
|
||||
adaptive.extra_saturation_margin_db <= 100.f &&
|
||||
adaptive.gain_applier_adjacent_speech_frames_threshold >= 1 &&
|
||||
adaptive.max_gain_change_db_per_second > 0.f &&
|
||||
adaptive.max_output_noise_level_dbfs <= 0.f;
|
||||
adaptive.max_gain_change_db_per_second > 0.0f &&
|
||||
adaptive.max_output_noise_level_dbfs <= 0.0f;
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
@ -129,64 +129,6 @@ TEST(GainController2, CheckFixedDigitalConfig) {
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
}
|
||||
|
||||
TEST(GainController2, CheckAdaptiveDigitalVadProbabilityAttackConfig) {
|
||||
AudioProcessing::Config::GainController2 config;
|
||||
// Reject invalid attack.
|
||||
config.adaptive_digital.vad_probability_attack = -123.f;
|
||||
EXPECT_FALSE(GainController2::Validate(config));
|
||||
config.adaptive_digital.vad_probability_attack = 0.f;
|
||||
EXPECT_FALSE(GainController2::Validate(config));
|
||||
config.adaptive_digital.vad_probability_attack = 42.f;
|
||||
EXPECT_FALSE(GainController2::Validate(config));
|
||||
// Accept valid attack.
|
||||
config.adaptive_digital.vad_probability_attack = 0.1f;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
config.adaptive_digital.vad_probability_attack = 1.f;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
}
|
||||
|
||||
TEST(GainController2,
|
||||
CheckAdaptiveDigitalLevelEstimatorSpeechFramesThresholdConfig) {
|
||||
AudioProcessing::Config::GainController2 config;
|
||||
config.adaptive_digital.level_estimator_adjacent_speech_frames_threshold = 0;
|
||||
EXPECT_FALSE(GainController2::Validate(config));
|
||||
config.adaptive_digital.level_estimator_adjacent_speech_frames_threshold = 1;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
config.adaptive_digital.level_estimator_adjacent_speech_frames_threshold = 7;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
}
|
||||
|
||||
TEST(GainController2, CheckAdaptiveDigitalInitialSaturationMarginConfig) {
|
||||
AudioProcessing::Config::GainController2 config;
|
||||
config.adaptive_digital.initial_saturation_margin_db = -1.f;
|
||||
EXPECT_FALSE(GainController2::Validate(config));
|
||||
config.adaptive_digital.initial_saturation_margin_db = 0.f;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
config.adaptive_digital.initial_saturation_margin_db = 50.f;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
}
|
||||
|
||||
TEST(GainController2, CheckAdaptiveDigitalExtraSaturationMarginConfig) {
|
||||
AudioProcessing::Config::GainController2 config;
|
||||
config.adaptive_digital.extra_saturation_margin_db = -1.f;
|
||||
EXPECT_FALSE(GainController2::Validate(config));
|
||||
config.adaptive_digital.extra_saturation_margin_db = 0.f;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
config.adaptive_digital.extra_saturation_margin_db = 50.f;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
}
|
||||
|
||||
TEST(GainController2,
|
||||
CheckAdaptiveDigitalGainApplierSpeechFramesThresholdConfig) {
|
||||
AudioProcessing::Config::GainController2 config;
|
||||
config.adaptive_digital.gain_applier_adjacent_speech_frames_threshold = 0;
|
||||
EXPECT_FALSE(GainController2::Validate(config));
|
||||
config.adaptive_digital.gain_applier_adjacent_speech_frames_threshold = 1;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
config.adaptive_digital.gain_applier_adjacent_speech_frames_threshold = 7;
|
||||
EXPECT_TRUE(GainController2::Validate(config));
|
||||
}
|
||||
|
||||
TEST(GainController2, CheckAdaptiveDigitalMaxGainChangeSpeedConfig) {
|
||||
AudioProcessing::Config::GainController2 config;
|
||||
config.adaptive_digital.max_gain_change_db_per_second = -1.f;
|
||||
|
||||
@ -356,9 +356,6 @@ class RTC_EXPORT AudioProcessing : public rtc::RefCountInterface {
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/webrtc/7494): Remove `LevelEstimator`.
|
||||
enum LevelEstimator { kRms, kPeak };
|
||||
enum NoiseEstimator { kStationaryNoise, kNoiseFloor };
|
||||
bool enabled = false;
|
||||
struct FixedDigital {
|
||||
float gain_db = 0.0f;
|
||||
@ -379,15 +376,6 @@ class RTC_EXPORT AudioProcessing : public rtc::RefCountInterface {
|
||||
bool sse2_allowed = true;
|
||||
bool avx2_allowed = true;
|
||||
bool neon_allowed = true;
|
||||
// TODO(crbug.com/webrtc/7494): Remove deprecated settings below.
|
||||
NoiseEstimator noise_estimator = kNoiseFloor;
|
||||
float vad_probability_attack = 1.0f;
|
||||
LevelEstimator level_estimator = kRms;
|
||||
int level_estimator_adjacent_speech_frames_threshold = 12;
|
||||
bool use_saturation_protector = true;
|
||||
float initial_saturation_margin_db = 25.0f;
|
||||
float extra_saturation_margin_db = 5.0f;
|
||||
int gain_applier_adjacent_speech_frames_threshold = 12;
|
||||
} adaptive_digital;
|
||||
} gain_controller2;
|
||||
|
||||
|
||||
@ -487,8 +487,6 @@ void AudioProcessingSimulator::ConfigureAudioProcessor() {
|
||||
if (settings_.agc2_use_adaptive_gain) {
|
||||
apm_config.gain_controller2.adaptive_digital.enabled =
|
||||
*settings_.agc2_use_adaptive_gain;
|
||||
apm_config.gain_controller2.adaptive_digital.level_estimator =
|
||||
settings_.agc2_adaptive_level_estimator;
|
||||
}
|
||||
}
|
||||
if (settings_.use_pre_amplifier) {
|
||||
|
||||
@ -115,8 +115,6 @@ struct SimulationSettings {
|
||||
absl::optional<int> agc_compression_gain;
|
||||
absl::optional<bool> agc2_use_adaptive_gain;
|
||||
absl::optional<float> agc2_fixed_gain_db;
|
||||
AudioProcessing::Config::GainController2::LevelEstimator
|
||||
agc2_adaptive_level_estimator;
|
||||
absl::optional<float> pre_amplifier_gain_factor;
|
||||
absl::optional<float> pre_gain_factor;
|
||||
absl::optional<float> post_gain_factor;
|
||||
|
||||
@ -159,10 +159,6 @@ ABSL_FLAG(float,
|
||||
agc2_fixed_gain_db,
|
||||
kParameterNotSpecifiedValue,
|
||||
"AGC2 fixed gain (dB) to apply");
|
||||
ABSL_FLAG(std::string,
|
||||
agc2_adaptive_level_estimator,
|
||||
"RMS",
|
||||
"AGC2 adaptive digital level estimator to use [RMS, peak]");
|
||||
ABSL_FLAG(float,
|
||||
pre_amplifier_gain_factor,
|
||||
kParameterNotSpecifiedValue,
|
||||
@ -341,10 +337,6 @@ const char kUsageDescription[] =
|
||||
"processing module, either based on wav files or "
|
||||
"protobuf debug dump recordings.\n";
|
||||
|
||||
std::vector<std::string> GetAgc2AdaptiveLevelEstimatorNames() {
|
||||
return {"RMS", "peak"};
|
||||
}
|
||||
|
||||
void SetSettingIfSpecified(const std::string& value,
|
||||
absl::optional<std::string>* parameter) {
|
||||
if (value.compare("") != 0) {
|
||||
@ -374,27 +366,6 @@ void SetSettingIfFlagSet(int32_t flag, absl::optional<bool>* parameter) {
|
||||
}
|
||||
}
|
||||
|
||||
AudioProcessing::Config::GainController2::LevelEstimator
|
||||
MapAgc2AdaptiveLevelEstimator(absl::string_view name) {
|
||||
if (name.compare("RMS") == 0) {
|
||||
return AudioProcessing::Config::GainController2::LevelEstimator::kRms;
|
||||
}
|
||||
if (name.compare("peak") == 0) {
|
||||
return AudioProcessing::Config::GainController2::LevelEstimator::kPeak;
|
||||
}
|
||||
auto concat_strings =
|
||||
[](const std::vector<std::string>& strings) -> std::string {
|
||||
rtc::StringBuilder ss;
|
||||
for (const auto& s : strings) {
|
||||
ss << " " << s;
|
||||
}
|
||||
return ss.Release();
|
||||
};
|
||||
RTC_CHECK(false)
|
||||
<< "Invalid value for agc2_adaptive_level_estimator, valid options:"
|
||||
<< concat_strings(GetAgc2AdaptiveLevelEstimatorNames()) << ".";
|
||||
}
|
||||
|
||||
SimulationSettings CreateSettings() {
|
||||
SimulationSettings settings;
|
||||
if (absl::GetFlag(FLAGS_all_default)) {
|
||||
@ -467,8 +438,6 @@ SimulationSettings CreateSettings() {
|
||||
|
||||
SetSettingIfSpecified(absl::GetFlag(FLAGS_agc2_fixed_gain_db),
|
||||
&settings.agc2_fixed_gain_db);
|
||||
settings.agc2_adaptive_level_estimator = MapAgc2AdaptiveLevelEstimator(
|
||||
absl::GetFlag(FLAGS_agc2_adaptive_level_estimator));
|
||||
SetSettingIfSpecified(absl::GetFlag(FLAGS_pre_amplifier_gain_factor),
|
||||
&settings.pre_amplifier_gain_factor);
|
||||
SetSettingIfSpecified(absl::GetFlag(FLAGS_pre_gain_factor),
|
||||
|
||||
@ -76,10 +76,8 @@ rtc::scoped_refptr<AudioProcessing> CreateApm(test::FuzzDataHelper* fuzz_data,
|
||||
field_trial::InitFieldTrialsFromString(field_trial_string->c_str());
|
||||
|
||||
bool use_agc2_adaptive_digital = fuzz_data->ReadOrDefaultValue(true);
|
||||
bool use_agc2_adaptive_digital_rms_estimator =
|
||||
fuzz_data->ReadOrDefaultValue(true);
|
||||
bool use_agc2_adaptive_digital_saturation_protector =
|
||||
fuzz_data->ReadOrDefaultValue(true);
|
||||
static_cast<void>(fuzz_data->ReadOrDefaultValue(true));
|
||||
static_cast<void>(fuzz_data->ReadOrDefaultValue(true));
|
||||
|
||||
// Ignore a few bytes. Bytes from this segment will be used for
|
||||
// future config flag changes. We assume 40 bytes is enough for
|
||||
@ -123,14 +121,6 @@ rtc::scoped_refptr<AudioProcessing> CreateApm(test::FuzzDataHelper* fuzz_data,
|
||||
apm_config.gain_controller2.fixed_digital.gain_db = gain_controller2_gain_db;
|
||||
apm_config.gain_controller2.adaptive_digital.enabled =
|
||||
use_agc2_adaptive_digital;
|
||||
apm_config.gain_controller2.adaptive_digital.level_estimator =
|
||||
use_agc2_adaptive_digital_rms_estimator
|
||||
? webrtc::AudioProcessing::Config::GainController2::LevelEstimator::
|
||||
kRms
|
||||
: webrtc::AudioProcessing::Config::GainController2::LevelEstimator::
|
||||
kPeak;
|
||||
apm_config.gain_controller2.adaptive_digital.use_saturation_protector =
|
||||
use_agc2_adaptive_digital_saturation_protector;
|
||||
apm_config.noise_suppression.enabled = use_ns;
|
||||
apm_config.transient_suppression.enabled = use_ts;
|
||||
apm_config.voice_detection.enabled = use_vad;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user