|
@@ -7,6 +7,15 @@ import * as JitsiTrackEvents from "../../JitsiTrackEvents";
|
7
|
7
|
var EventEmitter = require("events");
|
8
|
8
|
var MediaType = require("../../service/RTC/MediaType");
|
9
|
9
|
|
|
10
|
+/**
|
|
11
|
+ * Maps our handler types to MediaStreamTrack properties.
|
|
12
|
+ */
|
|
13
|
+var trackHandler2Prop = {
|
|
14
|
+ "track_mute": "onmute",//Not supported on FF
|
|
15
|
+ "track_unmute": "onunmute",
|
|
16
|
+ "track_ended": "onended"
|
|
17
|
+};
|
|
18
|
+
|
10
|
19
|
/**
|
11
|
20
|
* This implements 'onended' callback normally fired by WebRTC after the stream
|
12
|
21
|
* is stopped. There is no such behaviour yet in FF, so we have to add it.
|
|
@@ -90,15 +99,20 @@ function JitsiTrack(conference, stream, track, streamInactiveHandler, trackMedia
|
90
|
99
|
* @param {Function} handler the handler.
|
91
|
100
|
*/
|
92
|
101
|
JitsiTrack.prototype._setHandler = function (type, handler) {
|
93
|
|
- if(this.stream) {
|
94
|
|
- if(type === "inactive") {
|
95
|
|
- if (RTCBrowserType.isFirefox()) {
|
96
|
|
- implementOnEndedHandling(this);
|
97
|
|
- }
|
98
|
|
- addMediaStreamInactiveHandler(this.stream, handler);
|
|
102
|
+ this.handlers[type] = handler;
|
|
103
|
+ if(!this.stream)
|
|
104
|
+ return;
|
|
105
|
+
|
|
106
|
+ if(type === "inactive") {
|
|
107
|
+ if (RTCBrowserType.isFirefox()) {
|
|
108
|
+ implementOnEndedHandling(this);
|
99
|
109
|
}
|
|
110
|
+ addMediaStreamInactiveHandler(this.stream, handler);
|
|
111
|
+ } else if(trackHandler2Prop.hasOwnProperty(type)) {
|
|
112
|
+ this.stream.getVideoTracks().forEach(function (track) {
|
|
113
|
+ track[trackHandler2Prop[type]] = handler;
|
|
114
|
+ }, this);
|
100
|
115
|
}
|
101
|
|
- this.handlers[type] = handler;
|
102
|
116
|
}
|
103
|
117
|
|
104
|
118
|
/**
|