|
@@ -303,6 +303,9 @@ ColibriFocus.prototype._makeConference = function () {
|
303
|
303
|
|
304
|
304
|
elem.c(elemName, elemAttrs);
|
305
|
305
|
elem.attrs({ endpoint: peer.substr(1 + peer.lastIndexOf('/')) });
|
|
306
|
+ if ('channel' === elemName && config.useRtcpMux) {
|
|
307
|
+ elem.c('rtcp-mux').up();
|
|
308
|
+ }
|
306
|
309
|
elem.up(); // end of channel/sctpconnection
|
307
|
310
|
}
|
308
|
311
|
elem.up(); // end of content
|
|
@@ -407,6 +410,7 @@ ColibriFocus.prototype.createdConference = function (result) {
|
407
|
410
|
'a=rtpmap:13 CN/8000\r\n' +
|
408
|
411
|
'a=rtpmap:126 telephone-event/8000\r\n' +
|
409
|
412
|
'a=maxptime:60\r\n' +
|
|
413
|
+ (config.useRtcpMux ? 'a=rtcp-mux\r\n' : '') +
|
410
|
414
|
/* Video */
|
411
|
415
|
'm=video 1 RTP/SAVPF 100 116 117\r\n' +
|
412
|
416
|
'c=IN IP4 0.0.0.0\r\n' +
|
|
@@ -421,6 +425,7 @@ ColibriFocus.prototype.createdConference = function (result) {
|
421
|
425
|
'a=rtcp-fb:100 goog-remb\r\n' +
|
422
|
426
|
'a=rtpmap:116 red/90000\r\n' +
|
423
|
427
|
'a=rtpmap:117 ulpfec/90000\r\n' +
|
|
428
|
+ (config.useRtcpMux ? 'a=rtcp-mux\r\n' : '') +
|
424
|
429
|
/* Data SCTP */
|
425
|
430
|
(config.openSctp ?
|
426
|
431
|
'm=application 1 DTLS/SCTP 5000\r\n' +
|
|
@@ -617,7 +622,9 @@ ColibriFocus.prototype.initiate = function (peer, isInitiator) {
|
617
|
622
|
sdp.removeSessionLines('a=group:');
|
618
|
623
|
sdp.removeSessionLines('a=msid-semantic:'); // FIXME: not mapped over jingle anyway...
|
619
|
624
|
for (var i = 0; i < sdp.media.length; i++) {
|
620
|
|
- sdp.removeMediaLines(i, 'a=rtcp-mux');
|
|
625
|
+ if (!config.useRtcpMux){
|
|
626
|
+ sdp.removeMediaLines(i, 'a=rtcp-mux');
|
|
627
|
+ }
|
621
|
628
|
sdp.removeMediaLines(i, 'a=ssrc:');
|
622
|
629
|
sdp.removeMediaLines(i, 'a=crypto:');
|
623
|
630
|
sdp.removeMediaLines(i, 'a=candidate:');
|
|
@@ -774,6 +781,9 @@ ColibriFocus.prototype.addNewParticipant = function (peer) {
|
774
|
781
|
|
775
|
782
|
elem.c('content', { name: name });
|
776
|
783
|
elem.c(elemName, elemAttrs);
|
|
784
|
+ if ('channel' === elemName && config.useRtcpMux) {
|
|
785
|
+ elem.c('rtcp-mux').up();
|
|
786
|
+ }
|
777
|
787
|
elem.up(); // end of channel/sctpconnection
|
778
|
788
|
elem.up(); // end of content
|
779
|
789
|
});
|
|
@@ -821,6 +831,9 @@ ColibriFocus.prototype.updateChannel = function (remoteSDP, participant) {
|
821
|
831
|
endpoint: $(this.channels[participant][channel]).attr('endpoint'),
|
822
|
832
|
expire: self.channelExpire
|
823
|
833
|
});
|
|
834
|
+ if (config.useRtcpMux) {
|
|
835
|
+ change.c('rtcp-mux').up();
|
|
836
|
+ }
|
824
|
837
|
|
825
|
838
|
var rtpmap = SDPUtil.find_lines(remoteSDP.media[channel], 'a=rtpmap:');
|
826
|
839
|
rtpmap.forEach(function (val) {
|
|
@@ -1031,6 +1044,10 @@ ColibriFocus.prototype.addIceCandidate = function (session, elem) {
|
1031
|
1044
|
endpoint: $(self.channels[participant][channel]).attr('endpoint'),
|
1032
|
1045
|
expire: self.channelExpire
|
1033
|
1046
|
});
|
|
1047
|
+
|
|
1048
|
+ if (config.useRtcpMux) {
|
|
1049
|
+ change.c('rtcp-mux').up();
|
|
1050
|
+ }
|
1034
|
1051
|
}
|
1035
|
1052
|
else
|
1036
|
1053
|
{
|
|
@@ -1114,6 +1131,10 @@ ColibriFocus.prototype.sendIceCandidates = function (candidates) {
|
1114
|
1131
|
endpoint: $(this.mychannel[cands[0].sdpMLineIndex]).attr('endpoint'),
|
1115
|
1132
|
expire: self.channelExpire
|
1116
|
1133
|
});
|
|
1134
|
+ if (config.useRtcpMux) {
|
|
1135
|
+ mycands.c('rtcp-mux').up();
|
|
1136
|
+ }
|
|
1137
|
+
|
1117
|
1138
|
}
|
1118
|
1139
|
else
|
1119
|
1140
|
{
|