summaryrefslogtreecommitdiff
path: root/media/webrtc/webrtcmediaengine.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/webrtc/webrtcmediaengine.cc')
-rw-r--r--media/webrtc/webrtcmediaengine.cc79
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)