Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(586)

Unified Diff: webrtc/modules/audio_processing/audio_processing_impl.h

Issue 2778783002: AecDump interface (Closed)
Patch Set: New FloatAudioFrame class for passing float** audio. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_processing/audio_processing_impl.h
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h
index 37b15c28935f29cb6450f5f5cec3d53fe640f50f..9e76e3abbae5782c6ef4265b17b01eee4aa433eb 100644
--- a/webrtc/modules/audio_processing/audio_processing_impl.h
+++ b/webrtc/modules/audio_processing/audio_processing_impl.h
@@ -23,6 +23,7 @@
#include "webrtc/base/swap_queue.h"
#include "webrtc/base/thread_annotations.h"
#include "webrtc/modules/audio_processing/audio_buffer.h"
+#include "webrtc/modules/audio_processing/include/aec_dump.h"
#include "webrtc/modules/audio_processing/include/audio_processing.h"
#include "webrtc/modules/audio_processing/render_queue_item_verifier.h"
#include "webrtc/modules/audio_processing/rms_level.h"
@@ -66,6 +67,7 @@ class AudioProcessingImpl : public AudioProcessing {
void ApplyConfig(const AudioProcessing::Config& config) override;
void SetExtraOptions(const webrtc::Config& config) override;
void UpdateHistogramsOnCallEnd() override;
+ void StartDebugRecording(std::unique_ptr<AecDump> aec_dump) override;
int StartDebugRecording(const char filename[kMaxFilenameSize],
int64_t max_log_size_bytes) override;
int StartDebugRecording(FILE* handle, int64_t max_log_size_bytes) override;
@@ -275,6 +277,38 @@ class AudioProcessingImpl : public AudioProcessing {
EXCLUSIVE_LOCKS_REQUIRED(crit_render_);
int ProcessRenderStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_render_);
+ // Collects configuration settings from public and private
+ // submodules to be saved as an audioproc::Config message.
+ InternalAPMConfig CollectApmConfig() const
+ EXCLUSIVE_LOCKS_REQUIRED(crit_capture_)
+ EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
+
+ // Creates and returns new CaptureStreamInfo filled with the capture
+ // stream and data (delay, drift etc).
+ std::unique_ptr<AecDump::CaptureStreamInfo> RecordUnprocessedCaptureStream(
+ const float* const* capture_stream) const
+ EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
+
+ std::unique_ptr<AecDump::CaptureStreamInfo> RecordUnprocessedCaptureStream(
+ const AudioFrame& capture_frame) const
+ EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
+
+ // Fills the CaptureStreamInfo object with the processed capture
+ // stream and sends it to be written with AecDump.
+ void RecordProcessedCaptureStream(
+ const float* const* processed_capture_stream,
+ std::unique_ptr<AecDump::CaptureStreamInfo> stream_info) const
+ EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
+
+ void RecordProcessedCaptureStream(
+ const AudioFrame& processed_capture_frame,
+ std::unique_ptr<AecDump::CaptureStreamInfo> stream_info) const
+ EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
+
+ // Copies data (delay, drift, etc) into the |stream_info| object.
+ void PopulateStreamInfoWithConfig(AecDump::CaptureStreamInfo* stream_info)
+ const EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
+
// Debug dump methods that are internal and called without locks.
// TODO(peah): Make thread safe.
#ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
@@ -299,6 +333,10 @@ class AudioProcessingImpl : public AudioProcessing {
ApmDebugDumpState debug_dump_;
#endif
+ // AecDump instance used for optionally logging APM config, input
+ // and output to file in the AEC-dump format defined in debug.proto.
+ std::unique_ptr<AecDump> aec_dump_;
+
// Critical sections.
rtc::CriticalSection crit_render_ ACQUIRED_BEFORE(crit_capture_);
rtc::CriticalSection crit_capture_;

Powered by Google App Engine
This is Rietveld 408576698