瀏覽代碼

Merge pull request #113 from jitsi/removes_fake_tracks

Removes fake video tracks from the code
master
lyubomir 9 年之前
父節點
當前提交
2f0d4befd8
共有 4 個文件被更改,包括 30 次插入45 次删除
  1. 13
    17
      JitsiConference.js
  2. 1
    3
      modules/RTC/JitsiRemoteTrack.js
  3. 15
    23
      modules/RTC/RTC.js
  4. 1
    2
      service/RTC/RTCEvents.js

+ 13
- 17
JitsiConference.js 查看文件

629
     this.eventEmitter.emit(JitsiConferenceEvents.DISPLAY_NAME_CHANGED, id, displayName);
629
     this.eventEmitter.emit(JitsiConferenceEvents.DISPLAY_NAME_CHANGED, id, displayName);
630
 };
630
 };
631
 
631
 
632
+/**
633
+ * Notifies this JitsiConference that a JitsiRemoteTrack was added (into the
634
+ * ChatRoom of this JitsiConference).
635
+ *
636
+ * @param {JitsiRemoteTrack} track the JitsiRemoteTrack which was added to this
637
+ * JitsiConference
638
+ */
632
 JitsiConference.prototype.onTrackAdded = function (track) {
639
 JitsiConference.prototype.onTrackAdded = function (track) {
633
     var id = track.getParticipantId();
640
     var id = track.getParticipantId();
634
     var participant = this.getParticipantById(id);
641
     var participant = this.getParticipantById(id);
636
         return;
643
         return;
637
     }
644
     }
638
 
645
 
639
-    //FIXME: This is temporary fix
640
-    //Make sure that no fake tracks are left.
641
-    if(track.isVideoTrack() && !track.isFake) {
642
-        //Remove the fake video track
643
-        participant._tracks = participant._tracks.filter(function (track) {
644
-            return !track.isFake;
645
-        });
646
-    }
647
-
648
-    // add track to JitsiParticipant
646
+    // Add track to JitsiParticipant.
649
     participant._tracks.push(track);
647
     participant._tracks.push(track);
650
 
648
 
651
     var emitter = this.eventEmitter;
649
     var emitter = this.eventEmitter;
658
     track.addEventListener(
656
     track.addEventListener(
659
         JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED,
657
         JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED,
660
         function (audioLevel) {
658
         function (audioLevel) {
661
-            emitter.emit(JitsiConferenceEvents.TRACK_AUDIO_LEVEL_CHANGED, id, audioLevel);
659
+            emitter.emit(
660
+                JitsiConferenceEvents.TRACK_AUDIO_LEVEL_CHANGED,
661
+                id,
662
+                audioLevel);
662
         }
663
         }
663
     );
664
     );
664
 
665
 
665
-    this.eventEmitter.emit(JitsiConferenceEvents.TRACK_ADDED, track);
666
+    emitter.emit(JitsiConferenceEvents.TRACK_ADDED, track);
666
 };
667
 };
667
 
668
 
668
 JitsiConference.prototype.updateDTMFSupport = function () {
669
 JitsiConference.prototype.updateDTMFSupport = function () {
966
             });
967
             });
967
         }
968
         }
968
     );
969
     );
969
-    conference.rtc.addListener(RTCEvents.FAKE_VIDEO_TRACK_CREATED,
970
-        function (track) {
971
-            conference.onTrackAdded(track);
972
-        }
973
-    );
974
 
970
 
