From 54ea1da98e9e7ac8e8069c38b8dc113a4f38e530 Mon Sep 17 00:00:00 2001 From: Philipp Hancke Date: Mon, 25 Aug 2014 15:04:59 +0200 Subject: [PATCH 1/3] use only a single GUM call --- app.js | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/app.js b/app.js index afd786b38..af47a030c 100644 --- a/app.js +++ b/app.js @@ -100,11 +100,23 @@ function connect(jid, password) { if (config.useStunTurn) { connection.jingle.getStunAndTurnCredentials(); } - obtainAudioAndVideoPermissions(function () { - getUserMediaWithConstraints(['audio'], audioStreamReady, - function (error) { - console.error('failed to obtain audio stream - stop', error); - }); + obtainAudioAndVideoPermissions(function (stream) { + audioStream = new webkitMediaStream(stream); + videoStream = new webkitMediaStream(stream); + var videoTracks = stream.getVideoTracks(); + var audioTracks = stream.getAudioTracks(); + for (var i = 0; i < videoTracks.length; i++) { + audioStream.removeTrack(videoTracks[i]); + } + audioStreamReady(audioStream); + VideoLayout.changeLocalAudio(audioStream); + startLocalRtpStatsCollector(audioStream); + + for (i = 0; i < audioTracks.length; i++) { + videoStream.removeTrack(audioTracks[i]); + } + VideoLayout.changeLocalVideo(videoStream, true); + doJoin(); }); document.getElementById('connect').disabled = true; @@ -146,8 +158,7 @@ function obtainAudioAndVideoPermissions(callback) { getUserMediaWithConstraints( ['audio', 'video'], function (avStream) { - avStream.stop(); - callback(); + callback(avStream); }, function (error) { console.error('failed to obtain audio/video stream - stop', error); @@ -156,24 +167,7 @@ function obtainAudioAndVideoPermissions(callback) { function audioStreamReady(stream) { - VideoLayout.changeLocalAudio(stream); - startLocalRtpStatsCollector(stream); - - if (RTC.browser !== 'firefox') { - getUserMediaWithConstraints(['video'], - videoStreamReady, - videoStreamFailed, - config.resolution || '360'); - } else { - doJoin(); - } -} - -function videoStreamReady(stream) { - VideoLayout.changeLocalVideo(stream, true); - - doJoin(); } function videoStreamFailed(error) { From c6f7e192d0f8f8daa0607c748c5e4959cbe63e4b Mon Sep 17 00:00:00 2001 From: Philipp Hancke Date: Mon, 25 Aug 2014 15:29:54 +0200 Subject: [PATCH 2/3] move GUM to body.onload --- app.js | 51 ++++++++++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/app.js b/app.js index af47a030c..37eabf0fd 100644 --- a/app.js +++ b/app.js @@ -69,6 +69,24 @@ function init() { return; } + obtainAudioAndVideoPermissions(function (stream) { + var audioStream = new webkitMediaStream(stream); + var videoStream = new webkitMediaStream(stream); + var videoTracks = stream.getVideoTracks(); + var audioTracks = stream.getAudioTracks(); + for (var i = 0; i < videoTracks.length; i++) { + audioStream.removeTrack(videoTracks[i]); + } + VideoLayout.changeLocalAudio(audioStream); + startLocalRtpStatsCollector(audioStream); + + for (i = 0; i < audioTracks.length; i++) { + videoStream.removeTrack(audioTracks[i]); + } + VideoLayout.changeLocalVideo(videoStream, true); + maybeDoJoin(); + }); + var jid = document.getElementById('jid').value || config.hosts.anonymousdomain || config.hosts.domain || window.location.hostname; connect(jid); } @@ -100,29 +118,11 @@ function connect(jid, password) { if (config.useStunTurn) { connection.jingle.getStunAndTurnCredentials(); } - obtainAudioAndVideoPermissions(function (stream) { - audioStream = new webkitMediaStream(stream); - videoStream = new webkitMediaStream(stream); - var videoTracks = stream.getVideoTracks(); - var audioTracks = stream.getAudioTracks(); - for (var i = 0; i < videoTracks.length; i++) { - audioStream.removeTrack(videoTracks[i]); - } - audioStreamReady(audioStream); - VideoLayout.changeLocalAudio(audioStream); - startLocalRtpStatsCollector(audioStream); - - for (i = 0; i < audioTracks.length; i++) { - videoStream.removeTrack(audioTracks[i]); - } - VideoLayout.changeLocalVideo(videoStream, true); - doJoin(); - }); - document.getElementById('connect').disabled = true; if(password) authenticatedUser = true; + maybeDoJoin(); } else if (status === Strophe.Status.CONNFAIL) { if(msg === 'x-strophe-bad-non-anon-jid') { anonymousConnectionFailed = true; @@ -165,16 +165,13 @@ function obtainAudioAndVideoPermissions(callback) { }); } -function audioStreamReady(stream) { - - +function maybeDoJoin() { + if (connection && connection.connected && Strophe.getResourceFromJid(connection.jid) // .connected is true while connecting? + && (connection.jingle.localAudio || connection.jingle.localVideo)) { + doJoin(); + } } -function videoStreamFailed(error) { - console.warn("Failed to obtain video stream - continue anyway", error); - - doJoin(); -} function doJoin() { var roomnode = null; From 7d1d3b1e7e0d195d12db264e4ca5aa7f493f1425 Mon Sep 17 00:00:00 2001 From: paweldomas Date: Mon, 25 Aug 2014 16:02:18 +0200 Subject: [PATCH 3/3] Fixes video ratio. --- app.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app.js b/app.js index 37eabf0fd..6c12dcb23 100644 --- a/app.js +++ b/app.js @@ -162,7 +162,8 @@ function obtainAudioAndVideoPermissions(callback) { }, function (error) { console.error('failed to obtain audio/video stream - stop', error); - }); + }, + config.resolution || '360'); } function maybeDoJoin() {