From 216af841adc9a9686d6bdb734ef2fe1bca66e952 Mon Sep 17 00:00:00 2001 From: Gustaf Ullberg Date: Thu, 26 Apr 2018 12:39:11 +0200 Subject: [PATCH] Add debug data dumping to the AEC3 suppressor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:8671 Change-Id: Ia4f96fc247335bdf19620446559c21f16abd6682 Reviewed-on: https://webrtc-review.googlesource.com/72700 Commit-Queue: Gustaf Ullberg Reviewed-by: Per Ã…hgren Cr-Commit-Position: refs/heads/master@{#23051} --- .../audio_processing/aec3/suppression_gain.cc | 16 ++++++++++++++-- modules/audio_processing/aec3/suppression_gain.h | 3 ++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/modules/audio_processing/aec3/suppression_gain.cc b/modules/audio_processing/aec3/suppression_gain.cc index 51158303a4..9591c6795c 100644 --- a/modules/audio_processing/aec3/suppression_gain.cc +++ b/modules/audio_processing/aec3/suppression_gain.cc @@ -21,6 +21,8 @@ #include #include "modules/audio_processing/aec3/vector_math.h" +#include "modules/audio_processing/logging/apm_data_dumper.h" +#include "rtc_base/atomicops.h" #include "rtc_base/checks.h" namespace webrtc { @@ -253,6 +255,8 @@ void AdjustNonConvergedFrequencies( } // namespace +int SuppressionGain::instance_count_ = 0; + // TODO(peah): Add further optimizations, in particular for the divisions. void SuppressionGain::LowerBandGain( bool low_noise_render, @@ -298,8 +302,8 @@ void SuppressionGain::LowerBandGain( // Iteratively compute the gain required to attenuate the echo to a non // noticeable level. gain->fill(0.f); + std::array masker; for (int k = 0; k < 2; ++k) { - std::array masker; MaskingPower(config_, nearend, comfort_noise, last_masker_, *gain, &masker); GainToNoAudibleEcho(config_, low_noise_render, saturated_echo, linear_echo_estimate, nearend, weighted_echo, masker, @@ -320,12 +324,20 @@ void SuppressionGain::LowerBandGain( MaskingPower(config_, nearend, comfort_noise, last_masker_, *gain, &last_masker_); aec3::VectorMath(optimization_).Sqrt(*gain); + + // Debug outputs for the purpose of development and analysis. + data_dumper_->DumpRaw("aec3_suppressor_min_gain", min_gain); + data_dumper_->DumpRaw("aec3_suppressor_max_gain", max_gain); + data_dumper_->DumpRaw("aec3_suppressor_masker", masker); + data_dumper_->DumpRaw("aec3_suppressor_last_masker", last_masker_); } SuppressionGain::SuppressionGain(const EchoCanceller3Config& config, Aec3Optimization optimization, int sample_rate_hz) - : optimization_(optimization), + : data_dumper_( + new ApmDataDumper(rtc::AtomicOps::Increment(&instance_count_))), + optimization_(optimization), config_(config), state_change_duration_blocks_( static_cast(config_.filter.config_change_duration_blocks)), diff --git a/modules/audio_processing/aec3/suppression_gain.h b/modules/audio_processing/aec3/suppression_gain.h index 23121a2324..7b34d0a05d 100644 --- a/modules/audio_processing/aec3/suppression_gain.h +++ b/modules/audio_processing/aec3/suppression_gain.h @@ -69,6 +69,8 @@ class SuppressionGain { float average_power_ = 32768.f * 32768.f; }; + static int instance_count_; + std::unique_ptr data_dumper_; const Aec3Optimization optimization_; const EchoCanceller3Config config_; const int state_change_duration_blocks_; @@ -77,7 +79,6 @@ class SuppressionGain { std::array last_masker_; std::array gain_increase_; std::array last_echo_; - LowNoiseRenderDetector low_render_detector_; bool initial_state_ = true; int initial_state_change_counter_ = 0;