Procházet zdrojové kódy

Fixes mutes

master
hristoterezov před 10 roky
rodič
revize
b638495de4

+ 49
- 36
JitsiConference.js Zobrazit soubor

249
     });
249
     });
250
     conference.room.addListener(XMPPEvents.REMOTE_STREAM_RECEIVED,
250
     conference.room.addListener(XMPPEvents.REMOTE_STREAM_RECEIVED,
251
         conference.rtc.createRemoteStream.bind(conference.rtc));
251
         conference.rtc.createRemoteStream.bind(conference.rtc));
252
-    conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_REMOTE_CREATED, function (stream) {
253
-        conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_ADDED, stream);
252
+
253
+    conference.room.addListener(XMPPEvents.MUC_JOINED, function () {
254
+        conference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_JOINED);
255
+    });
256
+//    FIXME
257
+//    conference.room.addListener(XMPPEvents.MUC_JOINED, function () {
258
+//        conference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_LEFT);
259
+//    });
260
+
261
+    conference.room.addListener(XMPPEvents.MUC_MEMBER_JOINED,
262
+        conference.onMemberJoined.bind(conference));
263
+    conference.room.addListener(XMPPEvents.MUC_MEMBER_LEFT,function (jid) {
264
+        conference.eventEmitter.emit(JitsiConferenceEvents.USER_LEFT,
265
+            Strophe.getResourceFromJid(jid));
266
+    });
267
+
268
+    conference.room.addListener(XMPPEvents.DISPLAY_NAME_CHANGED,
269
+        function (from, displayName) {
270
+            conference.eventEmitter.emit(
271
+                JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
272
+                Strophe.getResourceFromJid(from), displayName);
273
+        });
274
+
275
+    conference.room.addListener(XMPPEvents.CONNECTION_INTERRUPTED,
276
+        function () {
277
+            conference.eventEmitter.emit(
278
+                JitsiConferenceEvents.CONNECTION_INTERRUPTED);
279
+        });
280
+
281
+    conference.room.addListener(XMPPEvents.CONNECTION_RESTORED, function () {
282
+        conference.eventEmitter.emit(JitsiConferenceEvents.CONNECTION_RESTORED);
254
     });
283
     });
284
+    conference.room.addListener(XMPPEvents.CONFERENCE_SETUP_FAILED, function() {
285
+        conference.eventEmitter.emit(JitsiConferenceEvents.SETUP_FAILED);
286
+    });
287
+
288
+    conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_REMOTE_CREATED,
289
+        function (stream) {
290
+            conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_ADDED, stream);
291
+        });
292
+
293
+//FIXME: Maybe remove event should not be associated with the conference.
255
     conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_REMOTE_ENDED, function (stream) {
294
     conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_REMOTE_ENDED, function (stream) {
256
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, stream);
295
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, stream);
257
     });
296
     });
297
+//FIXME: Maybe remove event should not be associated with the conference.
258
     conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_LOCAL_ENDED, function (stream) {
298
     conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_LOCAL_ENDED, function (stream) {
259
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, stream);
299
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, stream);
260
         conference.removeTrack(stream);
300
         conference.removeTrack(stream);
261
     });
301
     });
302
+
262
     conference.rtc.addListener(StreamEventTypes.TRACK_MUTE_CHANGED, function (track) {
303
     conference.rtc.addListener(StreamEventTypes.TRACK_MUTE_CHANGED, function (track) {
263
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_MUTE_CHANGED, track);
304
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_MUTE_CHANGED, track);
264
     });
305
     });
265
-    conference.room.addListener(XMPPEvents.MUC_JOINED, function () {
266
-        conference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_JOINED);
267
-    });
268
-//    FIXME
269
-//    conference.room.addListener(XMPPEvents.MUC_JOINED, function () {
270
-//        conference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_LEFT);
271
-//    });
306
+
272
     conference.rtc.addListener(RTCEvents.DOMINANTSPEAKER_CHANGED, function (id) {
307
     conference.rtc.addListener(RTCEvents.DOMINANTSPEAKER_CHANGED, function (id) {
273
         if(conference.lastActiveSpeaker !== id && conference.room) {
308
         if(conference.lastActiveSpeaker !== id && conference.room) {
274
             conference.lastActiveSpeaker = id;
309
             conference.lastActiveSpeaker = id;
286
                 lastNEndpoints, endpointsEnteringLastN);
321
                 lastNEndpoints, endpointsEnteringLastN);
287
         });
322
         });
288
 
323
 
