Add offline logging of the system delay for AEC3
Bug: webrtc:8671
Change-Id: I8c1801673d9da05c4c5d5385ad455de4d225fff3
Reviewed-on: https://webrtc-review.googlesource.com/52100
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22018}
diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc
index c7d59b8..240d663 100644
--- a/modules/audio_processing/audio_processing_impl.cc
+++ b/modules/audio_processing/audio_processing_impl.cc
@@ -28,6 +28,7 @@
#include "modules/audio_processing/echo_control_mobile_impl.h"
#include "modules/audio_processing/gain_control_for_experimental_agc.h"
#include "modules/audio_processing/gain_control_impl.h"
+#include "modules/audio_processing/logging/apm_data_dumper.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/platform_file.h"
@@ -44,6 +45,7 @@
#include "modules/audio_processing/transient/transient_suppressor.h"
#include "modules/audio_processing/voice_detection_impl.h"
#include "modules/include/module_common_types.h"
+#include "rtc_base/atomicops.h"
#include "system_wrappers/include/file_wrapper.h"
#include "system_wrappers/include/metrics.h"
@@ -373,6 +375,8 @@
: AudioProcessingImpl(config, nullptr, nullptr, nullptr, nullptr, nullptr) {
}
+int AudioProcessingImpl::instance_count_ = 0;
+
AudioProcessingImpl::AudioProcessingImpl(
const webrtc::Config& config,
std::unique_ptr<CustomProcessing> capture_post_processor,
@@ -380,7 +384,9 @@
std::unique_ptr<EchoControlFactory> echo_control_factory,
std::unique_ptr<EchoDetector> echo_detector,
NonlinearBeamformer* beamformer)
- : high_pass_filter_impl_(new HighPassFilterImpl(this)),
+ : data_dumper_(
+ new ApmDataDumper(rtc::AtomicOps::Increment(&instance_count_))),
+ high_pass_filter_impl_(new HighPassFilterImpl(this)),
echo_control_factory_(std::move(echo_control_factory)),
submodule_states_(!!capture_post_processor, !!render_pre_processor),
public_submodules_(new ApmPublicSubmodules()),
@@ -1239,6 +1245,8 @@
}
if (private_submodules_->echo_controller) {
+ data_dumper_->DumpRaw("stream_delay", stream_delay_ms());
+
private_submodules_->echo_controller->ProcessCapture(
capture_buffer, capture_.echo_path_gain_change);
} else {
diff --git a/modules/audio_processing/audio_processing_impl.h b/modules/audio_processing/audio_processing_impl.h
index 8ece029..d0fa8cc 100644
--- a/modules/audio_processing/audio_processing_impl.h
+++ b/modules/audio_processing/audio_processing_impl.h
@@ -31,6 +31,7 @@
namespace webrtc {
+class ApmDataDumper;
class AudioConverter;
class NonlinearBeamformer;
@@ -142,6 +143,9 @@
struct ApmPublicSubmodules;
struct ApmPrivateSubmodules;
+ std::unique_ptr<ApmDataDumper> data_dumper_;
+ static int instance_count_;
+
// Submodule interface implementations.
std::unique_ptr<HighPassFilter> high_pass_filter_impl_;