|
|
@@ -42,23 +42,10 @@ function RTC(room, options) {
|
|
42
|
42
|
var self = this;
|
|
43
|
43
|
this.options = options || {};
|
|
44
|
44
|
room.addPresenceListener("videomuted", function (values, from) {
|
|
45
|
|
- if(!self.remoteTracks[from])
|
|
46
|
|
- return;
|
|
47
|
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
|
50
|
room.addPresenceListener("audiomuted", function (values, from) {
|
|
64
|
51
|
var audioTrack = self.getRemoteAudioTrack(from);
|
|
|
@@ -254,21 +241,26 @@ RTC.prototype.removeLocalTrack = function (track) {
|
|
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
|
251
|
RTC.prototype.createRemoteTrack = function (event) {
|
|
258
|
252
|
var ownerJid = event.owner;
|
|
259
|
253
|
var remoteTrack = new JitsiRemoteTrack(
|
|
260
|
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
|
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
|
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
|
264
|
return remoteTrack;
|
|
273
|
265
|
};
|
|
274
|
266
|
|