From bad68141827cf93ef933cbee51a62d689b636a4e Mon Sep 17 00:00:00 2001 From: Contra Date: Wed, 16 Dec 2015 20:29:53 +0100 Subject: [PATCH] attach rtc options to the stream so you can reconstruct the implementation as needed --- platforms/chrome/gum.js | 3 ++- platforms/cordova-ios/gum.js | 3 ++- platforms/edge/gum.js | 9 +++++---- platforms/firefox/gum.js | 9 +++++---- platforms/ie/gum.js | 3 ++- platforms/react-native/gum.js | 4 ++-- platforms/safari/gum.js | 3 ++- util/onStreamLoaded/isVideoWorking.js | 5 ++++- 8 files changed, 24 insertions(+), 15 deletions(-) diff --git a/platforms/chrome/gum.js b/platforms/chrome/gum.js index 0d7ff0c..d340be1 100644 --- a/platforms/chrome/gum.js +++ b/platforms/chrome/gum.js @@ -1,6 +1,6 @@ 'use strict'; -module.exports = function() { +module.exports = function(opt) { var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia; @@ -15,6 +15,7 @@ module.exports = function() { } function success(stream) { + stream._rtcOpt = opt; cb(null, stream); } diff --git a/platforms/cordova-ios/gum.js b/platforms/cordova-ios/gum.js index ace50ba..26889f4 100644 --- a/platforms/cordova-ios/gum.js +++ b/platforms/cordova-ios/gum.js @@ -4,7 +4,7 @@ function needPlatform(){ throw new Error('Missing iosrtc plugin for getUserMedia'); } -module.exports = function() { +module.exports = function(opt) { return function(constraints, cb) { if (typeof cordova === 'undefined') return needPlatform(); if (typeof cordova.plugins === 'undefined') return needPlatform(); @@ -20,6 +20,7 @@ module.exports = function() { } function success(stream) { + stream._rtcOpt = opt; cb(null, stream); } diff --git a/platforms/edge/gum.js b/platforms/edge/gum.js index 9e2aeba..5d8b273 100644 --- a/platforms/edge/gum.js +++ b/platforms/edge/gum.js @@ -1,10 +1,10 @@ 'use strict'; -module.exports = function() { - var getUserMedia = navigator.getUserMedia || - navigator.msGetUserMedia; - +module.exports = function(opt) { return function(constraints, cb) { + var getUserMedia = navigator.getUserMedia || + navigator.msGetUserMedia; + // make constraints optional if (arguments.length !== 2) { cb = constraints; @@ -15,6 +15,7 @@ module.exports = function() { } function success(stream) { + stream._rtcOpt = opt; cb(null, stream); } diff --git a/platforms/firefox/gum.js b/platforms/firefox/gum.js index a4a075e..ab35ba3 100644 --- a/platforms/firefox/gum.js +++ b/platforms/firefox/gum.js @@ -1,10 +1,10 @@ 'use strict'; -module.exports = function() { - var getUserMedia = navigator.getUserMedia || - navigator.mozGetUserMedia; - +module.exports = function(opt) { return function(constraints, cb) { + var getUserMedia = navigator.getUserMedia || + navigator.mozGetUserMedia; + // make constraints optional if (arguments.length !== 2) { cb = constraints; @@ -15,6 +15,7 @@ module.exports = function() { } function success(stream) { + stream._rtcOpt = opt; cb(null, stream); } diff --git a/platforms/ie/gum.js b/platforms/ie/gum.js index f4ebc47..fd82519 100644 --- a/platforms/ie/gum.js +++ b/platforms/ie/gum.js @@ -1,6 +1,6 @@ 'use strict'; -module.exports = function() { +module.exports = function(opt) { var temasys = require('../../lib/temasys'); temasys(); // start loading ahead of time @@ -15,6 +15,7 @@ module.exports = function() { } function success(stream) { + stream._rtcOpt = opt; cb(null, stream); } diff --git a/platforms/react-native/gum.js b/platforms/react-native/gum.js index 413f49e..eb86303 100644 --- a/platforms/react-native/gum.js +++ b/platforms/react-native/gum.js @@ -1,6 +1,6 @@ 'use strict'; -module.exports = function() { +module.exports = function(opt) { var rtc; try { rtc = require('react-native-webrtc'); @@ -8,7 +8,6 @@ module.exports = function() { return; } var getUserMedia = navigator.getUserMedia; - if (typeof getUserMedia === 'undefined') return; return function(constraints, cb) { // make constraints optional @@ -21,6 +20,7 @@ module.exports = function() { } function success(stream) { + stream._rtcOpt = opt; cb(null, stream); } diff --git a/platforms/safari/gum.js b/platforms/safari/gum.js index f4ebc47..fd82519 100644 --- a/platforms/safari/gum.js +++ b/platforms/safari/gum.js @@ -1,6 +1,6 @@ 'use strict'; -module.exports = function() { +module.exports = function(opt) { var temasys = require('../../lib/temasys'); temasys(); // start loading ahead of time @@ -15,6 +15,7 @@ module.exports = function() { } function success(stream) { + stream._rtcOpt = opt; cb(null, stream); } diff --git a/util/onStreamLoaded/isVideoWorking.js b/util/onStreamLoaded/isVideoWorking.js index 2f10102..1294353 100644 --- a/util/onStreamLoaded/isVideoWorking.js +++ b/util/onStreamLoaded/isVideoWorking.js @@ -2,6 +2,7 @@ var hasValidTrack = require('./hasValidTrack'); var crel = require('crel'); +var rtc = require('../../'); var timeoutTime = 20000; // basic premise: @@ -13,6 +14,8 @@ function isVideoWorking(stream, cb){ if (!hasValidTrack(stream, 'video')) return cb('dead video'); if (stream._videoMeta) return cb(null, stream._videoMeta); + var rtcInst = rtc(stream._rtcOpt); + var vidEl, actualEl; var finished = false; var timeout = setTimeout(finishIt.bind(null, 'no video data'), timeoutTime); @@ -40,7 +43,7 @@ function isVideoWorking(stream, cb){ style: 'display: none;' }); - actualEl = attach(stream, vidEl); + actualEl = rtcInst.attachStream(stream, vidEl); actualEl.addEventListener('canplay', canPlay, false); actualEl.addEventListener('playing', canPlay, false); }