|
|
|
@ -54,6 +54,8 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -54,6 +54,8 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
|
|
|
|
|
this.started = false; |
|
|
|
|
this.initiator = null; |
|
|
|
|
|
|
|
|
|
this.usermedia = null; |
|
|
|
|
this.audioMute = false; |
|
|
|
|
this.videoMute = false; |
|
|
|
|
|
|
|
|
@ -112,7 +114,8 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -112,7 +114,8 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
videoSendCodec: "VP8/90000" |
|
|
|
|
//videoRecvBitrate: ,
|
|
|
|
|
//videoRecvCodec
|
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
renegotiation: true |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
this.screensharingSettings = { |
|
|
|
@ -121,17 +124,6 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -121,17 +124,6 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
|
|
|
|
|
this.api.e.bind("received.offer received.candidate received.answer received.bye received.conference", _.bind(this.processReceived, this)); |
|
|
|
|
|
|
|
|
|
// Create default media (audio/video).
|
|
|
|
|
this.usermedia = new UserMedia(); |
|
|
|
|
this.usermedia.e.on("mediasuccess mediaerror", _.bind(function() { |
|
|
|
|
// Start always, no matter what.
|
|
|
|
|
this.maybeStart(); |
|
|
|
|
}, this)); |
|
|
|
|
this.usermedia.e.on("mediachanged", _.bind(function() { |
|
|
|
|
// Propagate media change events.
|
|
|
|
|
this.e.triggerHandler("usermedia", [this.usermedia]); |
|
|
|
|
}, this)); |
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
WebRTC.prototype.processReceived = function(event, to, data, type, to2, from) { |
|
|
|
@ -396,6 +388,39 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -396,6 +388,39 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
WebRTC.prototype.doUserMedia = function(currentcall) { |
|
|
|
|
|
|
|
|
|
// Create default media (audio/video).
|
|
|
|
|
var usermedia = new UserMedia({ |
|
|
|
|
renegotiation: this.settings.renegotiation, |
|
|
|
|
audioMute: this.audioMute, |
|
|
|
|
videoMute: this.videoMute |
|
|
|
|
}); |
|
|
|
|
usermedia.e.on("mediasuccess mediaerror", _.bind(function(event, um) { |
|
|
|
|
this.e.triggerHandler("usermedia", [usermedia]); |
|
|
|
|
// Start always, no matter what.
|
|
|
|
|
this.maybeStart(um); |
|
|
|
|
}, this)); |
|
|
|
|
usermedia.e.on("mediachanged", _.bind(function(event, um) { |
|
|
|
|
// Propagate media change events.
|
|
|
|
|
this.e.triggerHandler("usermedia", [um]); |
|
|
|
|
}, this)); |
|
|
|
|
usermedia.e.on("stopped", _.bind(function(event, um) { |
|
|
|
|
if (um === this.usermedia) { |
|
|
|
|
this.e.triggerHandler("usermedia", [null]); |
|
|
|
|
this.usermedia = null; |
|
|
|
|
} |
|
|
|
|
}, this)); |
|
|
|
|
this.e.one("stop", function() { |
|
|
|
|
usermedia.stop(); |
|
|
|
|
}); |
|
|
|
|
this.usermedia = usermedia; |
|
|
|
|
this.e.triggerHandler("usermedia", [usermedia]); |
|
|
|
|
|
|
|
|
|
return usermedia.doGetUserMedia(currentcall); |
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
WebRTC.prototype.doCall = function(id) { |
|
|
|
|
|
|
|
|
|
if (this.currentcall) { |
|
|
|
@ -413,7 +438,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -413,7 +438,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
} else { |
|
|
|
|
var currentcall = this.currentcall = this.createCall(id, null, id); |
|
|
|
|
this.e.triggerHandler("peercall", [currentcall]); |
|
|
|
|
var ok = this.usermedia.doGetUserMedia(currentcall); |
|
|
|
|
var ok = this.doUserMedia(currentcall); |
|
|
|
|
if (ok) { |
|
|
|
|
this.e.triggerHandler("waitforusermedia", [currentcall]); |
|
|
|
|
} else { |
|
|
|
@ -432,7 +457,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -432,7 +457,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
console.warn("Trying to accept without a call.", currentcall); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
var ok = this.usermedia.doGetUserMedia(currentcall); |
|
|
|
|
var ok = this.doUserMedia(currentcall); |
|
|
|
|
if (ok) { |
|
|
|
|
this.e.triggerHandler("waitforusermedia", [currentcall]); |
|
|
|
|
} else { |
|
|
|
@ -501,7 +526,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -501,7 +526,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
WebRTC.prototype.doScreenshare = function(options) { |
|
|
|
|
|
|
|
|
|
var usermedia = new UserMedia({ |
|
|
|
|
noaudio: true |
|
|
|
|
noAudio: true |
|
|
|
|
}); |
|
|
|
|
var ok = usermedia.doGetUserMedia(null, PeerScreenshare.getCaptureMediaConstraints(this, options)); |
|
|
|
|
if (ok) { |
|
|
|
@ -579,11 +604,9 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -579,11 +604,9 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
this.currentcall.close(); |
|
|
|
|
this.currentcall = null; |
|
|
|
|
} |
|
|
|
|
if (this.usermedia) { |
|
|
|
|
this.usermedia.stop(); |
|
|
|
|
} |
|
|
|
|
this.e.triggerHandler("peerconference", [null]); |
|
|
|
|
this.e.triggerHandler("peercall", [null]); |
|
|
|
|
this.e.triggerHandler("stop"); |
|
|
|
|
this.msgQueue.length = 0; |
|
|
|
|
this.initiator = null; |
|
|
|
|
this.started = false; |
|
|
|
@ -629,7 +652,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -629,7 +652,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
WebRTC.prototype.maybeStart = function() { |
|
|
|
|
WebRTC.prototype.maybeStart = function(usermedia) { |
|
|
|
|
|
|
|
|
|
//console.log("maybeStart", this.started);
|
|
|
|
|
if (!this.started) { |
|
|
|
@ -640,14 +663,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
@@ -640,14 +663,7 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
|
|
|
|
|
console.log('Creating PeerConnection.', currentcall); |
|
|
|
|
currentcall.createPeerConnection(_.bind(function(peerconnection) { |
|
|
|
|
// Success call.
|
|
|
|
|
if (this.usermedia) { |
|
|
|
|
this.usermedia.applyVideoMute(this.videoMute); |
|
|
|
|
this.usermedia.applyAudioMute(this.audioMute); |
|
|
|
|
this.e.triggerHandler("usermedia", [this.usermedia]); |
|
|
|
|
this.usermedia.addToPeerConnection(peerconnection); |
|
|
|
|
} else { |
|
|
|
|
_.defer(peerconnection.negotiationNeeded); |
|
|
|
|
} |
|
|
|
|
usermedia.addToPeerConnection(peerconnection); |
|
|
|
|
this.started = true; |
|
|
|
|
if (!this.initiator) { |
|
|
|
|
this.calleeStart(); |
|
|
|
|