diff --git a/talk/media/webrtc/webrtcmediaengine.h b/talk/media/webrtc/webrtcmediaengine.h index 84319a11f..6ca39e7dc 100644 --- a/talk/media/webrtc/webrtcmediaengine.h +++ b/talk/media/webrtc/webrtcmediaengine.h @@ -175,6 +175,9 @@ class WebRtcMediaEngine : public cricket::MediaEngineInterface { #else #include "talk/media/webrtc/webrtcvideoengine.h" +#ifdef WEBRTC_CHROMIUM_BUILD +#include "talk/media/webrtc/webrtcvideoengine2.h" +#endif #include "talk/media/webrtc/webrtcvoiceengine.h" namespace cricket { @@ -195,6 +198,23 @@ class WebRtcMediaEngine : public WebRtcCompositeMediaEngine { } }; +#ifdef WEBRTC_CHROMIUM_BUILD +typedef CompositeMediaEngine + WebRtcCompositeMediaEngine2; + +class WebRtcMediaEngine2 : public WebRtcCompositeMediaEngine2 { + 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 + } // namespace cricket #endif // !defined(LIBPEERCONNECTION_LIB) && diff --git a/talk/media/webrtc/webrtcvideoengine.cc b/talk/media/webrtc/webrtcvideoengine.cc index 8df48fc4f..a029ec27e 100644 --- a/talk/media/webrtc/webrtcvideoengine.cc +++ b/talk/media/webrtc/webrtcvideoengine.cc @@ -62,6 +62,9 @@ #include "talk/media/webrtc/webrtcvoiceengine.h" #include "webrtc/experiments.h" #include "webrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h" +#ifdef WEBRTC_CHROMIUM_BUILD +#include "webrtc/system_wrappers/interface/field_trial.h" +#endif #if !defined(LIBPEERCONNECTION_LIB) #include "talk/media/webrtc/webrtcmediaengine.h" @@ -71,13 +74,30 @@ cricket::MediaEngineInterface* CreateWebRtcMediaEngine( webrtc::AudioDeviceModule* adm, webrtc::AudioDeviceModule* adm_sc, cricket::WebRtcVideoEncoderFactory* encoder_factory, cricket::WebRtcVideoDecoderFactory* decoder_factory) { - return new cricket::WebRtcMediaEngine(adm, adm_sc, encoder_factory, - decoder_factory); +#ifdef WEBRTC_CHROMIUM_BUILD + if (webrtc::field_trial::FindFullName("WebRTC-NewVideoAPI") == "Enabled") { + return new cricket::WebRtcMediaEngine2( + adm, adm_sc, encoder_factory, decoder_factory); + } else { +#endif + return new cricket::WebRtcMediaEngine( + adm, adm_sc, encoder_factory, decoder_factory); +#ifdef WEBRTC_CHROMIUM_BUILD + } +#endif } WRME_EXPORT void DestroyWebRtcMediaEngine(cricket::MediaEngineInterface* media_engine) { - delete static_cast(media_engine); +#ifdef WEBRTC_CHROMIUM_BUILD + if (webrtc::field_trial::FindFullName("WebRTC-NewVideoAPI") == "Enabled") { + delete static_cast(media_engine); + } else { +#endif + delete static_cast(media_engine); +#ifdef WEBRTC_CHROMIUM_BUILD + } +#endif } #endif