AGC2 refactoring: better names for GainController2 members
Bug: webrtc:7494 Change-Id: Ibac8a3953e68fa7bdbddfb9d4eb24f2712ba05b2 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/234480 Reviewed-by: Hanna Silen <silen@webrtc.org> Commit-Queue: Alessio Bazzica <alessiob@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35162}
This commit is contained in:
parent
9b2a7461f0
commit
82ea4ee9bf
@ -20,17 +20,23 @@
|
||||
#include "rtc_base/strings/string_builder.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace {
|
||||
constexpr int kLogLimiterStatsPeriodMs = 30'000;
|
||||
constexpr int kFrameLengthMs = 10;
|
||||
constexpr int kLogLimiterStatsPeriodNumFrames =
|
||||
kLogLimiterStatsPeriodMs / kFrameLengthMs;
|
||||
} // namespace
|
||||
|
||||
int GainController2::instance_count_ = 0;
|
||||
|
||||
GainController2::GainController2()
|
||||
: data_dumper_(rtc::AtomicOps::Increment(&instance_count_)),
|
||||
gain_applier_(/*hard_clip_samples=*/false,
|
||||
/*initial_gain_factor=*/0.0f),
|
||||
fixed_gain_applier_(/*hard_clip_samples=*/false,
|
||||
/*initial_gain_factor=*/0.0f),
|
||||
limiter_(static_cast<size_t>(48000), &data_dumper_, "Agc2"),
|
||||
calls_since_last_limiter_log_(0) {
|
||||
if (config_.adaptive_digital.enabled) {
|
||||
adaptive_agc_ =
|
||||
adaptive_digital_controller_ =
|
||||
std::make_unique<AdaptiveAgc>(&data_dumper_, config_.adaptive_digital);
|
||||
}
|
||||
}
|
||||
@ -43,8 +49,8 @@ void GainController2::Initialize(int sample_rate_hz, int num_channels) {
|
||||
sample_rate_hz == AudioProcessing::kSampleRate32kHz ||
|
||||
sample_rate_hz == AudioProcessing::kSampleRate48kHz);
|
||||
limiter_.SetSampleRate(sample_rate_hz);
|
||||
if (adaptive_agc_) {
|
||||
adaptive_agc_->Initialize(sample_rate_hz, num_channels);
|
||||
if (adaptive_digital_controller_) {
|
||||
adaptive_digital_controller_->Initialize(sample_rate_hz, num_channels);
|
||||
}
|
||||
data_dumper_.InitiateNewSetOfRecordings();
|
||||
data_dumper_.DumpRaw("sample_rate_hz", sample_rate_hz);
|
||||
@ -55,16 +61,15 @@ void GainController2::Process(AudioBuffer* audio) {
|
||||
data_dumper_.DumpRaw("agc2_notified_analog_level", analog_level_);
|
||||
AudioFrameView<float> float_frame(audio->channels(), audio->num_channels(),
|
||||
audio->num_frames());
|
||||
// Apply fixed gain first, then the adaptive one.
|
||||
gain_applier_.ApplyGain(float_frame);
|
||||
if (adaptive_agc_) {
|
||||
adaptive_agc_->Process(float_frame, limiter_.LastAudioLevel());
|
||||
fixed_gain_applier_.ApplyGain(float_frame);
|
||||
if (adaptive_digital_controller_) {
|
||||
adaptive_digital_controller_->Process(float_frame,
|
||||
limiter_.LastAudioLevel());
|
||||
}
|
||||
limiter_.Process(float_frame);
|
||||
|
||||
// Log limiter stats every 30 seconds.
|
||||
++calls_since_last_limiter_log_;
|
||||
if (calls_since_last_limiter_log_ == 3000) {
|
||||
// Periodically log limiter stats.
|
||||
if (++calls_since_last_limiter_log_ == kLogLimiterStatsPeriodNumFrames) {
|
||||
calls_since_last_limiter_log_ = 0;
|
||||
InterpolatedGainCurve::Stats stats = limiter_.GetGainCurveStats();
|
||||
RTC_LOG(LS_INFO) << "AGC2 limiter stats"
|
||||
@ -76,8 +81,8 @@ void GainController2::Process(AudioBuffer* audio) {
|
||||
}
|
||||
|
||||
void GainController2::NotifyAnalogLevel(int level) {
|
||||
if (analog_level_ != level && adaptive_agc_) {
|
||||
adaptive_agc_->HandleInputGainChange();
|
||||
if (analog_level_ != level && adaptive_digital_controller_) {
|
||||
adaptive_digital_controller_->HandleInputGainChange();
|
||||
}
|
||||
analog_level_ = level;
|
||||
}
|
||||
@ -92,12 +97,12 @@ void GainController2::ApplyConfig(
|
||||
// large changes of the fixed gain.
|
||||
limiter_.Reset();
|
||||
}
|
||||
gain_applier_.SetGainFactor(DbToRatio(config_.fixed_digital.gain_db));
|
||||
fixed_gain_applier_.SetGainFactor(DbToRatio(config_.fixed_digital.gain_db));
|
||||
if (config_.adaptive_digital.enabled) {
|
||||
adaptive_agc_ =
|
||||
adaptive_digital_controller_ =
|
||||
std::make_unique<AdaptiveAgc>(&data_dumper_, config_.adaptive_digital);
|
||||
} else {
|
||||
adaptive_agc_.reset();
|
||||
adaptive_digital_controller_.reset();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -45,8 +45,8 @@ class GainController2 {
|
||||
static int instance_count_;
|
||||
ApmDataDumper data_dumper_;
|
||||
AudioProcessing::Config::GainController2 config_;
|
||||
GainApplier gain_applier_;
|
||||
std::unique_ptr<AdaptiveAgc> adaptive_agc_;
|
||||
GainApplier fixed_gain_applier_;
|
||||
std::unique_ptr<AdaptiveAgc> adaptive_digital_controller_;
|
||||
Limiter limiter_;
|
||||
int calls_since_last_limiter_log_;
|
||||
int analog_level_ = -1;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user