From c167673c4df8b5c20adfe33061f25db4c841949b Mon Sep 17 00:00:00 2001 From: Alex Loiko Date: Mon, 2 Jul 2018 12:05:28 +0200 Subject: [PATCH] Add more ApmDataDumper dumps to AGC. We dump the compression level from AgcManagerDirect. We use the same names and structure as in GainControlForExperimentalAgc. This is to get Apm dump file names to match in the upcoming AGC changes: https://webrtc-review.googlesource.com/c/src/+/79360 TBR: alessiob@webrtc.org Bug: webrtc:7494 Change-Id: I1e6260ea48ffc43f709e4b0c97f843ad9c3d1824 Reviewed-on: https://webrtc-review.googlesource.com/86546 Reviewed-by: Alex Loiko Commit-Queue: Alex Loiko Cr-Commit-Position: refs/heads/master@{#23800} --- .../agc/agc_manager_direct.cc | 21 +++++++++++++++---- .../audio_processing/agc/agc_manager_direct.h | 4 ++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/modules/audio_processing/agc/agc_manager_direct.cc b/modules/audio_processing/agc/agc_manager_direct.cc index 9714b4c95e..1ae4e5c4ce 100644 --- a/modules/audio_processing/agc/agc_manager_direct.cc +++ b/modules/audio_processing/agc/agc_manager_direct.cc @@ -25,6 +25,8 @@ namespace webrtc { +int AgcManagerDirect::instance_counter_ = 0; + namespace { // Amount the microphone level is lowered with every clipping event. @@ -110,7 +112,8 @@ AgcManagerDirect::AgcManagerDirect(GainControl* gctrl, VolumeCallbacks* volume_callbacks, int startup_min_level, int clipped_level_min) - : agc_(new Agc()), + : data_dumper_(new ApmDataDumper(instance_counter_)), + agc_(new Agc()), gctrl_(gctrl), volume_callbacks_(volume_callbacks), frames_since_clipped_(kClippedWaitFrames), @@ -126,14 +129,17 @@ AgcManagerDirect::AgcManagerDirect(GainControl* gctrl, startup_min_level_(ClampLevel(startup_min_level)), clipped_level_min_(clipped_level_min), file_preproc_(new DebugFile("agc_preproc.pcm")), - file_postproc_(new DebugFile("agc_postproc.pcm")) {} + file_postproc_(new DebugFile("agc_postproc.pcm")) { + instance_counter_++; +} AgcManagerDirect::AgcManagerDirect(Agc* agc, GainControl* gctrl, VolumeCallbacks* volume_callbacks, int startup_min_level, int clipped_level_min) - : agc_(agc), + : data_dumper_(new ApmDataDumper(instance_counter_)), + agc_(agc), gctrl_(gctrl), volume_callbacks_(volume_callbacks), frames_since_clipped_(kClippedWaitFrames), @@ -149,7 +155,9 @@ AgcManagerDirect::AgcManagerDirect(Agc* agc, startup_min_level_(ClampLevel(startup_min_level)), clipped_level_min_(clipped_level_min), file_preproc_(new DebugFile("agc_preproc.pcm")), - file_postproc_(new DebugFile("agc_postproc.pcm")) {} + file_postproc_(new DebugFile("agc_postproc.pcm")) { + instance_counter_++; +} AgcManagerDirect::~AgcManagerDirect() {} @@ -164,6 +172,8 @@ int AgcManagerDirect::Initialize() { // TODO(bjornv): Investigate if we need to reset |startup_| as well. For // example, what happens when we change devices. + data_dumper_->InitiateNewSetOfRecordings(); + if (gctrl_->set_mode(GainControl::kFixedDigital) != 0) { RTC_LOG(LS_ERROR) << "set_mode(GainControl::kFixedDigital) failed."; return -1; @@ -249,6 +259,9 @@ void AgcManagerDirect::Process(const int16_t* audio, UpdateCompressor(); file_postproc_->Write(audio, length); + + data_dumper_->DumpRaw("experimental_gain_control_compression_gain_db", 1, + &compression_); } void AgcManagerDirect::SetLevel(int new_level) { diff --git a/modules/audio_processing/agc/agc_manager_direct.h b/modules/audio_processing/agc/agc_manager_direct.h index 03d2607f85..55f294f27e 100644 --- a/modules/audio_processing/agc/agc_manager_direct.h +++ b/modules/audio_processing/agc/agc_manager_direct.h @@ -14,6 +14,7 @@ #include #include "modules/audio_processing/agc/agc.h" +#include "modules/audio_processing/logging/apm_data_dumper.h" #include "rtc_base/constructormagic.h" namespace webrtc { @@ -85,6 +86,9 @@ class AgcManagerDirect final { void UpdateGain(); void UpdateCompressor(); + std::unique_ptr data_dumper_; + static int instance_counter_; + std::unique_ptr agc_; GainControl* gctrl_; VolumeCallbacks* volume_callbacks_;