1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef THIRD_PARTY_LIBJINGLE_OVERRIDES_INIT_WEBRTC_H_ 6 #define THIRD_PARTY_LIBJINGLE_OVERRIDES_INIT_WEBRTC_H_ 7 8 #include <string> 9 10 #include "allocator_shim/allocator_stub.h" 11 #include "base/logging.h" 12 #include "third_party/webrtc/system_wrappers/interface/event_tracer.h" 13 14 namespace base { 15 class CommandLine; 16 } 17 18 namespace cricket { 19 class MediaEngineInterface; 20 class WebRtcVideoDecoderFactory; 21 class WebRtcVideoEncoderFactory; 22 } // namespace cricket 23 24 namespace webrtc { 25 class AudioDeviceModule; 26 } // namespace webrtc 27 28 typedef std::string (*FieldTrialFindFullName)(const std::string& trial_name); 29 30 typedef cricket::MediaEngineInterface* (*CreateWebRtcMediaEngineFunction)( 31 webrtc::AudioDeviceModule* adm, 32 webrtc::AudioDeviceModule* adm_sc, 33 cricket::WebRtcVideoEncoderFactory* encoder_factory, 34 cricket::WebRtcVideoDecoderFactory* decoder_factory); 35 36 typedef void (*DestroyWebRtcMediaEngineFunction)( 37 cricket::MediaEngineInterface* media_engine); 38 39 typedef void (*InitDiagnosticLoggingDelegateFunctionFunction)( 40 void (*DelegateFunction)(const std::string&)); 41 42 // A typedef for the main initialize function in libpeerconnection. 43 // This will initialize logging in the module with the proper arguments 44 // as well as provide pointers back to a couple webrtc factory functions. 45 // The reason we get pointers to these functions this way is to avoid having 46 // to go through GetProcAddress et al and rely on specific name mangling. 47 typedef bool (*InitializeModuleFunction)( 48 const base::CommandLine& command_line, 49 #if !defined(OS_MACOSX) && !defined(OS_ANDROID) 50 AllocateFunction alloc, 51 DellocateFunction dealloc, 52 #endif 53 FieldTrialFindFullName field_trial_find, 54 logging::LogMessageHandlerFunction log_handler, 55 webrtc::GetCategoryEnabledPtr trace_get_category_enabled, 56 webrtc::AddTraceEventPtr trace_add_trace_event, 57 CreateWebRtcMediaEngineFunction* create_media_engine, 58 DestroyWebRtcMediaEngineFunction* destroy_media_engine, 59 InitDiagnosticLoggingDelegateFunctionFunction* init_diagnostic_logging); 60 61 #if !defined(LIBPEERCONNECTION_IMPLEMENTATION) 62 // Load and initialize the shared WebRTC module (libpeerconnection). 63 // Call this explicitly to load and initialize the WebRTC module (e.g. before 64 // initializing the sandbox in Chrome). 65 // If not called explicitly, this function will still be called from the main 66 // CreateWebRtcMediaEngine factory function the first time it is called. 67 bool InitializeWebRtcModule(); 68 #endif 69 70 #endif // THIRD_PARTY_LIBJINGLE_OVERRIDES_INIT_WEBRTC_H_ 71