From 2e417d64287b6fc2e08e819bce43db775d160194 Mon Sep 17 00:00:00 2001 From: "xians@webrtc.org" Date: Tue, 30 Sep 2014 13:11:27 +0000 Subject: [PATCH] adding new AEC dump start interface for chrome. This is required because we are not allow to pass CRT objects across dll boundaries, that says, when we pass a file descriptor from chrome dll to libpeerconnection dll, the file descriptor will become invalid immediate, more information can be found here: http://msdn.microsoft.com/en-us/library/ms235460.aspx Chromium bug:crbug/415935 TEST=bots R=bjornv@webrtc.org, kwiberg@webrtc.org Review URL: https://webrtc-codereview.appspot.com/28629004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7334 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/modules/audio_processing/audio_processing_impl.cc | 6 ++++++ webrtc/modules/audio_processing/audio_processing_impl.h | 1 + webrtc/modules/audio_processing/include/audio_processing.h | 6 ++++++ 3 files changed, 13 insertions(+) diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc index d91cbd2fd3..6806523221 100644 --- a/webrtc/modules/audio_processing/audio_processing_impl.cc +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc @@ -12,6 +12,7 @@ #include +#include "webrtc/base/fileutils.h" #include "webrtc/common_audio/include/audio_util.h" #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" #include "webrtc/modules/audio_processing/audio_buffer.h" @@ -716,6 +717,11 @@ int AudioProcessingImpl::StartDebugRecording(FILE* handle) { #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP } +int AudioProcessingImpl::StartDebugRecording(rtc::PlatformFile handle) { + FILE* stream = rtc::FdopenPlatformFileForWriting(handle); + return StartDebugRecording(stream); +} + int AudioProcessingImpl::StopDebugRecording() { CriticalSectionScoped crit_scoped(crit_); diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h index 9753423d6d..d012e7f0ea 100644 --- a/webrtc/modules/audio_processing/audio_processing_impl.h +++ b/webrtc/modules/audio_processing/audio_processing_impl.h @@ -125,6 +125,7 @@ class AudioProcessingImpl : public AudioProcessing { virtual int StartDebugRecording( const char filename[kMaxFilenameSize]) OVERRIDE; virtual int StartDebugRecording(FILE* handle) OVERRIDE; + virtual int StartDebugRecording(rtc::PlatformFile handle) OVERRIDE; virtual int StopDebugRecording() OVERRIDE; virtual EchoCancellation* echo_cancellation() const OVERRIDE; virtual EchoControlMobile* echo_control_mobile() const OVERRIDE; diff --git a/webrtc/modules/audio_processing/include/audio_processing.h b/webrtc/modules/audio_processing/include/audio_processing.h index 30f0d9c5d9..53157ae66f 100644 --- a/webrtc/modules/audio_processing/include/audio_processing.h +++ b/webrtc/modules/audio_processing/include/audio_processing.h @@ -14,6 +14,7 @@ #include // size_t #include // FILE +#include "webrtc/base/fileutils.h" #include "webrtc/common.h" #include "webrtc/typedefs.h" @@ -325,6 +326,11 @@ class AudioProcessing { // of |handle| and closes it at StopDebugRecording(). virtual int StartDebugRecording(FILE* handle) = 0; + // Same as above but uses an existing PlatformFile handle. Takes ownership + // of |handle| and closes it at StopDebugRecording(). + // TODO(xians): Make this interface pure virtual. + virtual int StartDebugRecording(rtc::PlatformFile handle) { return -1; } + // Stops recording debugging information, and closes the file. Recording // cannot be resumed in the same file (without overwriting it). virtual int StopDebugRecording() = 0;