289
-    conference.room.addListener(XMPPEvents.MUC_MEMBER_JOINED, conference.onMemberJoined.bind(conference));
290
-    conference.room.addListener(XMPPEvents.MUC_MEMBER_LEFT,function (jid) {
291
-        conference.eventEmitter.emit(JitsiConferenceEvents.USER_LEFT, Strophe.getResourceFromJid(jid));
292
-    });
293
-
294
-    conference.room.addListener(XMPPEvents.DISPLAY_NAME_CHANGED, function (from, displayName) {
295
-        conference.eventEmitter.emit(JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
296
-            Strophe.getResourceFromJid(from), displayName);
297
-    });
298
-
299
-    conference.room.addListener(XMPPEvents.CONNECTION_INTERRUPTED, function () {
300
-        conference.eventEmitter.emit(JitsiConferenceEvents.CONNECTION_INTERRUPTED);
301
-    });
302
-
303
-    conference.room.addListener(XMPPEvents.CONNECTION_RESTORED, function () {
304
-        conference.eventEmitter.emit(JitsiConferenceEvents.CONNECTION_RESTORED);
305
-    });
306
-    conference.room.addListener(XMPPEvents.CONFERENCE_SETUP_FAILED, function () {
307
-        conference.eventEmitter.emit(JitsiConferenceEvents.SETUP_FAILED);
308
-    });
309
-
310
     if(conference.statistics) {
324
     if(conference.statistics) {
325
+        //FIXME: Maybe remove event should not be associated with the conference.
311
         conference.statistics.addAudioLevelListener(function (ssrc, level) {
326
         conference.statistics.addAudioLevelListener(function (ssrc, level) {
312
             var userId = null;
327
             var userId = null;
313
             if (ssrc === Statistics.LOCAL_JID) {
328
             if (ssrc === Statistics.LOCAL_JID) {
329
             function () {
344
             function () {
330
                 conference.statistics.dispose();
345
                 conference.statistics.dispose();
331
             });
346
             });
332
-        RTC.addListener(RTCEvents.AVAILABLE_DEVICES_CHANGED, function (devices) {
333
-            conference.room.updateDeviceAvailability(devices);
334
-        });
335
-        RTC.addListener(StreamEventTypes.TRACK_MUTE_CHANGED, function (track) {
336
-            conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_MUTE_CHANGED, track);
337
-        });
347
+        // FIXME: Maybe we should move this.
348
+        // RTC.addListener(RTCEvents.AVAILABLE_DEVICES_CHANGED, function (devices) {
349
+        //     conference.room.updateDeviceAvailability(devices);
350
+        // });
338
     }
351
     }
339
 }
352
 }
340
 
353
 

+ 92
- 81
lib-jitsi-meet.js Zobrazit soubor

251
     });
251
     });
252
     conference.room.addListener(XMPPEvents.REMOTE_STREAM_RECEIVED,
252
     conference.room.addListener(XMPPEvents.REMOTE_STREAM_RECEIVED,
253
         conference.rtc.createRemoteStream.bind(conference.rtc));
253
         conference.rtc.createRemoteStream.bind(conference.rtc));
254
-    conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_REMOTE_CREATED, function (stream) {
255
-        conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_ADDED, stream);
254
+
255
+    conference.room.addListener(XMPPEvents.MUC_JOINED, function () {
256
+        conference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_JOINED);
257
+    });
258
+//    FIXME
259
+//    conference.room.addListener(XMPPEvents.MUC_JOINED, function () {
260
+//        conference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_LEFT);
261
+//    });
262
+
263
+    conference.room.addListener(XMPPEvents.MUC_MEMBER_JOINED,
264
+        conference.onMemberJoined.bind(conference));
265
+    conference.room.addListener(XMPPEvents.MUC_MEMBER_LEFT,function (jid) {
266
+        conference.eventEmitter.emit(JitsiConferenceEvents.USER_LEFT,
267
+            Strophe.getResourceFromJid(jid));
256
     });
268
     });
269
+
270
+    conference.room.addListener(XMPPEvents.DISPLAY_NAME_CHANGED,
271
+        function (from, displayName) {
272
+            conference.eventEmitter.emit(
273
+                JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
274
+                Strophe.getResourceFromJid(from), displayName);
275
+        });
276
+
277
+    conference.room.addListener(XMPPEvents.CONNECTION_INTERRUPTED,
278
+        function () {
279
+            conference.eventEmitter.emit(
280
+                JitsiConferenceEvents.CONNECTION_INTERRUPTED);
281
+        });
282
+
283
+    conference.room.addListener(XMPPEvents.CONNECTION_RESTORED, function () {
284
+        conference.eventEmitter.emit(JitsiConferenceEvents.CONNECTION_RESTORED);
285
+    });
286
+    conference.room.addListener(XMPPEvents.CONFERENCE_SETUP_FAILED, function() {
287
+        conference.eventEmitter.emit(JitsiConferenceEvents.SETUP_FAILED);
288
+    });
289
+
290
+    conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_REMOTE_CREATED,
291
+        function (stream) {
292
+            conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_ADDED, stream);
293
+        });
294
+
295
+//FIXME: Maybe remove event should not be associated with the conference.
257
     conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_REMOTE_ENDED, function (stream) {
296
     conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_REMOTE_ENDED, function (stream) {
258
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, stream);
297
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, stream);
259
     });
298
     });
299
+//FIXME: Maybe remove event should not be associated with the conference.
260
     conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_LOCAL_ENDED, function (stream) {
300
     conference.rtc.addListener(StreamEventTypes.EVENT_TYPE_LOCAL_ENDED, function (stream) {
261
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, stream);
301
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, stream);
262
         conference.removeTrack(stream);
302
         conference.removeTrack(stream);
263
     });
303
     });
304
+
264
     conference.rtc.addListener(StreamEventTypes.TRACK_MUTE_CHANGED, function (track) {
305
     conference.rtc.addListener(StreamEventTypes.TRACK_MUTE_CHANGED, function (track) {
265
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_MUTE_CHANGED, track);
306
         conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_MUTE_CHANGED, track);
266
     });
307
     });
