Attempts to fix the resolution N/A problem.
This commit is contained in:
parent
f7880c96ce
commit
68e6afbd61
59
simulcast.js
59
simulcast.js
|
@ -233,6 +233,7 @@ SimulcastReceiver.prototype._remoteVideoSourceCache = '';
|
|||
SimulcastReceiver.prototype._remoteMaps = {
|
||||
msid2Quality: {},
|
||||
ssrc2Msid: {},
|
||||
msid2ssrc: {},
|
||||
receivingVideoStreams: {}
|
||||
};
|
||||
|
||||
|
@ -308,6 +309,7 @@ SimulcastReceiver.prototype._updateRemoteMaps = function (lines) {
|
|||
// (re) initialize the remote maps.
|
||||
this._remoteMaps.msid2Quality = {};
|
||||
this._remoteMaps.ssrc2Msid = {};
|
||||
this._remoteMaps.msid2ssrc = {};
|
||||
|
||||
var self = this;
|
||||
if (remoteVideoSources.groups && remoteVideoSources.groups.length !== 0) {
|
||||
|
@ -318,6 +320,7 @@ SimulcastReceiver.prototype._updateRemoteMaps = function (lines) {
|
|||
videoSource = remoteVideoSources.sources[ssrc];
|
||||
self._remoteMaps.msid2Quality[videoSource.msid] = quality++;
|
||||
self._remoteMaps.ssrc2Msid[videoSource.ssrc] = videoSource.msid;
|
||||
self._remoteMaps.msid2ssrc[videoSource.msid] = videoSource.ssrc;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -373,6 +376,57 @@ SimulcastReceiver.prototype.getReceivingVideoStream = function (stream) {
|
|||
: stream;
|
||||
};
|
||||
|
||||
SimulcastReceiver.prototype.getReceivingSSRC = function (jid) {
|
||||
var resource = Strophe.getResourceFromJid(jid);
|
||||
var ssrc = this._remoteMaps.receivingVideoStreams[resource];
|
||||
|
||||
// If we haven't receiving a "changed" event yet, then we must be receiving
|
||||
// low quality (that the sender always streams).
|
||||
if (!ssrc && connection.jingle) {
|
||||
var session;
|
||||
var i, j, k;
|
||||
|
||||
var keys = Object.keys(connection.jingle.sessions);
|
||||
for (i = 0; i < keys.length; i++) {
|
||||
var sid = keys[i];
|
||||
|
||||
if (ssrc) {
|
||||
// stream found, stop.
|
||||
break;
|
||||
}
|
||||
|
||||
session = connection.jingle.sessions[sid];
|
||||
if (session.remoteStreams) {
|
||||
for (j = 0; j < session.remoteStreams.length; j++) {
|
||||
var remoteStream = session.remoteStreams[j];
|
||||
|
||||
if (ssrc) {
|
||||
// stream found, stop.
|
||||
break;
|
||||
}
|
||||
var tracks = remoteStream.getVideoTracks();
|
||||
if (tracks) {
|
||||
for (k = 0; k < tracks.length; k++) {
|
||||
var track = tracks[k];
|
||||
var msid = [remoteStream.id, track.id].join(' ');
|
||||
var _ssrc = this._remoteMaps.msid2ssrc[msid];
|
||||
var _jid = ssrc2jid[_ssrc];
|
||||
var quality = this._remoteMaps.msid2Quality[msid];
|
||||
if (jid == _jid && quality == 0) {
|
||||
ssrc = _ssrc;
|
||||
// stream found, stop.
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ssrc;
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the fully qualified msid (stream.id + track.id) associated to the
|
||||
* SSRC.
|
||||
|
@ -1063,6 +1117,11 @@ SimulcastManager.prototype.transformAnswer = function (desc) {
|
|||
return this.simulcastSender.transformAnswer(desc);
|
||||
};
|
||||
|
||||
SimulcastManager.prototype.getReceivingSSRC = function (jid) {
|
||||
return this.simulcastReceiver.getReceivingSSRC(jid);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param lines
|
||||
|
|
|
@ -8,8 +8,6 @@ var VideoLayout = (function (my) {
|
|||
};
|
||||
my.connectionIndicators = {};
|
||||
|
||||
var displayedSsrcs = {};
|
||||
|
||||
my.changeLocalAudio = function(stream) {
|
||||
connection.jingle.localAudio = stream;
|
||||
|
||||
|
@ -1587,9 +1585,8 @@ var VideoLayout = (function (my) {
|
|||
if (updateFocusedVideoSrc) {
|
||||
focusedVideoSrc = electedStreamUrl;
|
||||
}
|
||||
var ssrc = videoSrcToSsrc[selRemoteVideo.attr('src')];
|
||||
displayedSsrcs[ssrc2jid[ssrc]] = ssrc;
|
||||
var jid = ssrc2jid[ssrc];
|
||||
|
||||
var jid = ssrc2jid[primarySSRC];
|
||||
var videoId;
|
||||
if(jid == connection.emuc.myroomjid)
|
||||
{
|
||||
|
@ -1703,7 +1700,8 @@ var VideoLayout = (function (my) {
|
|||
}
|
||||
else if(keys.length > 1)
|
||||
{
|
||||
resolutionValue = this.resolution[displayedSsrcs[this.jid]];
|
||||
var displayedSsrc = simulcast.getReceivingSSRC(this.jid);
|
||||
resolutionValue = this.resolution[displayedSsrc];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue