diff options
author | tnakamura@webrtc.org <tnakamura@webrtc.org> | 2014-10-27 16:52:53 +0000 |
---|---|---|
committer | tnakamura@webrtc.org <tnakamura@webrtc.org> | 2014-10-27 16:52:53 +0000 |
commit | 26a0c4c9568f9e616e9e9fa8652911ddd1f1f70a (patch) | |
tree | f986cab4c7dca1303752e9ac1c6c28f84a031309 | |
parent | 102e8974ff5b0bea642178e580076bf541841f9a (diff) | |
download | webrtc-26a0c4c9568f9e616e9e9fa8652911ddd1f1f70a.tar.gz |
Merge r7418 to 39 branch
BUG=chromium:415935
TBR=xians
Review URL: https://webrtc-codereview.appspot.com/29979004
git-svn-id: http://webrtc.googlecode.com/svn/branches/39/webrtc@7533 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r-- | base/BUILD.gn | 2 | ||||
-rw-r--r-- | base/base.gyp | 2 | ||||
-rw-r--r-- | base/fileutils.cc | 31 | ||||
-rw-r--r-- | base/fileutils.h | 23 | ||||
-rw-r--r-- | base/platform_file.cc | 49 | ||||
-rw-r--r-- | base/platform_file.h | 44 | ||||
-rw-r--r-- | modules/audio_processing/BUILD.gn | 1 | ||||
-rw-r--r-- | modules/audio_processing/audio_processing.gypi | 1 | ||||
-rw-r--r-- | modules/audio_processing/audio_processing_impl.cc | 7 | ||||
-rw-r--r-- | modules/audio_processing/audio_processing_impl.h | 2 | ||||
-rw-r--r-- | modules/audio_processing/include/audio_processing.h | 8 |
11 files changed, 118 insertions, 52 deletions
diff --git a/base/BUILD.gn b/base/BUILD.gn index 0de5ea46..c2a3f99c 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn @@ -111,6 +111,8 @@ static_library("rtc_base_approved") { "md5.cc", "md5.h", "md5digest.h", + "platform_file.cc", + "platform_file.h", "stringencode.cc", "stringencode.h", "stringutils.cc", diff --git a/base/base.gyp b/base/base.gyp index 07f4c0ba..569db740 100644 --- a/base/base.gyp +++ b/base/base.gyp @@ -46,6 +46,8 @@ 'md5.cc', 'md5.h', 'md5digest.h', + 'platform_file.cc', + 'platform_file.h', 'stringencode.cc', 'stringencode.h', 'stringutils.cc', diff --git a/base/fileutils.cc b/base/fileutils.cc index 06d76d2b..24375c97 100644 --- a/base/fileutils.cc +++ b/base/fileutils.cc @@ -10,13 +10,6 @@ #include <assert.h> -#if defined(WEBRTC_WIN) -// TODO(grunell): Remove io.h includes when Chromium has started -// to use AEC in each source. http://crbug.com/264611. -#include <io.h> -#include "webrtc/base/win32.h" -#endif - #include "webrtc/base/pathutils.h" #include "webrtc/base/fileutils.h" #include "webrtc/base/stringutils.h" @@ -279,28 +272,4 @@ bool CreateUniqueFile(Pathname& path, bool create_empty) { return true; } -// Taken from Chromium's base/platform_file_*.cc. -// TODO(grunell): Remove when Chromium has started to use AEC in each source. -// http://crbug.com/264611. -FILE* FdopenPlatformFileForWriting(PlatformFile file) { -#if defined(WEBRTC_WIN) - if (file == kInvalidPlatformFileValue) - return NULL; - int fd = _open_osfhandle(reinterpret_cast<intptr_t>(file), 0); - if (fd < 0) - return NULL; - return _fdopen(fd, "w"); -#else - return fdopen(file, "w"); -#endif -} - -bool ClosePlatformFile(PlatformFile file) { -#if defined(WEBRTC_WIN) - return CloseHandle(file) != 0; -#else - return close(file); -#endif -} - } // namespace rtc diff --git a/base/fileutils.h b/base/fileutils.h index 33ce4579..91129524 100644 --- a/base/fileutils.h +++ b/base/fileutils.h @@ -13,9 +13,7 @@ #include <string> -#if defined(WEBRTC_WIN) -#include "webrtc/base/win32.h" -#else +#if !defined(WEBRTC_WIN) #include <dirent.h> #include <stdio.h> #include <sys/stat.h> @@ -25,6 +23,7 @@ #include "webrtc/base/basictypes.h" #include "webrtc/base/common.h" +#include "webrtc/base/platform_file.h" #include "webrtc/base/scoped_ptr.h" namespace rtc { @@ -436,24 +435,6 @@ class FilesystemScope{ // process). bool CreateUniqueFile(Pathname& path, bool create_empty); -// Taken from Chromium's base/platform_file.h. -// Don't use ClosePlatformFile to close a file opened with FdopenPlatformFile. -// Use fclose instead. -// TODO(grunell): Remove when Chromium has started to use AEC in each source. -// http://crbug.com/264611. -#if defined(WEBRTC_WIN) -typedef HANDLE PlatformFile; -const PlatformFile kInvalidPlatformFileValue = INVALID_HANDLE_VALUE; -#elif defined(WEBRTC_POSIX) -typedef int PlatformFile; -const PlatformFile kInvalidPlatformFileValue = -1; -#else -#error Unsupported platform -#endif - -FILE* FdopenPlatformFileForWriting(PlatformFile file); -bool ClosePlatformFile(PlatformFile file); - } // namespace rtc #endif // WEBRTC_BASE_FILEUTILS_H_ diff --git a/base/platform_file.cc b/base/platform_file.cc new file mode 100644 index 00000000..d518b74a --- /dev/null +++ b/base/platform_file.cc @@ -0,0 +1,49 @@ +/* + * Copyright 2014 The WebRTC Project Authors. All rights reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#include "webrtc/base/platform_file.h" + +#if defined(WEBRTC_WIN) +#include <io.h> +#else +#include <unistd.h> +#endif + +namespace rtc { + +#if defined(WEBRTC_WIN) +const PlatformFile kInvalidPlatformFileValue = INVALID_HANDLE_VALUE; + +FILE* FdopenPlatformFileForWriting(PlatformFile file) { + if (file == kInvalidPlatformFileValue) + return NULL; + int fd = _open_osfhandle(reinterpret_cast<intptr_t>(file), 0); + if (fd < 0) + return NULL; + + return _fdopen(fd, "w"); +} + +bool ClosePlatformFile(PlatformFile file) { + return CloseHandle(file) != 0; +} +#else +const PlatformFile kInvalidPlatformFileValue = -1; + +FILE* FdopenPlatformFileForWriting(PlatformFile file) { + return fdopen(file, "w"); +} + +bool ClosePlatformFile(PlatformFile file) { + return close(file); +} +#endif + +} // namespace rtc diff --git a/base/platform_file.h b/base/platform_file.h new file mode 100644 index 00000000..12e08e9a --- /dev/null +++ b/base/platform_file.h @@ -0,0 +1,44 @@ +/* + * Copyright 2014 The WebRTC Project Authors. All rights reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#ifndef WEBRTC_BASE_PLATFORM_FILE_H_ +#define WEBRTC_BASE_PLATFORM_FILE_H_ + +#include <stdio.h> + +#if defined(WEBRTC_WIN) +#include <windows.h> +#endif + +namespace rtc { + +#if defined(WEBRTC_WIN) +typedef HANDLE PlatformFile; +#elif defined(WEBRTC_POSIX) +typedef int PlatformFile; +#else +#error Unsupported platform +#endif + +extern const PlatformFile kInvalidPlatformFileValue; + +// Associates a standard FILE stream with an existing PlatformFile. +// Note that after this function has returned a valid FILE stream, +// the PlatformFile should no longer be used. +FILE* FdopenPlatformFileForWriting(PlatformFile file); + +// Closes a PlatformFile. +// Don't use ClosePlatformFile to close a file opened with FdopenPlatformFile. +// Use fclose instead. +bool ClosePlatformFile(PlatformFile file); + +} // namespace rtc + +#endif // WEBRTC_BASE_PLATFORM_FILE_H_ diff --git a/modules/audio_processing/BUILD.gn b/modules/audio_processing/BUILD.gn index 9bf4da07..42ec6e76 100644 --- a/modules/audio_processing/BUILD.gn +++ b/modules/audio_processing/BUILD.gn @@ -157,6 +157,7 @@ source_set("audio_processing") { } deps += [ + "../../base:rtc_base_approved", "../../common_audio", "../../system_wrappers", ] diff --git a/modules/audio_processing/audio_processing.gypi b/modules/audio_processing/audio_processing.gypi index 9bbcfae7..ce65f643 100644 --- a/modules/audio_processing/audio_processing.gypi +++ b/modules/audio_processing/audio_processing.gypi @@ -9,6 +9,7 @@ { 'variables': { 'audio_processing_dependencies': [ + '<(webrtc_root)/base/base.gyp:rtc_base_approved', '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', '<(webrtc_root)/system_wrappers/source/system_wrappers.gyp:system_wrappers', ], diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc index d91cbd2f..d6e29060 100644 --- a/modules/audio_processing/audio_processing_impl.cc +++ b/modules/audio_processing/audio_processing_impl.cc @@ -12,6 +12,7 @@ #include <assert.h> +#include "webrtc/base/platform_file.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,12 @@ int AudioProcessingImpl::StartDebugRecording(FILE* handle) { #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP } +int AudioProcessingImpl::StartDebugRecordingForPlatformFile( + rtc::PlatformFile handle) { + FILE* stream = rtc::FdopenPlatformFileForWriting(handle); + return StartDebugRecording(stream); +} + int AudioProcessingImpl::StopDebugRecording() { CriticalSectionScoped crit_scoped(crit_); diff --git a/modules/audio_processing/audio_processing_impl.h b/modules/audio_processing/audio_processing_impl.h index 9753423d..0817f471 100644 --- a/modules/audio_processing/audio_processing_impl.h +++ b/modules/audio_processing/audio_processing_impl.h @@ -125,6 +125,8 @@ class AudioProcessingImpl : public AudioProcessing { virtual int StartDebugRecording( const char filename[kMaxFilenameSize]) OVERRIDE; virtual int StartDebugRecording(FILE* handle) OVERRIDE; + virtual int StartDebugRecordingForPlatformFile( + rtc::PlatformFile handle) OVERRIDE; virtual int StopDebugRecording() OVERRIDE; virtual EchoCancellation* echo_cancellation() const OVERRIDE; virtual EchoControlMobile* echo_control_mobile() const OVERRIDE; diff --git a/modules/audio_processing/include/audio_processing.h b/modules/audio_processing/include/audio_processing.h index 30f0d9c5..10d2b8b8 100644 --- a/modules/audio_processing/include/audio_processing.h +++ b/modules/audio_processing/include/audio_processing.h @@ -14,6 +14,7 @@ #include <stddef.h> // size_t #include <stdio.h> // FILE +#include "webrtc/base/platform_file.h" #include "webrtc/common.h" #include "webrtc/typedefs.h" @@ -325,6 +326,13 @@ 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 StartDebugRecordingForPlatformFile(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; |