267
-    conference.room.addListener(XMPPEvents.MUC_JOINED, function () {
268
-        conference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_JOINED);
269
-    });
270
-//    FIXME
271
-//    conference.room.addListener(XMPPEvents.MUC_JOINED, function () {
272
-//        conference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_LEFT);
273
-//    });
308
+
274
     conference.rtc.addListener(RTCEvents.DOMINANTSPEAKER_CHANGED, function (id) {
309
     conference.rtc.addListener(RTCEvents.DOMINANTSPEAKER_CHANGED, function (id) {
275
         if(conference.lastActiveSpeaker !== id && conference.room) {
310
         if(conference.lastActiveSpeaker !== id && conference.room) {
276
             conference.lastActiveSpeaker = id;
311
             conference.lastActiveSpeaker = id;
288
                 lastNEndpoints, endpointsEnteringLastN);
323
                 lastNEndpoints, endpointsEnteringLastN);
289
         });
324
         });
290
 
325
 
291
-    conference.room.addListener(XMPPEvents.MUC_MEMBER_JOINED, conference.onMemberJoined.bind(conference));
292
-    conference.room.addListener(XMPPEvents.MUC_MEMBER_LEFT,function (jid) {
293
-        conference.eventEmitter.emit(JitsiConferenceEvents.USER_LEFT, Strophe.getResourceFromJid(jid));
294
-    });
295
-
296
-    conference.room.addListener(XMPPEvents.DISPLAY_NAME_CHANGED, function (from, displayName) {
297
-        conference.eventEmitter.emit(JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
298
-            Strophe.getResourceFromJid(from), displayName);
299
-    });
300
-
301
-    conference.room.addListener(XMPPEvents.CONNECTION_INTERRUPTED, function () {
302
-        conference.eventEmitter.emit(JitsiConferenceEvents.CONNECTION_INTERRUPTED);
303
-    });
304
-
305
-    conference.room.addListener(XMPPEvents.CONNECTION_RESTORED, function () {
306
-        conference.eventEmitter.emit(JitsiConferenceEvents.CONNECTION_RESTORED);
307
-    });
308
-    conference.room.addListener(XMPPEvents.CONFERENCE_SETUP_FAILED, function () {
309
-        conference.eventEmitter.emit(JitsiConferenceEvents.SETUP_FAILED);
310
-    });
311
-
312
     if(conference.statistics) {
326
     if(conference.statistics) {
327
+        //FIXME: Maybe remove event should not be associated with the conference.
313
         conference.statistics.addAudioLevelListener(function (ssrc, level) {
328
         conference.statistics.addAudioLevelListener(function (ssrc, level) {
314
             var userId = null;
329
             var userId = null;
315
             if (ssrc === Statistics.LOCAL_JID) {
330
             if (ssrc === Statistics.LOCAL_JID) {
331
             function () {
346
             function () {
332
                 conference.statistics.dispose();
347
                 conference.statistics.dispose();
333
             });
348
             });
334
-        RTC.addListener(RTCEvents.AVAILABLE_DEVICES_CHANGED, function (devices) {
335
-            conference.room.updateDeviceAvailability(devices);
336
-        });
337
-        RTC.addListener(StreamEventTypes.TRACK_MUTE_CHANGED, function (track) {
338
-            conference.eventEmitter.emit(JitsiConferenceEvents.TRACK_MUTE_CHANGED, track);
339
-        });
349
+        // FIXME: Maybe we should move this.
350
+        // RTC.addListener(RTCEvents.AVAILABLE_DEVICES_CHANGED, function (devices) {
351
+        //     conference.room.updateDeviceAvailability(devices);
352
+        // });
340
     }
353
     }
341
 }
354
 }
342
 
355
 
1049
 var JitsiTrack = require("./JitsiTrack");
1062
 var JitsiTrack = require("./JitsiTrack");
1050
 var StreamEventTypes = require("../../service/RTC/StreamEventTypes");
1063
 var StreamEventTypes = require("../../service/RTC/StreamEventTypes");
1051
 var RTCBrowserType = require("./RTCBrowserType");
1064
 var RTCBrowserType = require("./RTCBrowserType");
1065
+var RTC = require("./RTCUtils");
1052
 
1066
 
1053
 /**
1067
 /**
1054
  * Represents a single media track (either audio or video).
1068
  * Represents a single media track (either audio or video).
1055
  * @constructor
1069
  * @constructor
1056
  */
1070
  */
1057
-function JitsiLocalTrack(RTC, stream, eventEmitter, videoType,
1071
+function JitsiLocalTrack(stream, videoType,
1058
   resolution)
1072
   resolution)
1059
 {
1073
 {
1060
-    JitsiTrack.call(this, RTC, stream,
1061
-        function () {
1062
-            if(!self.dontFireRemoveEvent)
1063
-                self.eventEmitter.emit(
1064
-                    StreamEventTypes.EVENT_TYPE_LOCAL_ENDED, self);
1065
-            self.dontFireRemoveEvent = false;
1066
-        });
1067
-    this.eventEmitter = eventEmitter;
1068
     this.videoType = videoType;
1074
     this.videoType = videoType;
1069
     this.dontFireRemoveEvent = false;
1075
     this.dontFireRemoveEvent = false;
1070
     this.resolution = resolution;
1076
     this.resolution = resolution;
1071
     var self = this;
1077
     var self = this;
1078
+    JitsiTrack.call(this, null, stream,
1079
+        function () {
1080
+            if(!self.dontFireRemoveEvent && self.rtc)
1081
+                self.rtc.eventEmitter.emit(
1082
+                    StreamEventTypes.EVENT_TYPE_LOCAL_ENDED, self);
1083
+            self.dontFireRemoveEvent = false;
1084
+        });
1085
+
1072
 }
1086
 }
1073
 
1087
 
1074
 JitsiLocalTrack.prototype = Object.create(JitsiTrack.prototype);
1088
 JitsiLocalTrack.prototype = Object.create(JitsiTrack.prototype);
1099
             this.rtc.room.setAudioMute(mute);
1113
             this.rtc.room.setAudioMute(mute);
1100
         else
1114
         else
1101
             this.rtc.room.setVideoMute(mute);
1115
             this.rtc.room.setVideoMute(mute);
1102
-        this.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, this);
1116
+        this.rtc.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, this);
1103
     } else {
1117
     } else {
1104
         if (mute) {
1118
         if (mute) {
1105
             this.dontFireRemoveEvent = true;
1119
             this.dontFireRemoveEvent = true;
1106
             this.rtc.room.removeStream(this.stream);
1120
             this.rtc.room.removeStream(this.stream);
1107
-            this.rtc.stopMediaStream(this.stream);
1121
+            RTC.stopMediaStream(this.stream);
1108
             if(isAudio)
1122
             if(isAudio)
1109
                 this.rtc.room.setAudioMute(mute);
1123
                 this.rtc.room.setAudioMute(mute);
1110
             else
1124
             else
1111
                 this.rtc.room.setVideoMute(mute);
1125
                 this.rtc.room.setVideoMute(mute);
1112
             this.stream = null;
1126
             this.stream = null;
1113
-            this.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, this);
1127
+            this.rtc.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, this);
1114
             //FIXME: Maybe here we should set the SRC for the containers to something
1128
             //FIXME: Maybe here we should set the SRC for the containers to something
1115
         } else {
1129
         } else {
1116
             var self = this;
1130
             var self = this;
1117
-            var RTC = require("./RTCUtils");
1118
             RTC.obtainAudioAndVideoPermissions({
1131
             RTC.obtainAudioAndVideoPermissions({
1119
                 devices: (isAudio ? ["audio"] : ["video"]),
1132
                 devices: (isAudio ? ["audio"] : ["video"]),
1120
-                resolution: self.resolution,
1121
-                dontCreateJitsiTrack: true})
1133
+                resolution: self.resolution})
1122
                 .then(function (streams) {
1134
                 .then(function (streams) {
1123
                     var stream = null;
1135
                     var stream = null;
1124
                     for(var i = 0; i < streams.length; i++) {
1136
                     for(var i = 0; i < streams.length; i++) {
1144
                                 self.rtc.room.setAudioMute(mute);
1156
                                 self.rtc.room.setAudioMute(mute);
1145
                             else
1157
                             else
1146
                                 self.rtc.room.setVideoMute(mute);
1158
                                 self.rtc.room.setVideoMute(mute);
1147
-                            self.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, self);
1159
+                            self.rtc.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, self);
1148
                         });
1160
                         });
1149
                 });
