diff options
author | xians <xians@chromium.org> | 2014-09-22 09:43:06 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-22 16:44:04 +0000 |
commit | a5e9fc62b7bf25931ffe6153cc738098d8119c28 (patch) | |
tree | fc19fcd8c55f7bfd7e6e3f13a9a4c052d7d1970c | |
parent | 257bbb21a16fe457e32b3cf4feb17bbd5f362b51 (diff) | |
download | chromium_src-a5e9fc62b7bf25931ffe6153cc738098d8119c28.zip chromium_src-a5e9fc62b7bf25931ffe6153cc738098d8119c28.tar.gz chromium_src-a5e9fc62b7bf25931ffe6153cc738098d8119c28.tar.bz2 |
Fix the way how we create webrtc::AudioProcessing in Chrome.
BUG=415935
TEST=all webrtc tests in all bots + manual test to verify the agc loggings exist.
Review URL: https://codereview.chromium.org/588523002
Cr-Commit-Position: refs/heads/master@{#295990}
-rw-r--r-- | content/renderer/media/media_stream_audio_processor.cc | 3 | ||||
-rw-r--r-- | third_party/libjingle/BUILD.gn | 1 | ||||
-rw-r--r-- | third_party/libjingle/libjingle.gyp | 1 | ||||
-rw-r--r-- | third_party/libjingle/overrides/init_webrtc.cc | 21 | ||||
-rw-r--r-- | third_party/libjingle/overrides/init_webrtc.h | 13 | ||||
-rw-r--r-- | third_party/libjingle/overrides/initialize_module.cc | 6 |
6 files changed, 41 insertions, 4 deletions
diff --git a/content/renderer/media/media_stream_audio_processor.cc b/content/renderer/media/media_stream_audio_processor.cc index 4efc507..ac41187 100644 --- a/content/renderer/media/media_stream_audio_processor.cc +++ b/content/renderer/media/media_stream_audio_processor.cc @@ -19,6 +19,7 @@ #include "media/base/audio_fifo.h" #include "media/base/channel_layout.h" #include "third_party/WebKit/public/platform/WebMediaConstraints.h" +#include "third_party/libjingle/overrides/init_webrtc.h" #include "third_party/libjingle/source/talk/app/webrtc/mediaconstraintsinterface.h" #include "third_party/webrtc/modules/audio_processing/typing_detection.h" @@ -423,7 +424,7 @@ void MediaStreamAudioProcessor::InitializeAudioProcessingModule( #endif // Create and configure the webrtc::AudioProcessing. - audio_processing_.reset(webrtc::AudioProcessing::Create(config)); + audio_processing_.reset(CreateWebRtcAudioProcessing(config)); // Enable the audio processing components. if (echo_cancellation) { diff --git a/third_party/libjingle/BUILD.gn b/third_party/libjingle/BUILD.gn index 5c3e483..aa71dc8 100644 --- a/third_party/libjingle/BUILD.gn +++ b/third_party/libjingle/BUILD.gn @@ -549,6 +549,7 @@ if (enable_webrtc) { deps = [ ":libjingle_webrtc_common", "//third_party/webrtc", + "//third_party/webrtc/modules/audio_processing", "//third_party/webrtc/system_wrappers", "//third_party/webrtc/voice_engine", ] diff --git a/third_party/libjingle/libjingle.gyp b/third_party/libjingle/libjingle.gyp index 0eaf86c..63a5230 100644 --- a/third_party/libjingle/libjingle.gyp +++ b/third_party/libjingle/libjingle.gyp @@ -589,6 +589,7 @@ '<(libjingle_source)/talk/media/webrtc/webrtcvoiceengine.h', ], 'dependencies': [ + '<(DEPTH)/third_party/webrtc/modules/modules.gyp:audio_processing', '<(DEPTH)/third_party/webrtc/system_wrappers/source/system_wrappers.gyp:system_wrappers', '<(DEPTH)/third_party/webrtc/voice_engine/voice_engine.gyp:voice_engine', '<(DEPTH)/third_party/webrtc/webrtc.gyp:webrtc', diff --git a/third_party/libjingle/overrides/init_webrtc.cc b/third_party/libjingle/overrides/init_webrtc.cc index 4a2fe73..80619a6 100644 --- a/third_party/libjingle/overrides/init_webrtc.cc +++ b/third_party/libjingle/overrides/init_webrtc.cc @@ -11,6 +11,8 @@ #include "base/metrics/field_trial.h" #include "base/native_library.h" #include "base/path_service.h" +#include "third_party/webrtc/common.h" +#include "third_party/webrtc/modules/audio_processing/include/audio_processing.h" #include "webrtc/base/basictypes.h" #include "webrtc/base/logging.h" @@ -53,6 +55,13 @@ bool InitializeWebRtcModule() { return true; } +webrtc::AudioProcessing* CreateWebRtcAudioProcessing( + const webrtc::Config& config) { + // libpeerconnection is being compiled as a static lib, use + // webrtc::AudioProcessing directly. + return webrtc::AudioProcessing::Create(config); +} + #else // !LIBPEERCONNECTION_LIB // When being compiled as a shared library, we need to bridge the gap between @@ -62,6 +71,7 @@ bool InitializeWebRtcModule() { // Global function pointers to the factory functions in the shared library. CreateWebRtcMediaEngineFunction g_create_webrtc_media_engine = NULL; DestroyWebRtcMediaEngineFunction g_destroy_webrtc_media_engine = NULL; +CreateWebRtcAudioProcessingFunction g_create_webrtc_audio_processing = NULL; // Returns the full or relative path to the libpeerconnection module depending // on what platform we're on. @@ -135,7 +145,8 @@ bool InitializeWebRtcModule() { &AddTraceEvent, &g_create_webrtc_media_engine, &g_destroy_webrtc_media_engine, - &init_diagnostic_logging); + &init_diagnostic_logging, + &g_create_webrtc_audio_processing); if (init_ok) rtc::SetExtraLoggingInit(init_diagnostic_logging); @@ -160,4 +171,12 @@ void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) { g_destroy_webrtc_media_engine(media_engine); } +webrtc::AudioProcessing* CreateWebRtcAudioProcessing( + const webrtc::Config& config) { + // The same as CreateWebRtcMediaEngine(), we call InitializeWebRtcModule here + // for convenience of tests. + InitializeWebRtcModule(); + return g_create_webrtc_audio_processing(config); +} + #endif // LIBPEERCONNECTION_LIB diff --git a/third_party/libjingle/overrides/init_webrtc.h b/third_party/libjingle/overrides/init_webrtc.h index c5c190c..4d06e9e 100644 --- a/third_party/libjingle/overrides/init_webrtc.h +++ b/third_party/libjingle/overrides/init_webrtc.h @@ -23,6 +23,8 @@ class WebRtcVideoEncoderFactory; namespace webrtc { class AudioDeviceModule; +class AudioProcessing; +class Config; } // namespace webrtc typedef std::string (*FieldTrialFindFullName)(const std::string& trial_name); @@ -39,6 +41,9 @@ typedef void (*DestroyWebRtcMediaEngineFunction)( typedef void (*InitDiagnosticLoggingDelegateFunctionFunction)( void (*DelegateFunction)(const std::string&)); +typedef webrtc::AudioProcessing* (*CreateWebRtcAudioProcessingFunction)( + const webrtc::Config& config); + // A typedef for the main initialize function in libpeerconnection. // This will initialize logging in the module with the proper arguments // as well as provide pointers back to a couple webrtc factory functions. @@ -56,7 +61,8 @@ typedef bool (*InitializeModuleFunction)( webrtc::AddTraceEventPtr trace_add_trace_event, CreateWebRtcMediaEngineFunction* create_media_engine, DestroyWebRtcMediaEngineFunction* destroy_media_engine, - InitDiagnosticLoggingDelegateFunctionFunction* init_diagnostic_logging); + InitDiagnosticLoggingDelegateFunctionFunction* init_diagnostic_logging, + CreateWebRtcAudioProcessingFunction* create_audio_processing); #if !defined(LIBPEERCONNECTION_IMPLEMENTATION) // Load and initialize the shared WebRTC module (libpeerconnection). @@ -65,6 +71,11 @@ typedef bool (*InitializeModuleFunction)( // If not called explicitly, this function will still be called from the main // CreateWebRtcMediaEngine factory function the first time it is called. bool InitializeWebRtcModule(); + +// Return a webrtc::AudioProcessing object. +webrtc::AudioProcessing* CreateWebRtcAudioProcessing( + const webrtc::Config& config); + #endif #endif // THIRD_PARTY_LIBJINGLE_OVERRIDES_INIT_WEBRTC_H_ diff --git a/third_party/libjingle/overrides/initialize_module.cc b/third_party/libjingle/overrides/initialize_module.cc index ce11567..b84e2d8 100644 --- a/third_party/libjingle/overrides/initialize_module.cc +++ b/third_party/libjingle/overrides/initialize_module.cc @@ -8,6 +8,7 @@ #include "base/logging.h" #include "init_webrtc.h" #include "talk/media/webrtc/webrtcmediaengine.h" +#include "third_party/webrtc/modules/audio_processing/include/audio_processing.h" #include "webrtc/base/basictypes.h" #include "webrtc/base/logging.h" @@ -71,7 +72,9 @@ bool InitializeModule(const CommandLine& command_line, CreateWebRtcMediaEngineFunction* create_media_engine, DestroyWebRtcMediaEngineFunction* destroy_media_engine, InitDiagnosticLoggingDelegateFunctionFunction* - init_diagnostic_logging) { + init_diagnostic_logging, + CreateWebRtcAudioProcessingFunction* + create_audio_processing) { #if !defined(OS_MACOSX) && !defined(OS_ANDROID) g_alloc = alloc; g_dealloc = dealloc; @@ -82,6 +85,7 @@ bool InitializeModule(const CommandLine& command_line, *create_media_engine = &CreateWebRtcMediaEngine; *destroy_media_engine = &DestroyWebRtcMediaEngine; *init_diagnostic_logging = &rtc::InitDiagnosticLoggingDelegateFunction; + *create_audio_processing = &webrtc::AudioProcessing::Create; if (CommandLine::Init(0, NULL)) { #if !defined(OS_WIN) |