Switch to WebRTC AGCv2

This commit is contained in:
Kirill Kirilenko 2020-11-13 19:24:53 +03:00
parent be1bb3504f
commit bb2bae8883

View file

@ -59,11 +59,12 @@ WebRTCDSP::WebRTCDSP(const QAudioFormat& mainFormat, const QAudioFormat& auxForm
config.echo_canceller.mobile_mode = false; config.echo_canceller.mobile_mode = false;
config.residual_echo_detector.enabled = false; config.residual_echo_detector.enabled = false;
config.gain_controller1.enabled = false; config.gain_controller2.enabled = false;
config.gain_controller1.mode = webrtc::AudioProcessing::Config::GainController1::kAdaptiveDigital; config.gain_controller2.adaptive_digital.enabled = true;
config.gain_controller1.enable_limiter = true; config.gain_controller2.adaptive_digital.level_estimator =
config.gain_controller1.compression_gain_db = 0; webrtc::AudioProcessing::Config::GainController2::kRms;
config.gain_controller1.target_level_dbfs = 0; config.gain_controller2.adaptive_digital.use_saturation_protector = true;
config.gain_controller2.adaptive_digital.extra_saturation_margin_db = 1;
apm_->ApplyConfig(config); apm_->ApplyConfig(config);
} }
@ -165,19 +166,19 @@ void WebRTCDSP::setParameter(const QString& param, QVariant value)
else if (param == "noise_reduction_suppression_level") else if (param == "noise_reduction_suppression_level")
config.noise_suppression.level = config.noise_suppression.level =
static_cast<NoiseSuppressionLevel>(NoiseSuppressionLevel::kLow + value.toUInt()); static_cast<NoiseSuppressionLevel>(NoiseSuppressionLevel::kLow + value.toUInt());
else if (param == "gain_control_enabled")
config.gain_controller2.enabled = value.toBool();
else if (param == "echo_cancellation_enabled") else if (param == "echo_cancellation_enabled")
{ {
config.echo_canceller.enabled = value.toBool(); config.echo_canceller.enabled = value.toBool();
config.residual_echo_detector.enabled = value.toBool(); config.residual_echo_detector.enabled = value.toBool();
} }
else if (param == "echo_cancellation_suppression_level")
return; // TODO ???
else if (param == "gain_control_enabled")
config.gain_controller1.enabled = value.toBool();
else if (param == "gain_control_target_level") else if (param == "gain_control_target_level")
config.gain_controller1.target_level_dbfs = value.toInt(); return;
else if (param == "gain_control_max_gain") else if (param == "gain_control_max_gain")
config.gain_controller1.compression_gain_db = value.toInt(); return;
else if (param == "echo_cancellation_suppression_level")
return;
else else
throw std::invalid_argument("Invalid param"); throw std::invalid_argument("Invalid param");
apm_->ApplyConfig(config); apm_->ApplyConfig(config);