Bläddra i källkod

Factors simulcast related code.

j8
George Politis 11 år sedan
förälder
incheckning
e8de53413b
2 ändrade filer med 62 tillägg och 78 borttagningar
  1. 50
    0
      simulcast.js
  2. 12
    78
      videolayout.js

+ 50
- 0
simulcast.js Visa fil

@@ -427,6 +427,53 @@ SimulcastReceiver.prototype.getReceivingSSRC = function (jid) {
427 427
     return ssrc;
428 428
 };
429 429
 
430
+SimulcastReceiver.prototype.getReceivingVideoStreamBySSRC = function (ssrc)
431
+{
432
+    var session, electedStream;
433
+    var i, j, k;
434
+    if (connection.jingle) {
435
+        var keys = Object.keys(connection.jingle.sessions);
436
+        for (i = 0; i < keys.length; i++) {
437
+            var sid = keys[i];
438
+
439
+            if (electedStream) {
440
+                // stream found, stop.
441
+                break;
442
+            }
443
+
444
+            session = connection.jingle.sessions[sid];
445
+            if (session.remoteStreams) {
446
+                for (j = 0; j < session.remoteStreams.length; j++) {
447
+                    var remoteStream = session.remoteStreams[j];
448
+
449
+                    if (electedStream) {
450
+                        // stream found, stop.
451
+                        break;
452
+                    }
453
+                    var tracks = remoteStream.getVideoTracks();
454
+                    if (tracks) {
455
+                        for (k = 0; k < tracks.length; k++) {
456
+                            var track = tracks[k];
457
+                            var msid = [remoteStream.id, track.id].join(' ');
458
+                            var tmp = this._remoteMaps.msid2ssrc[msid];
459
+                            if (tmp == ssrc) {
460
+                                electedStream = new webkitMediaStream([track]);
461
+                                // stream found, stop.
462
+                                break;
463
+                            }
464
+                        }
465
+                    }
466
+                }
467
+            }
468
+        }
469
+    }
470
+
471
+    return {
472
+        session: session,
473
+        stream: electedStream
474
+    };
475
+};
476
+
430 477
 /**
431 478
  * Gets the fully qualified msid (stream.id + track.id) associated to the
432 479
  * SSRC.
@@ -1121,6 +1168,9 @@ SimulcastManager.prototype.getReceivingSSRC = function (jid) {
1121 1168
     return this.simulcastReceiver.getReceivingSSRC(jid);
1122 1169
 };
1123 1170
 
1171
+SimulcastManager.prototype.getReceivingVideoStreamBySSRC = function (msid) {
1172
+    return this.simulcastReceiver.getReceivingVideoStreamBySSRC(msid);
1173
+};
1124 1174
 
1125 1175
 /**
1126 1176
  *

+ 12
- 78
videolayout.js Visa fil

@@ -1428,48 +1428,15 @@ var VideoLayout = (function (my) {
1428 1428
     $(document).bind('simulcastlayerschanging', function (event, endpointSimulcastLayers) {
1429 1429
         endpointSimulcastLayers.forEach(function (esl) {
1430 1430
             var primarySSRC = esl.simulcastLayer.primarySSRC;
1431
-            var msid = simulcast.getRemoteVideoStreamIdBySSRC(primarySSRC);
1432
-
1433
-            // Get session and stream from msid.
1434
-            var session, electedStream;
1435
-            var i, j, k;
1436
-            if (connection.jingle) {
1437
-                var keys = Object.keys(connection.jingle.sessions);
1438
-                for (i = 0; i < keys.length; i++) {
1439
-                    var sid = keys[i];
1440
-
1441
-                    if (electedStream) {
1442
-                        // stream found, stop.
1443
-                        break;
1444
-                    }
1445 1431
 
1446
-                    session = connection.jingle.sessions[sid];
1447
-                    if (session.remoteStreams) {
1448
-                        for (j = 0; j < session.remoteStreams.length; j++) {
1449
-                            var remoteStream = session.remoteStreams[j];
1450
-
1451
-                            if (electedStream) {
1452
-                                // stream found, stop.
1453
-                                break;
1454
-                            }
1455
-                            var tracks = remoteStream.getVideoTracks();
1456
-                            if (tracks) {
1457
-                                for (k = 0; k < tracks.length; k++) {
1458
-                                    var track = tracks[k];
1459
-
1460
-                                    if (msid === [remoteStream.id, track.id].join(' ')) {
1461
-                                        electedStream = new webkitMediaStream([track]);
1462
-                                        // stream found, stop.
1463
-                                        break;
1464
-                                    }
1465
-                                }
1466
-                            }
1467
-                        }
1468
-                    }
1469
-                }
1470
-            }
1432
+            // Get session and stream from primary ssrc.
1433
+            var res = simulcast.getReceivingVideoStreamBySSRC(primarySSRC);
1434
+            var session = res.session;
1435
+            var electedStream = res.stream;
1471 1436
 
1472 1437
             if (session && electedStream) {
1438
+                var msid = simulcast.getRemoteVideoStreamIdBySSRC(primarySSRC);
1439
+
1473 1440
                 console.info([esl, primarySSRC, msid, session, electedStream]);
1474 1441
 
1475 1442
                 var msidParts = msid.split(' ');
@@ -1506,48 +1473,15 @@ var VideoLayout = (function (my) {
1506 1473
         endpointSimulcastLayers.forEach(function (esl) {
1507 1474
 
1508 1475
             var primarySSRC = esl.simulcastLayer.primarySSRC;
1509
-            var msid = simulcast.getRemoteVideoStreamIdBySSRC(primarySSRC);
1510
-
1511
-            // Get session and stream from msid.
1512
-            var session, electedStream;
1513
-            var i, j, k;
1514
-            if (connection.jingle) {
1515
-                var keys = Object.keys(connection.jingle.sessions);
1516
-                for (i = 0; i < keys.length; i++) {
1517
-                    var sid = keys[i];
1518
-
1519
-                    if (electedStream) {
1520
-                        // stream found, stop.
1521
-                        break;
1522
-                    }
1523 1476
 
1524
-                    session = connection.jingle.sessions[sid];
1525
-                    if (session.remoteStreams) {
1526
-                        for (j = 0; j < session.remoteStreams.length; j++) {
1527
-                            var remoteStream = session.remoteStreams[j];
1528
-
1529
-                            if (electedStream) {
1530
-                                // stream found, stop.
1531
-                                break;
1532
-                            }
1533
-                            var tracks = remoteStream.getVideoTracks();
1534
-                            if (tracks) {
1535
-                                for (k = 0; k < tracks.length; k++) {
1536
-                                    var track = tracks[k];
1537
-
1538
-                                    if (msid === [remoteStream.id, track.id].join(' ')) {
1539
-                                        electedStream = new webkitMediaStream([track]);
1540
-                                        // stream found, stop.
1541
-                                        break;
1542
-                                    }
1543
-                                }
1544
-                            }
1545
-                        }
1546
-                    }
1547
-                }
1548
-            }
1477
+            // Get session and stream from primary ssrc.
1478
+            var res = simulcast.getReceivingVideoStreamBySSRC(primarySSRC);
1479
+            var session = res.session;
1480
+            var electedStream = res.stream;
1549 1481
 
1550 1482
             if (session && electedStream) {
1483
+                var msid = simulcast.getRemoteVideoStreamIdBySSRC(primarySSRC);
1484
+
1551 1485
                 console.info('Switching simulcast substream.');
1552 1486
                 console.info([esl, primarySSRC, msid, session, electedStream]);
1553 1487
 

Laddar…
Avbryt
Spara