diff options
author | xians <xians@chromium.org> | 2014-09-25 08:29:51 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-25 15:30:11 +0000 |
commit | 6299e2dbff65201b71f159d185a95d539ee9e810 (patch) | |
tree | 01671a8f783ceee25dcf760e83cad6c7067f3774 /third_party | |
parent | fe3e9c08535896b6df71a685f495711aa2bca872 (diff) | |
download | chromium_src-6299e2dbff65201b71f159d185a95d539ee9e810.zip chromium_src-6299e2dbff65201b71f159d185a95d539ee9e810.tar.gz chromium_src-6299e2dbff65201b71f159d185a95d539ee9e810.tar.bz2 |
The original review thread is in https://codereview.chromium.org/588523002/
Fix the way how we create webrtc::AudioProcessing in Chrome.
TBR=tommi@chromium.org
BUG=415935
TEST=all webrtc tests in all bots + manual test to verify the agc loggings exist.
Review URL: https://codereview.chromium.org/597923002
Cr-Commit-Position: refs/heads/master@{#296709}
Diffstat (limited to 'third_party')
-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 |
5 files changed, 39 insertions, 3 deletions
diff --git a/third_party/libjingle/BUILD.gn b/third_party/libjingle/BUILD.gn index 02c2bf9..69a744e 100644 --- a/third_party/libjingle/BUILD.gn +++ b/third_party/libjingle/BUILD.gn @@ -548,6 +548,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 ab89d58..6db34f6 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) |