975
     conference.room.addListener(XMPPEvents.AUDIO_MUTED_BY_FOCUS,
971
     conference.room.addListener(XMPPEvents.AUDIO_MUTED_BY_FOCUS,
976
         function (value) {
972
         function (value) {

+ 1
- 3
modules/RTC/JitsiRemoteTrack.js 查看文件

11
  * @param videoType the VideoType of the JitsiRemoteTrack
11
  * @param videoType the VideoType of the JitsiRemoteTrack
12
  * @param ssrc the SSRC number of the Media Stream
12
  * @param ssrc the SSRC number of the Media Stream
13
  * @param muted intial muted state of the JitsiRemoteTrack
13
  * @param muted intial muted state of the JitsiRemoteTrack
14
- * @param isFake true if the track is not associated with Media Stream.
15
  * @constructor
14
  * @constructor
16
  */
15
  */
17
 function JitsiRemoteTrack(RTC, ownerJid, stream, track, mediaType, videoType,
16
 function JitsiRemoteTrack(RTC, ownerJid, stream, track, mediaType, videoType,
18
-                          ssrc, muted, isFake) {
17
+                          ssrc, muted) {
19
     JitsiTrack.call(
18
     JitsiTrack.call(
20
         this, RTC, stream, track, function () {}, mediaType, videoType, ssrc);
19
         this, RTC, stream, track, function () {}, mediaType, videoType, ssrc);
21
     this.rtc = RTC;
20
     this.rtc = RTC;
22
     this.peerjid = ownerJid;
21
     this.peerjid = ownerJid;
23
     this.muted = muted;
22
     this.muted = muted;
24
-    this.isFake = isFake? isFake : false;
25
 }
23
 }
26
 
24
 
27
 JitsiRemoteTrack.prototype = Object.create(JitsiTrack.prototype);
25
 JitsiRemoteTrack.prototype = Object.create(JitsiTrack.prototype);

+ 15
- 23
modules/RTC/RTC.js 查看文件

42
     var self = this;
42
     var self = this;
43
     this.options = options || {};
43
     this.options = options || {};
44
     room.addPresenceListener("videomuted", function (values, from) {
44
     room.addPresenceListener("videomuted", function (values, from) {
45
-        if(!self.remoteTracks[from])
46
-            return;
47
         var videoTrack = self.getRemoteVideoTrack(from);
45
         var videoTrack = self.getRemoteVideoTrack(from);
48
-        // If there is no video track, but we receive it is muted,
49
-        // we need to create a dummy track which we will mute, so we can
50
-        // notify interested about the muting
51
-        if (!videoTrack) {
52
-            videoTrack = self.createRemoteTrack({
53
-                    owner: room.roomjid + "/" + from,
54
-                    videoType: VideoType.CAMERA,
55
-                    mediaType: MediaType.VIDEO,
56
-                    isFake: true
57
-                });
58
-            self.eventEmitter
59
-                .emit(RTCEvents.FAKE_VIDEO_TRACK_CREATED, videoTrack);
46
+        if (videoTrack) {
47
+            videoTrack.setMute(values.value == "true");
60
         }
48
         }
61
-        videoTrack.setMute(values.value == "true");
62
     });
49
     });
63
     room.addPresenceListener("audiomuted", function (values, from) {
50
     room.addPresenceListener("audiomuted", function (values, from) {
64
         var audioTrack = self.getRemoteAudioTrack(from);
51
         var audioTrack = self.getRemoteAudioTrack(from);
254
     }
241
     }
255
 };
242
 };
256
 
243
 
244
+/**
245
+ * Initializes a new JitsiRemoteTrack instance with the data provided by (a)
246
+ * ChatRoom to XMPPEvents.REMOTE_TRACK_ADDED.
247
+ *
248
+ * @param {Object} event the data provided by (a) ChatRoom to
249
+ * XMPPEvents.REMOTE_TRACK_ADDED to (a)
250
+ */
257
 RTC.prototype.createRemoteTrack = function (event) {
251
 RTC.prototype.createRemoteTrack = function (event) {
258
     var ownerJid = event.owner;
252
     var ownerJid = event.owner;
259
     var remoteTrack = new JitsiRemoteTrack(
253
     var remoteTrack = new JitsiRemoteTrack(
260
         this,  ownerJid, event.stream,    event.track,
254
         this,  ownerJid, event.stream,    event.track,
261
-        event.mediaType, event.videoType, event.ssrc, event.muted, event.isFake);
255
+        event.mediaType, event.videoType, event.ssrc, event.muted);
262
     var resource = Strophe.getResourceFromJid(ownerJid);
256
     var resource = Strophe.getResourceFromJid(ownerJid);
263
-    if(!this.remoteTracks[resource]) {
264
-        this.remoteTracks[resource] = {};
265
-    }
257
+    var remoteTracks
258
+        = this.remoteTracks[resource] || (this.remoteTracks[resource] = {});
266
     var mediaType = remoteTrack.getType();
259
     var mediaType = remoteTrack.getType();
267
-    if (this.remoteTracks[resource][mediaType]) {
268
-        logger.warn(
269
-            "Overwriting remote track !", resource, mediaType);
260
+    if (remoteTracks[mediaType]) {
261
+        logger.warn("Overwriting remote track!", resource, mediaType);
270
     }
262
     }
271
-    this.remoteTracks[resource][mediaType] = remoteTrack;
263
+    remoteTracks[mediaType] = remoteTrack;
272
     return remoteTrack;
264
     return remoteTrack;
273
 };
265
 };
274
 
266
 

+ 1
- 2
service/RTC/RTCEvents.js 查看文件

5
     DOMINANTSPEAKER_CHANGED: "rtc.dominantspeaker_changed",
5
     DOMINANTSPEAKER_CHANGED: "rtc.dominantspeaker_changed",
6
     LASTN_ENDPOINT_CHANGED: "rtc.lastn_endpoint_changed",
6
     LASTN_ENDPOINT_CHANGED: "rtc.lastn_endpoint_changed",
7
     AVAILABLE_DEVICES_CHANGED: "rtc.available_devices_changed",
7
     AVAILABLE_DEVICES_CHANGED: "rtc.available_devices_changed",
8
-    FAKE_VIDEO_TRACK_CREATED: "rtc.fake_video_track_created",
9
     TRACK_ATTACHED: "rtc.track_attached",
8
     TRACK_ATTACHED: "rtc.track_attached",
10
     AUDIO_OUTPUT_DEVICE_CHANGED: "rtc.audio_output_device_changed",
9
     AUDIO_OUTPUT_DEVICE_CHANGED: "rtc.audio_output_device_changed",
11
     DEVICE_LIST_CHANGED: "rtc.device_list_changed"
10
     DEVICE_LIST_CHANGED: "rtc.device_list_changed"
12
 };
11
 };
13
 
12
 
14
-module.exports = RTCEvents;
13
+module.exports = RTCEvents;

Loading…
取消
儲存