Bladeren bron

feat(JitsiTrack): Implement interface for adding handlers to MediaStream

dev1
hristoterezov 9 jaren geleden
bovenliggende
commit
1b05d28a3a
1 gewijzigde bestanden met toevoegingen van 21 en 7 verwijderingen
  1. 21
    7
      modules/RTC/JitsiTrack.js

+ 21
- 7
modules/RTC/JitsiTrack.js Bestand weergeven

7
 var EventEmitter = require("events");
7
 var EventEmitter = require("events");
8
 var MediaType = require("../../service/RTC/MediaType");
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
  * This implements 'onended' callback normally fired by WebRTC after the stream
20
  * This implements 'onended' callback normally fired by WebRTC after the stream
12
  * is stopped. There is no such behaviour yet in FF, so we have to add it.
21
  * is stopped. There is no such behaviour yet in FF, so we have to add it.
90
  * @param {Function} handler the handler.
99
  * @param {Function} handler the handler.
91
  */
100
  */
92
 JitsiTrack.prototype._setHandler = function (type, handler) {
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
 /**

Laden…
Annuleren
Opslaan