1161
                 });
1150
         }
1162
         }
1472
 var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
1484
 var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
1473
 var RTCEvents = require("../../service/RTC/RTCEvents.js");
1485
 var RTCEvents = require("../../service/RTC/RTCEvents.js");
1474
 
1486
 
1487
+function createLocalTracks(streams) {
1488
+    var newStreams = []
1489
+    for (var i = 0; i < streams.length; i++) {
1490
+        var localStream = new JitsiLocalTrack(streams[i].stream,
1491
+            streams[i].videoType, streams[i].resolution);
1492
+        newStreams.push(localStream);
1493
+        if (streams[i].isMuted === true)
1494
+            localStream.setMute(true);
1495
+        //FIXME:
1496
+        // var eventType = StreamEventTypes.EVENT_TYPE_LOCAL_CREATED;
1497
+        //
1498
+        // eventEmitter.emit(eventType, localStream);
1499
+    }
1500
+    return newStreams;
1501
+}
1502
+
1475
 function RTC(room, options) {
1503
 function RTC(room, options) {
1476
     this.room = room;
1504
     this.room = room;
1477
     this.localStreams = [];
1505
     this.localStreams = [];
1504
  * @returns {*} Promise object that will receive the new JitsiTracks
1532
  * @returns {*} Promise object that will receive the new JitsiTracks
1505
  */
1533
  */
1506
 RTC.obtainAudioAndVideoPermissions = function (options) {
1534
 RTC.obtainAudioAndVideoPermissions = function (options) {
1507
-    return RTCUtils.obtainAudioAndVideoPermissions(options);
1535
+    return RTCUtils.obtainAudioAndVideoPermissions(options).then(createLocalTracks);
1508
 }
1536
 }
1509
 
1537
 
1510
 RTC.prototype.onIncommingCall = function(event) {
1538
 RTC.prototype.onIncommingCall = function(event) {
1884
 var AdapterJS = require("./adapter.screenshare");
1912
 var AdapterJS = require("./adapter.screenshare");
1885
 var SDPUtil = require("../xmpp/SDPUtil");
1913
 var SDPUtil = require("../xmpp/SDPUtil");
1886
 var EventEmitter = require("events");
1914
 var EventEmitter = require("events");
1887
-var JitsiLocalTrack = require("./JitsiLocalTrack");
1888
-var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
1889
 var screenObtainer = require("./ScreenObtainer");
1915
 var screenObtainer = require("./ScreenObtainer");
1890
 var JitsiMeetJSError = require("../../JitsiMeetJSErrors");
1916
 var JitsiMeetJSError = require("../../JitsiMeetJSErrors");
1891
 
1917
 
2219
 }
2245
 }
2220
 
2246
 
2221
 
2247
 
2222
-function createLocalTracks(streams) {
2223
-    var newStreams = []
2224
-    for (var i = 0; i < streams.length; i++) {
2225
-        var localStream = new JitsiLocalTrack(null, streams[i].stream,
2226
-            eventEmitter, streams[i].videoType, streams[i].resolution);
2227
-        newStreams.push(localStream);
2228
-        if (streams[i].isMuted === true)
2229
-            localStream.setMute(true);
2230
-
2231
-        var eventType = StreamEventTypes.EVENT_TYPE_LOCAL_CREATED;
2232
-
2233
-        eventEmitter.emit(eventType, localStream);
2234
-    }
2235
-    return newStreams;
2236
-}
2237
-
2238
 /**
2248
 /**
2239
  * Handles the newly created Media Streams.
2249
  * Handles the newly created Media Streams.
2240
  * @param streams the new Media Streams
2250
  * @param streams the new Media Streams
2257
             }
2267
             }
2258
 
2268
 
2259
             var videoTracks = audioVideo.getVideoTracks();
2269
             var videoTracks = audioVideo.getVideoTracks();
2260
-            if(audioTracks.length) {
2270
+            if(videoTracks.length) {
2261
                 videoStream = new webkitMediaStream();
2271
                 videoStream = new webkitMediaStream();
2262
                 for (i = 0; i < videoTracks.length; i++) {
2272
                 for (i = 0; i < videoTracks.length; i++) {
2263
                     videoStream.addTrack(videoTracks[i]);
2273
                     videoStream.addTrack(videoTracks[i]);
2520
         options = options || {};
2530
         options = options || {};
2521
         return new Promise(function (resolve, reject) {
2531
         return new Promise(function (resolve, reject) {
2522
             var successCallback = function (stream) {
2532
             var successCallback = function (stream) {
2523
-                var streams = handleLocalStream(stream, options.resolution);
2524
-                resolve(options.dontCreateJitsiTracks?
2525
-                    streams: createLocalTracks(streams));
2533
+                resolve(handleLocalStream(stream, options.resolution));
2526
             };
2534
             };
2527
 
2535
 
2528
             options.devices = options.devices || ['audio', 'video'];
2536
             options.devices = options.devices || ['audio', 'video'];
2529
             if(!screenObtainer.isSupported()
2537
             if(!screenObtainer.isSupported()
2530
                 && options.devices.indexOf("desktop") !== -1){
2538
                 && options.devices.indexOf("desktop") !== -1){
2531
-                options.devices.splice(options.devices.indexOf("desktop"), 1);
2539
+                reject(new Error("Desktop sharing is not supported!"));
2532
             }
2540
             }
2533
             if (RTCBrowserType.isFirefox() ||
2541
             if (RTCBrowserType.isFirefox() ||
2534
                 RTCBrowserType.isTemasysPluginUsed()) {
2542
                 RTCBrowserType.isTemasysPluginUsed()) {
2640
 module.exports = RTCUtils;
2648
 module.exports = RTCUtils;
2641
 
2649
 
2642
 }).call(this,"/modules/RTC/RTCUtils.js")
2650
 }).call(this,"/modules/RTC/RTCUtils.js")
2643
-},{"../../JitsiMeetJSErrors":8,"../../service/RTC/RTCEvents":81,"../../service/RTC/Resolutions":82,"../../service/RTC/StreamEventTypes.js":83,"../xmpp/SDPUtil":30,"./JitsiLocalTrack":11,"./RTCBrowserType":15,"./ScreenObtainer":17,"./adapter.screenshare":18,"events":41,"jitsi-meet-logger":45}],17:[function(require,module,exports){
2651
+},{"../../JitsiMeetJSErrors":8,"../../service/RTC/RTCEvents":81,"../../service/RTC/Resolutions":82,"../xmpp/SDPUtil":30,"./RTCBrowserType":15,"./ScreenObtainer":17,"./adapter.screenshare":18,"events":41,"jitsi-meet-logger":45}],17:[function(require,module,exports){
2644
 (function (__filename){
2652
 (function (__filename){
2645
 /* global chrome, $, alert */
2653
 /* global chrome, $, alert */
2646
 /* jshint -W003 */
2654
 /* jshint -W003 */
8897
 (function (__filename){
8905
 (function (__filename){
8898
 
8906
 
8899
 var logger = require("jitsi-meet-logger").getLogger(__filename);
8907
 var logger = require("jitsi-meet-logger").getLogger(__filename);
8908
+var RTCBrowserType = require("../RTC/RTCBrowserType");
8909
+
8910
+
8900
 SDPUtil = {
8911
 SDPUtil = {
8901
     filter_special_chars: function (text) {
8912
     filter_special_chars: function (text) {
8902
         return text.replace(/[\\\/\{,\}\+]/g, "");
8913
         return text.replace(/[\\\/\{,\}\+]/g, "");
9256
     }
9267
     }
9257
 };
9268
 };
9258
 module.exports = SDPUtil;
9269
 module.exports = SDPUtil;
9270
+
9259
 }).call(this,"/modules/xmpp/SDPUtil.js")
9271
 }).call(this,"/modules/xmpp/SDPUtil.js")
9260
-},{"jitsi-meet-logger":45}],31:[function(require,module,exports){
9272
+},{"../RTC/RTCBrowserType":15,"jitsi-meet-logger":45}],31:[function(require,module,exports){
9261
 (function (__filename){
9273
 (function (__filename){
9262
 /* global $ */
9274
 /* global $ */
9263
 var RTC = require('../RTC/RTC');
9275
 var RTC = require('../RTC/RTC');
9286
     var Interop = require('sdp-interop').Interop;
9298
     var Interop = require('sdp-interop').Interop;
9287
     this.interop = new Interop();
9299
     this.interop = new Interop();
9288
     var Simulcast = require('sdp-simulcast');
9300
     var Simulcast = require('sdp-simulcast');
9289
-    this.simulcast = new Simulcast({numOfLayers: 3, explodeRemoteSimulcast: false});
9301
+    this.simulcast = new Simulcast({numOfLayers: 2, explodeRemoteSimulcast: false});
9290
 
9302
 
9291
     // override as desired
9303
     // override as desired
9292
     this.trace = function (what, info) {
9304
     this.trace = function (what, info) {
9482
             // FIXME this should probably be after the Unified Plan -> Plan B
9494
             // FIXME this should probably be after the Unified Plan -> Plan B
9483
             // transformation.
9495
             // transformation.
9484
             desc = SSRCReplacement.mungeLocalVideoSSRC(desc);
9496
             desc = SSRCReplacement.mungeLocalVideoSSRC(desc);
9485
-            
9497
+
9486
             this.trace('getLocalDescription::preTransform', dumpSDP(desc));
9498
             this.trace('getLocalDescription::preTransform', dumpSDP(desc));
9487
 
9499
 
9488
             // if we're running on FF, transform to Plan B first.
9500
             // if we're running on FF, transform to Plan B first.
9705
 
9717
 
9706
 module.exports = TraceablePeerConnection;
9718
 module.exports = TraceablePeerConnection;
9707
 
9719
 
9708
-
9709
 }).call(this,"/modules/xmpp/TraceablePeerConnection.js")
9720
 }).call(this,"/modules/xmpp/TraceablePeerConnection.js")
9710
 },{"../../service/xmpp/XMPPEvents":88,"../RTC/RTC":14,"../RTC/RTCBrowserType.js":15,"./LocalSSRCReplacement":27,"jitsi-meet-logger":45,"sdp-interop":63,"sdp-simulcast":70,"sdp-transform":77}],32:[function(require,module,exports){
9721
 },{"../../service/xmpp/XMPPEvents":88,"../RTC/RTC":14,"../RTC/RTCBrowserType.js":15,"./LocalSSRCReplacement":27,"jitsi-meet-logger":45,"sdp-interop":63,"sdp-simulcast":70,"sdp-transform":77}],32:[function(require,module,exports){
9711
 (function (__filename){
9722
 (function (__filename){

+ 15
- 16
modules/RTC/JitsiLocalTrack.js Zobrazit soubor

1
 var JitsiTrack = require("./JitsiTrack");
1
 var JitsiTrack = require("./JitsiTrack");
2
 var StreamEventTypes = require("../../service/RTC/StreamEventTypes");
2
 var StreamEventTypes = require("../../service/RTC/StreamEventTypes");
3
 var RTCBrowserType = require("./RTCBrowserType");
3
 var RTCBrowserType = require("./RTCBrowserType");
4
+var RTC = require("./RTCUtils");
4
 
5
 
5
 /**
6
 /**
6
  * Represents a single media track (either audio or video).
7
  * Represents a single media track (either audio or video).
7
  * @constructor
8
  * @constructor
8
  */
9
  */
9
-function JitsiLocalTrack(RTC, stream, eventEmitter, videoType,
10
+function JitsiLocalTrack(stream, videoType,
10
   resolution)
11
   resolution)
11
 {
12
 {
12
-    JitsiTrack.call(this, RTC, stream,
13
-        function () {
14
-            if(!self.dontFireRemoveEvent)
15
-                self.eventEmitter.emit(
16
-                    StreamEventTypes.EVENT_TYPE_LOCAL_ENDED, self);
17
-            self.dontFireRemoveEvent = false;
18
-        });
19
-    this.eventEmitter = eventEmitter;
20
     this.videoType = videoType;
13
     this.videoType = videoType;
21
     this.dontFireRemoveEvent = false;
14
     this.dontFireRemoveEvent = false;
22
     this.resolution = resolution;
15
     this.resolution = resolution;
23
     var self = this;
16
     var self = this;
17
+    JitsiTrack.call(this, null, stream,
18
+        function () {
19
+            if(!self.dontFireRemoveEvent && self.rtc)
20
+                self.rtc.eventEmitter.emit(
21
+                    StreamEventTypes.EVENT_TYPE_LOCAL_ENDED, self);
22
+            self.dontFireRemoveEvent = false;
23
+        });
24
+
24
 }
25
 }
25
 
26
 
26
 JitsiLocalTrack.prototype = Object.create(JitsiTrack.prototype);
27
 JitsiLocalTrack.prototype = Object.create(JitsiTrack.prototype);
51
             this.rtc.room.setAudioMute(mute);
52
             this.rtc.room.setAudioMute(mute);
52
         else
53
         else
53
             this.rtc.room.setVideoMute(mute);
54
             this.rtc.room.setVideoMute(mute);
54
-        this.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, this);
55
+        this.rtc.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, this);
55
     } else {
56
     } else {
56
         if (mute) {
57
         if (mute) {
57
             this.dontFireRemoveEvent = true;
58
             this.dontFireRemoveEvent = true;
58
             this.rtc.room.removeStream(this.stream);
59
             this.rtc.room.removeStream(this.stream);
59
-            this.rtc.stopMediaStream(this.stream);
60
+            RTC.stopMediaStream(this.stream);
60
             if(isAudio)
61
             if(isAudio)
61
                 this.rtc.room.setAudioMute(mute);
62
                 this.rtc.room.setAudioMute(mute);
62
             else
63
             else
63
                 this.rtc.room.setVideoMute(mute);
64
                 this.rtc.room.setVideoMute(mute);
64
             this.stream = null;
65
             this.stream = null;
65
-            this.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, this);
66
+            this.rtc.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, this);
66
             //FIXME: Maybe here we should set the SRC for the containers to something
67
             //FIXME: Maybe here we should set the SRC for the containers to something
67
         } else {
68
         } else {
68
             var self = this;
69
             var self = this;
69
-            var RTC = require("./RTCUtils");
70
             RTC.obtainAudioAndVideoPermissions({
70
             RTC.obtainAudioAndVideoPermissions({
71
                 devices: (isAudio ? ["audio"] : ["video"]),
71
                 devices: (isAudio ? ["audio"] : ["video"]),
72
-                resolution: self.resolution,
73
-                dontCreateJitsiTrack: true})
72
+                resolution: self.resolution})
74
                 .then(function (streams) {
73
                 .then(function (streams) {
75
                     var stream = null;
74
                     var stream = null;
76
                     for(var i = 0; i < streams.length; i++) {
75
                     for(var i = 0; i < streams.length; i++) {
96
                                 self.rtc.room.setAudioMute(mute);
95
                                 self.rtc.room.setAudioMute(mute);
97
                             else
96
                             else
98
                                 self.rtc.room.setVideoMute(mute);
97
                                 self.rtc.room.setVideoMute(mute);
99
-                            self.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, self);
98
+                            self.rtc.eventEmitter.emit(StreamEventTypes.TRACK_MUTE_CHANGED, self);
100
                         });
99
                         });
101
                 });
100
                 });
102
         }
101
         }

+ 17
- 1
modules/RTC/RTC.js Zobrazit soubor

12
 var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
12
 var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
13
 var RTCEvents = require("../../service/RTC/RTCEvents.js");
13
 var RTCEvents = require("../../service/RTC/RTCEvents.js");
14
 
14
 
15
+function createLocalTracks(streams) {
16
+    var newStreams = []
17
+    for (var i = 0; i < streams.length; i++) {
18
+        var localStream = new JitsiLocalTrack(streams[i].stream,
19
+            streams[i].videoType, streams[i].resolution);
20
+        newStreams.push(localStream);
21
+        if (streams[i].isMuted === true)
22
+            localStream.setMute(true);
23
+        //FIXME:
24
+        // var eventType = StreamEventTypes.EVENT_TYPE_LOCAL_CREATED;
25
+        //
26
+        // eventEmitter.emit(eventType, localStream);
27
+    }
28
+    return newStreams;
29
+}
30
+
15
 function RTC(room, options) {
31
 function RTC(room, options) {
16
     this.room = room;
32
     this.room = room;
17
     this.localStreams = [];
33
     this.localStreams = [];
44
  * @returns {*} Promise object that will receive the new JitsiTracks
60
  * @returns {*} Promise object that will receive the new JitsiTracks
45
  */
61
  */
46
 RTC.obtainAudioAndVideoPermissions = function (options) {
62
 RTC.obtainAudioAndVideoPermissions = function (options) {
47
-    return RTCUtils.obtainAudioAndVideoPermissions(options);
63
+    return RTCUtils.obtainAudioAndVideoPermissions(options).then(createLocalTracks);
48
 }
64
 }
49
 
65
 
50
 RTC.prototype.onIncommingCall = function(event) {
66
 RTC.prototype.onIncommingCall = function(event) {

+ 3
- 23
modules/RTC/RTCUtils.js Zobrazit soubor

7
 var AdapterJS = require("./adapter.screenshare");
7
 var AdapterJS = require("./adapter.screenshare");
8
 var SDPUtil = require("../xmpp/SDPUtil");
8
 var SDPUtil = require("../xmpp/SDPUtil");
9
 var EventEmitter = require("events");
9
 var EventEmitter = require("events");
10
-var JitsiLocalTrack = require("./JitsiLocalTrack");
11
-var StreamEventTypes = require("../../service/RTC/StreamEventTypes.js");
12
 var screenObtainer = require("./ScreenObtainer");
10
 var screenObtainer = require("./ScreenObtainer");
13
 var JitsiMeetJSError = require("../../JitsiMeetJSErrors");
11
 var JitsiMeetJSError = require("../../JitsiMeetJSErrors");
14
 
12
 
342
 }
340
 }
343
 
341
 
344
 
342
 
345
-function createLocalTracks(streams) {
346
-    var newStreams = []
347
-    for (var i = 0; i < streams.length; i++) {
348
-        var localStream = new JitsiLocalTrack(null, streams[i].stream,
349
-            eventEmitter, streams[i].videoType, streams[i].resolution);
350
-        newStreams.push(localStream);
351
-        if (streams[i].isMuted === true)
352
-            localStream.setMute(true);
353
-
354
-        var eventType = StreamEventTypes.EVENT_TYPE_LOCAL_CREATED;
355
-
356
-        eventEmitter.emit(eventType, localStream);
357
-    }
358
-    return newStreams;
359
-}
360
-
361
 /**
343
 /**
362
  * Handles the newly created Media Streams.
344
  * Handles the newly created Media Streams.
363
  * @param streams the new Media Streams
345
  * @param streams the new Media Streams
380
             }
362
             }
381
 
363
 
382
             var videoTracks = audioVideo.getVideoTracks();
364
             var videoTracks = audioVideo.getVideoTracks();
383
-            if(audioTracks.length) {
365
+            if(videoTracks.length) {
384
                 videoStream = new webkitMediaStream();
366
                 videoStream = new webkitMediaStream();
385
                 for (i = 0; i < videoTracks.length; i++) {
367
                 for (i = 0; i < videoTracks.length; i++) {
386
                     videoStream.addTrack(videoTracks[i]);
368
                     videoStream.addTrack(videoTracks[i]);
643
         options = options || {};
625
         options = options || {};
644
         return new Promise(function (resolve, reject) {
626
         return new Promise(function (resolve, reject) {
645
             var successCallback = function (stream) {
627
             var successCallback = function (stream) {
646
-                var streams = handleLocalStream(stream, options.resolution);
647
-                resolve(options.dontCreateJitsiTracks?
648
-                    streams: createLocalTracks(streams));
628
+                resolve(handleLocalStream(stream, options.resolution));
649
             };
629
             };
650
 
630
 
651
             options.devices = options.devices || ['audio', 'video'];
631
             options.devices = options.devices || ['audio', 'video'];
652
             if(!screenObtainer.isSupported()
632
             if(!screenObtainer.isSupported()
653
                 && options.devices.indexOf("desktop") !== -1){
633
                 && options.devices.indexOf("desktop") !== -1){
654
-                options.devices.splice(options.devices.indexOf("desktop"), 1);
634
+                reject(new Error("Desktop sharing is not supported!"));
655
             }
635
             }
656
             if (RTCBrowserType.isFirefox() ||
636
             if (RTCBrowserType.isFirefox() ||
657
                 RTCBrowserType.isTemasysPluginUsed()) {
637
                 RTCBrowserType.isTemasysPluginUsed()) {

+ 4
- 1
modules/xmpp/SDPUtil.js Zobrazit soubor

1
 
1
 
2
 var logger = require("jitsi-meet-logger").getLogger(__filename);
2
 var logger = require("jitsi-meet-logger").getLogger(__filename);
3
+var RTCBrowserType = require("../RTC/RTCBrowserType");
4
+
5
+
3
 SDPUtil = {
6
 SDPUtil = {
4
     filter_special_chars: function (text) {
7
     filter_special_chars: function (text) {
5
         return text.replace(/[\\\/\{,\}\+]/g, "");
8
         return text.replace(/[\\\/\{,\}\+]/g, "");
358
         return line + '\r\n';
361
         return line + '\r\n';
359
     }
362
     }
360
 };
363
 };
361
-module.exports = SDPUtil;
364
+module.exports = SDPUtil;

+ 2
- 3
modules/xmpp/TraceablePeerConnection.js Zobrazit soubor

25
     var Interop = require('sdp-interop').Interop;
25
     var Interop = require('sdp-interop').Interop;
26
     this.interop = new Interop();
26
     this.interop = new Interop();
27
     var Simulcast = require('sdp-simulcast');
27
     var Simulcast = require('sdp-simulcast');
28
-    this.simulcast = new Simulcast({numOfLayers: 3, explodeRemoteSimulcast: false});
28
+    this.simulcast = new Simulcast({numOfLayers: 2, explodeRemoteSimulcast: false});
29
 
29
 
30
     // override as desired
30
     // override as desired
31
     this.trace = function (what, info) {
31
     this.trace = function (what, info) {
221
             // FIXME this should probably be after the Unified Plan -> Plan B
221
             // FIXME this should probably be after the Unified Plan -> Plan B
222
             // transformation.
222
             // transformation.
223
             desc = SSRCReplacement.mungeLocalVideoSSRC(desc);
223
             desc = SSRCReplacement.mungeLocalVideoSSRC(desc);
224
-            
224
+
225
             this.trace('getLocalDescription::preTransform', dumpSDP(desc));
225
             this.trace('getLocalDescription::preTransform', dumpSDP(desc));
226
 
226
 
227
             // if we're running on FF, transform to Plan B first.
227
             // if we're running on FF, transform to Plan B first.
443
 };
443
 };
444
 
444
 
445
 module.exports = TraceablePeerConnection;
445
 module.exports = TraceablePeerConnection;
446
-

Načítá se…
Zrušit
Uložit