diff options
Diffstat (limited to 'media/webrtc/webrtcmediaengine.cc')
-rw-r--r-- | media/webrtc/webrtcmediaengine.cc | 79 |
1 files changed, 70 insertions, 9 deletions
diff --git a/media/webrtc/webrtcmediaengine.cc b/media/webrtc/webrtcmediaengine.cc index 445564c..252b4e6 100644 --- a/media/webrtc/webrtcmediaengine.cc +++ b/media/webrtc/webrtcmediaengine.cc @@ -25,8 +25,53 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#if defined(LIBPEERCONNECTION_LIB) || \ + defined(LIBPEERCONNECTION_IMPLEMENTATION) + #include "talk/media/webrtc/webrtcmediaengine.h" +#include "talk/media/webrtc/webrtcvideoengine.h" +#ifdef WEBRTC_CHROMIUM_BUILD +#include "talk/media/webrtc/webrtcvideoengine2.h" +#endif +#include "talk/media/webrtc/webrtcvoiceengine.h" +#ifdef WEBRTC_CHROMIUM_BUILD #include "webrtc/system_wrappers/interface/field_trial.h" +#endif + +namespace cricket { + +class WebRtcMediaEngine : + public CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine> { + public: + WebRtcMediaEngine() {} + WebRtcMediaEngine(webrtc::AudioDeviceModule* adm, + webrtc::AudioDeviceModule* adm_sc, + WebRtcVideoEncoderFactory* encoder_factory, + WebRtcVideoDecoderFactory* decoder_factory) { + voice_.SetAudioDeviceModule(adm, adm_sc); + video_.SetVoiceEngine(&voice_); + video_.EnableTimedRender(); + video_.SetExternalEncoderFactory(encoder_factory); + video_.SetExternalDecoderFactory(decoder_factory); + } +}; + +#ifdef WEBRTC_CHROMIUM_BUILD +class WebRtcMediaEngine2 : + public CompositeMediaEngine<WebRtcVoiceEngine, WebRtcVideoEngine2> { + public: + WebRtcMediaEngine2(webrtc::AudioDeviceModule* adm, + webrtc::AudioDeviceModule* adm_sc, + WebRtcVideoEncoderFactory* encoder_factory, + WebRtcVideoDecoderFactory* decoder_factory) { + voice_.SetAudioDeviceModule(adm, adm_sc); + video_.SetVoiceEngine(&voice_); + video_.EnableTimedRender(); + } +}; +#endif // WEBRTC_CHROMIUM_BUILD + +} // namespace cricket WRME_EXPORT cricket::MediaEngineInterface* CreateWebRtcMediaEngine( @@ -40,19 +85,35 @@ cricket::MediaEngineInterface* CreateWebRtcMediaEngine( adm, adm_sc, encoder_factory, decoder_factory); } #endif // WEBRTC_CHROMIUM_BUILD + // This is just to get a diff to run pulse. return new cricket::WebRtcMediaEngine( adm, adm_sc, encoder_factory, decoder_factory); } WRME_EXPORT void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) { -#ifdef WEBRTC_CHROMIUM_BUILD - if (webrtc::field_trial::FindFullName("WebRTC-NewVideoAPI") == "Enabled") { - delete static_cast<cricket::WebRtcMediaEngine2*>(media_engine); - } else { -#endif // WEBRTC_CHROMIUM_BUILD - delete static_cast<cricket::WebRtcMediaEngine*>(media_engine); -#ifdef WEBRTC_CHROMIUM_BUILD - } -#endif // WEBRTC_CHROMIUM_BUILD + delete media_engine; +} + +namespace cricket { + +// Used by ChannelManager when no media engine is passed in to it +// explicitly (acts as a default). +MediaEngineInterface* WebRtcMediaEngineFactory::Create() { + return new cricket::WebRtcMediaEngine(); } + +// Used by PeerConnectionFactory to create a media engine passed into +// ChannelManager. +MediaEngineInterface* WebRtcMediaEngineFactory::Create( + webrtc::AudioDeviceModule* adm, + webrtc::AudioDeviceModule* adm_sc, + WebRtcVideoEncoderFactory* encoder_factory, + WebRtcVideoDecoderFactory* decoder_factory) { + return CreateWebRtcMediaEngine(adm, adm_sc, encoder_factory, decoder_factory); +} + +} // namespace cricket + +#endif // defined(LIBPEERCONNECTION_LIB) || + // defined(LIBPEERCONNECTION_IMPLEMENTATION) |