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}
diff --git a/modules/audio_processing/gain_controller2.cc b/modules/audio_processing/gain_controller2.cc
index 6561beb..4477065 100644
--- a/modules/audio_processing/gain_controller2.cc
+++ b/modules/audio_processing/gain_controller2.cc
@@ -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 @@
           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 @@
   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 @@
     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) {
diff --git a/modules/audio_processing/gain_controller2.h b/modules/audio_processing/gain_controller2.h
index da27fdc..31665bd 100644
--- a/modules/audio_processing/gain_controller2.h
+++ b/modules/audio_processing/gain_controller2.h
@@ -46,6 +46,7 @@
   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);
diff --git a/modules/audio_processing/include/audio_processing.cc b/modules/audio_processing/include/audio_processing.cc
index 04336b6..fd741d4 100644
--- a/modules/audio_processing/include/audio_processing.cc
+++ b/modules/audio_processing/include/audio_processing.cc
@@ -153,7 +153,9 @@
           << 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: "