summaryrefslogtreecommitdiffstats
path: root/third_party
diff options
context:
space:
mode:
authorxians <xians@chromium.org>2014-09-25 08:29:51 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-25 15:30:11 +0000
commit6299e2dbff65201b71f159d185a95d539ee9e810 (patch)
tree01671a8f783ceee25dcf760e83cad6c7067f3774 /third_party
parentfe3e9c08535896b6df71a685f495711aa2bca872 (diff)
downloadchromium_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.gn1
-rw-r--r--third_party/libjingle/libjingle.gyp1
-rw-r--r--third_party/libjingle/overrides/init_webrtc.cc21
-rw-r--r--third_party/libjingle/overrides/init_webrtc.h13
-rw-r--r--third_party/libjingle/overrides/initialize_module.cc6
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)