AGC2 limiter stats + config ToString missing param

Bug: webrtc:7494
Change-Id: Icb6a164882af5c15c9400eb869dccbfda20b3da7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/194324
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Jakob Ivarsson <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32653}
This commit is contained in:
Alessio Bazzica
2020-11-20 16:26:24 +01:00
committed by Commit Bot
parent f46723c8aa
commit 08d2a703fc
3 changed files with 20 additions and 2 deletions

View File

@ -16,6 +16,7 @@
#include "modules/audio_processing/logging/apm_data_dumper.h"
#include "rtc_base/atomic_ops.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/strings/string_builder.h"
namespace webrtc {
@ -27,7 +28,8 @@ GainController2::GainController2()
new ApmDataDumper(rtc::AtomicOps::Increment(&instance_count_))),
gain_applier_(/*hard_clip_samples=*/false,
/*initial_gain_factor=*/0.f),
limiter_(static_cast<size_t>(48000), data_dumper_.get(), "Agc2") {
limiter_(static_cast<size_t>(48000), data_dumper_.get(), "Agc2"),
calls_since_last_limiter_log_(0) {
if (config_.adaptive_digital.enabled) {
adaptive_agc_.reset(new AdaptiveAgc(data_dumper_.get()));
}
@ -43,6 +45,7 @@ void GainController2::Initialize(int sample_rate_hz) {
limiter_.SetSampleRate(sample_rate_hz);
data_dumper_->InitiateNewSetOfRecordings();
data_dumper_->DumpRaw("sample_rate_hz", sample_rate_hz);
calls_since_last_limiter_log_ = 0;
}
void GainController2::Process(AudioBuffer* audio) {
@ -54,6 +57,18 @@ void GainController2::Process(AudioBuffer* audio) {
adaptive_agc_->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) {
calls_since_last_limiter_log_ = 0;
InterpolatedGainCurve::Stats stats = limiter_.GetGainCurveStats();
RTC_LOG(LS_INFO) << "AGC2 limiter stats"
<< " | identity: " << stats.look_ups_identity_region
<< " | knee: " << stats.look_ups_knee_region
<< " | limiter: " << stats.look_ups_limiter_region
<< " | saturation: " << stats.look_ups_saturation_region;
}
}
void GainController2::NotifyAnalogLevel(int level) {

View File

@ -46,6 +46,7 @@ class GainController2 {
GainApplier gain_applier_;
std::unique_ptr<AdaptiveAgc> adaptive_agc_;
Limiter limiter_;
int calls_since_last_limiter_log_;
int analog_level_ = -1;
RTC_DISALLOW_COPY_AND_ASSIGN(GainController2);

View File

@ -153,7 +153,9 @@ std::string AudioProcessing::Config::ToString() const {
<< gain_controller2.fixed_digital.gain_db
<< "}, adaptive_digital: { enabled: "
<< gain_controller2.adaptive_digital.enabled
<< ", level_estimator: { type: "
<< ", level_estimator: { vad_probability_attack: "
<< gain_controller2.adaptive_digital.vad_probability_attack
<< ", type: "
<< GainController2LevelEstimatorToString(
gain_controller2.adaptive_digital.level_estimator)
<< ", adjacent_speech_frames_threshold: "