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