@techsee/techsee-media-service 999.20.0-nodejs.lite.2 → 999.20.1-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/README.md +28 -27
  2. package/lib/LocalStreamManager.d.ts +0 -1
  3. package/lib/LocalStreamManager.d.ts.map +1 -1
  4. package/lib/LocalStreamManager.js +84 -82
  5. package/lib/LocalStreamManager.js.map +1 -1
  6. package/lib/MediaConstants.d.ts +3 -21
  7. package/lib/MediaConstants.d.ts.map +1 -1
  8. package/lib/MediaConstants.js +13 -32
  9. package/lib/MediaConstants.js.map +1 -1
  10. package/lib/MediaContracts.d.ts +3 -9
  11. package/lib/MediaContracts.d.ts.map +1 -1
  12. package/lib/MediaContracts.js +4 -1
  13. package/lib/MediaContracts.js.map +1 -1
  14. package/lib/MediaPublisher.d.ts +0 -1
  15. package/lib/MediaPublisher.d.ts.map +1 -1
  16. package/lib/MediaPublisher.js +10 -7
  17. package/lib/MediaPublisher.js.map +1 -1
  18. package/lib/MediaServiceBase.d.ts +0 -1
  19. package/lib/MediaServiceBase.d.ts.map +1 -1
  20. package/lib/MediaServiceBase.js +199 -170
  21. package/lib/MediaServiceBase.js.map +1 -1
  22. package/lib/MediaSession/MediaServer.d.ts +0 -1
  23. package/lib/MediaSession/MediaServer.d.ts.map +1 -1
  24. package/lib/MediaSession/MediaServer.js +74 -62
  25. package/lib/MediaSession/MediaServer.js.map +1 -1
  26. package/lib/MediaSession/MediaSessionBase.d.ts +0 -1
  27. package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
  28. package/lib/MediaSession/MediaSessionBase.js +23 -19
  29. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  30. package/lib/MediaSession/SessionOpentok.d.ts +2 -3
  31. package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
  32. package/lib/MediaSession/SessionOpentok.js +80 -51
  33. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  34. package/lib/MediaSession/SessionTurn.d.ts +0 -1
  35. package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
  36. package/lib/MediaSession/SessionTurn.js +151 -109
  37. package/lib/MediaSession/SessionTurn.js.map +1 -1
  38. package/lib/MediaSession/TurnConstants.d.ts +0 -1
  39. package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
  40. package/lib/MediaSession/TurnConstants.js +16 -1
  41. package/lib/MediaSession/TurnConstants.js.map +1 -1
  42. package/lib/MediaSubscriber.d.ts +0 -1
  43. package/lib/MediaSubscriber.d.ts.map +1 -1
  44. package/lib/MediaSubscriber.js +43 -37
  45. package/lib/MediaSubscriber.js.map +1 -1
  46. package/lib/MediaUtils/Compatibility.d.ts +0 -3
  47. package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
  48. package/lib/MediaUtils/Compatibility.js +34 -76
  49. package/lib/MediaUtils/Compatibility.js.map +1 -1
  50. package/lib/MediaUtils/MediaDomUtils.d.ts +3 -6
  51. package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
  52. package/lib/MediaUtils/MediaDomUtils.js +65 -70
  53. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  54. package/lib/MediaUtils/MediaTracer.d.ts +0 -1
  55. package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
  56. package/lib/MediaUtils/MediaTracer.js +5 -2
  57. package/lib/MediaUtils/MediaTracer.js.map +1 -1
  58. package/lib/MultiParty/DetectWebRtcService.d.ts +14 -17
  59. package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
  60. package/lib/MultiParty/DetectWebRtcService.js +54 -98
  61. package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
  62. package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +10 -0
  63. package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +1 -0
  64. package/lib/MultiParty/MediaCapabilitiesHelper.js +140 -0
  65. package/lib/MultiParty/MediaCapabilitiesHelper.js.map +1 -0
  66. package/lib/MultiParty/MultiParty.d.ts +21 -0
  67. package/lib/MultiParty/MultiParty.d.ts.map +1 -0
  68. package/lib/MultiParty/MultiParty.js +160 -0
  69. package/lib/MultiParty/MultiParty.js.map +1 -0
  70. package/lib/MultiParty/OpentokMultiparty.d.ts +32 -0
  71. package/lib/MultiParty/OpentokMultiparty.d.ts.map +1 -0
  72. package/lib/MultiParty/OpentokMultiparty.js +184 -0
  73. package/lib/MultiParty/OpentokMultiparty.js.map +1 -0
  74. package/lib/TechseeMediaStream.d.ts +0 -1
  75. package/lib/TechseeMediaStream.d.ts.map +1 -1
  76. package/lib/TechseeMediaStream.js +12 -9
  77. package/lib/TechseeMediaStream.js.map +1 -1
  78. package/lib/oldCode/constants.js +20 -0
  79. package/lib/oldCode/constants.js.map +1 -0
  80. package/lib/oldCode/event-emitter.js +39 -0
  81. package/lib/oldCode/event-emitter.js.map +1 -0
  82. package/lib/oldCode/index.js +64 -0
  83. package/lib/oldCode/index.js.map +1 -0
  84. package/lib/oldCode/opentok/session.js +310 -0
  85. package/lib/oldCode/opentok/session.js.map +1 -0
  86. package/lib/oldCode/opentok/stream.js +310 -0
  87. package/lib/oldCode/opentok/stream.js.map +1 -0
  88. package/lib/oldCode/publisher.js +143 -0
  89. package/lib/oldCode/publisher.js.map +1 -0
  90. package/lib/oldCode/service.js +395 -0
  91. package/lib/oldCode/service.js.map +1 -0
  92. package/lib/oldCode/session.js +110 -0
  93. package/lib/oldCode/session.js.map +1 -0
  94. package/lib/oldCode/stream.js +195 -0
  95. package/lib/oldCode/stream.js.map +1 -0
  96. package/lib/oldCode/subscriber.js +90 -0
  97. package/lib/oldCode/subscriber.js.map +1 -0
  98. package/lib/oldCode/tracer.d.ts +36 -0
  99. package/lib/oldCode/tracer.d.ts.map +1 -0
  100. package/lib/oldCode/tracer.js +161 -0
  101. package/lib/oldCode/tracer.js.map +1 -0
  102. package/lib/oldCode/utils/ImageFixer.d.ts +1 -0
  103. package/lib/oldCode/utils/ImageFixer.d.ts.map +1 -0
  104. package/lib/oldCode/utils/ImageFixer.js +59 -0
  105. package/lib/oldCode/utils/ImageFixer.js.map +1 -0
  106. package/lib/oldCode/webrtc/constants.js +114 -0
  107. package/lib/oldCode/webrtc/constants.js.map +1 -0
  108. package/lib/oldCode/webrtc/helper.js +173 -0
  109. package/lib/oldCode/webrtc/helper.js.map +1 -0
  110. package/lib/oldCode/webrtc/session-kms.js +558 -0
  111. package/lib/oldCode/webrtc/session-kms.js.map +1 -0
  112. package/lib/oldCode/webrtc/session-loopback.js +336 -0
  113. package/lib/oldCode/webrtc/session-loopback.js.map +1 -0
  114. package/lib/oldCode/webrtc/session-turn.js +880 -0
  115. package/lib/oldCode/webrtc/session-turn.js.map +1 -0
  116. package/lib/oldCode/webrtc/session-turn.v2.js +583 -0
  117. package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -0
  118. package/lib/oldCode/webrtc/session.js +52 -0
  119. package/lib/oldCode/webrtc/session.js.map +1 -0
  120. package/lib/oldCode/webrtc/stream.js +674 -0
  121. package/lib/oldCode/webrtc/stream.js.map +1 -0
  122. package/lib/oldCode/webrtc/temasys/adapter-loader.js +12 -0
  123. package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -0
  124. package/lib/oldCode/webrtc/temasys/adapter.js +5861 -0
  125. package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -0
  126. package/lib/oldCode/webrtc/webrtc-ie-shim.js +3007 -0
  127. package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -0
  128. package/lib/qos/raw-qos.js +145 -84
  129. package/lib/qos/raw-qos.js.map +1 -1
  130. package/lib/webrtc-ie-shim.js +2950 -1896
  131. package/lib/webrtc-ie-shim.js.map +1 -1
  132. package/package.json +59 -65
  133. package/lib/MediaUtils/index.d.ts +0 -2
  134. package/lib/MediaUtils/index.d.ts.map +0 -1
  135. package/lib/MediaUtils/index.js +0 -6
  136. package/lib/MediaUtils/index.js.map +0 -1
  137. package/lib/MultiParty/MediaCapabilitiesService.d.ts +0 -18
  138. package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +0 -1
  139. package/lib/MultiParty/MediaCapabilitiesService.js +0 -158
  140. package/lib/MultiParty/MediaCapabilitiesService.js.map +0 -1
  141. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +0 -6
  142. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +0 -1
  143. package/lib/MultiParty/MediaCapabilitiesUtils.js +0 -123
  144. package/lib/MultiParty/MediaCapabilitiesUtils.js.map +0 -1
  145. package/lib/MultiParty/MediaTracer.d.ts +0 -4
  146. package/lib/MultiParty/MediaTracer.d.ts.map +0 -1
  147. package/lib/MultiParty/MediaTracer.js +0 -10
  148. package/lib/MultiParty/MediaTracer.js.map +0 -1
  149. package/lib/MultiParty/MultiPartyService.d.ts +0 -49
  150. package/lib/MultiParty/MultiPartyService.d.ts.map +0 -1
  151. package/lib/MultiParty/MultiPartyService.js +0 -30
  152. package/lib/MultiParty/MultiPartyService.js.map +0 -1
  153. package/lib/MultiParty/MultiPartyServiceFactory.d.ts +0 -4
  154. package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +0 -1
  155. package/lib/MultiParty/MultiPartyServiceFactory.js +0 -13
  156. package/lib/MultiParty/MultiPartyServiceFactory.js.map +0 -1
  157. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +0 -89
  158. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +0 -1
  159. package/lib/MultiParty/MultipartyServiceEventTypes.js +0 -16
  160. package/lib/MultiParty/MultipartyServiceEventTypes.js.map +0 -1
  161. package/lib/MultiParty/index.d.ts +0 -7
  162. package/lib/MultiParty/index.d.ts.map +0 -1
  163. package/lib/MultiParty/index.js +0 -25
  164. package/lib/MultiParty/index.js.map +0 -1
  165. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +0 -38
  166. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +0 -1
  167. package/lib/MultiParty/opentok/OpentokMultiPartyService.js +0 -492
  168. package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +0 -1
  169. package/lib/MultiParty/opentok/OpentokPublisher.d.ts +0 -34
  170. package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +0 -1
  171. package/lib/MultiParty/opentok/OpentokPublisher.js +0 -121
  172. package/lib/MultiParty/opentok/OpentokPublisher.js.map +0 -1
  173. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +0 -20
  174. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +0 -1
  175. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +0 -49
  176. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +0 -1
  177. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +0 -6
  178. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +0 -1
  179. package/lib/MultiParty/opentok/OpentokScreenPublisher.js +0 -48
  180. package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +0 -1
  181. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +0 -2
  182. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +0 -1
  183. package/lib/MultiParty/opentok/OpentokSubscriber.js +0 -26
  184. package/lib/MultiParty/opentok/OpentokSubscriber.js.map +0 -1
  185. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +0 -19
  186. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +0 -1
  187. package/lib/MultiParty/opentok/OpentokVideoPublisher.js +0 -182
  188. package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +0 -1
  189. package/lib/MultiParty/opentok/trace.d.ts +0 -3
  190. package/lib/MultiParty/opentok/trace.d.ts.map +0 -1
  191. package/lib/MultiParty/opentok/trace.js +0 -18
  192. package/lib/MultiParty/opentok/trace.js.map +0 -1
  193. package/lib/MultiParty/opentok.d.ts +0 -463
  194. package/lib/MultiParty/types.d.ts +0 -33
  195. package/lib/MultiParty/types.d.ts.map +0 -1
  196. package/lib/MultiParty/types.js +0 -3
  197. package/lib/MultiParty/types.js.map +0 -1
  198. package/lib/MultiParty/utils.d.ts +0 -10
  199. package/lib/MultiParty/utils.d.ts.map +0 -1
  200. package/lib/MultiParty/utils.js +0 -17
  201. package/lib/MultiParty/utils.js.map +0 -1
  202. package/lib/qos/raw-qos.d.ts +0 -29
  203. package/lib/qos/raw-qos.d.ts.map +0 -1
  204. package/lib/webrtc-ie-shim.d.ts +0 -4
  205. package/lib/webrtc-ie-shim.d.ts.map +0 -1
@@ -1,114 +1,157 @@
1
1
  'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RawQos = void 0;
4
- var RawQos = (function () {
2
+
3
+ exports.__esModule = true;
4
+
5
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
+
7
+ var RawQos = exports.RawQos = function () {
5
8
  function RawQos() {
9
+ _classCallCheck(this, RawQos);
10
+
6
11
  if (RawQos.instance) {
7
12
  return RawQos.instance;
8
13
  }
14
+
9
15
  this.VIDEO_CODECS = ['vp9', 'vp8', 'h264'];
10
16
  this.rawQoSEntry = {};
11
17
  this.enableRawEntries = true;
18
+
12
19
  this.bytesPrev = null;
13
20
  this.timestampPrev = null;
14
21
  this.startTimestamp = null;
22
+
15
23
  RawQos.instance = this;
16
24
  }
17
- RawQos.prototype.parse = function (stats) {
25
+
26
+ RawQos.prototype.parse = function parse(stats) {
27
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
18
28
  var self = this;
29
+
19
30
  self.rawQoSEntry = {};
20
31
  self._clearRaw();
21
- for (var _i = 0, _a = stats.values(); _i < _a.length; _i++) {
22
- var stat = _a[_i];
32
+
33
+ for (var _iterator = stats.values(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
34
+ var _ref;
35
+
36
+ if (_isArray) {
37
+ if (_i >= _iterator.length) break;
38
+ _ref = _iterator[_i++];
39
+ } else {
40
+ _i = _iterator.next();
41
+ if (_i.done) break;
42
+ _ref = _i.value;
43
+ }
44
+
45
+ var stat = _ref;
46
+
23
47
  if (!stat.isRemote) {
24
48
  switch (stat.type) {
25
- case 'outbound-rtp': {
26
- self._addRaw(stat);
27
- self._parseOutStats(stat, self.rawQoSEntry);
28
- var remote = stats.get(stat.remoteId);
29
- if (remote) {
30
- self._addRaw(remote);
31
- self.rawQoSEntry.remote = {};
32
- self._parseInStats(remote, self.rawQoSEntry.remote);
49
+ case 'outbound-rtp':
50
+ {
51
+ self._addRaw(stat);
52
+ self._parseOutStats(stat, self.rawQoSEntry);
53
+
54
+ var remote = stats.get(stat.remoteId);
55
+
56
+ if (remote) {
57
+ self._addRaw(remote);
58
+ self.rawQoSEntry.remote = {};
59
+ self._parseInStats(remote, self.rawQoSEntry.remote);
60
+ }
61
+
62
+ this._parseRelated(stats, stat, self);
63
+ break;
33
64
  }
34
- this._parseRelated(stats, stat, self);
35
- break;
36
- }
37
- case 'inbound-rtp': {
38
- self._addRaw(stat);
39
- self._parseInStats(stat, self.rawQoSEntry);
40
- var remote = stats.get(stat.remoteId);
41
- if (remote) {
42
- self._addRaw(remote);
65
+ case 'inbound-rtp':
66
+ {
67
+ self._addRaw(stat);
68
+ self._parseInStats(stat, self.rawQoSEntry);
69
+
70
+ var _remote = stats.get(stat.remoteId);
71
+
72
+ if (_remote) {
73
+ self._addRaw(_remote);
74
+ self.rawQoSEntry.remote = {};
75
+ self._parseOutStats(_remote, self.rawQoSEntry.remote);
76
+ }
77
+
78
+ this._parseRelated(stats, stat, self);
79
+ break;
80
+ }
81
+ case 'remote-inbound-rtp':
82
+ {
83
+ self._addRaw(stat);
43
84
  self.rawQoSEntry.remote = {};
44
- self._parseOutStats(remote, self.rawQoSEntry.remote);
85
+ self._parseInStats(stat, self.rawQoSEntry.remote);
86
+ break;
45
87
  }
46
- this._parseRelated(stats, stat, self);
47
- break;
48
- }
49
- case 'remote-inbound-rtp': {
50
- self._addRaw(stat);
51
- self.rawQoSEntry.remote = {};
52
- self._parseInStats(stat, self.rawQoSEntry.remote);
53
- break;
54
- }
55
- case 'remote-outbound-rtp': {
56
- self._addRaw(stat);
57
- self.rawQoSEntry.remote = {};
58
- self._parseOutStats(stat, self.rawQoSEntry.remote);
59
- break;
60
- }
61
- case 'candidate-pair': {
62
- if ((stat.bytesSent > 0 || stat.bytesReceived > 0) &&
63
- (!self.rawQoSEntry.servers ||
64
- stat.bytesSent > self.rawQoSEntry.servers.bytesSent ||
65
- stat.bytesReceived > self.rawQoSEntry.servers.bytesReceived)) {
66
- self.rawQoSEntry.servers = {};
88
+ case 'remote-outbound-rtp':
89
+ {
67
90
  self._addRaw(stat);
68
- self._parseServerStats(stat, self.rawQoSEntry.servers, stats);
91
+ self.rawQoSEntry.remote = {};
92
+ self._parseOutStats(stat, self.rawQoSEntry.remote);
93
+ break;
94
+ }
95
+ case 'candidate-pair':
96
+ {
97
+ if ((stat.bytesSent > 0 || stat.bytesReceived > 0) && (!self.rawQoSEntry.servers || stat.bytesSent > self.rawQoSEntry.servers.bytesSent || stat.bytesReceived > self.rawQoSEntry.servers.bytesReceived)) {
98
+ self.rawQoSEntry.servers = {};
99
+ self._addRaw(stat);
100
+ self._parseServerStats(stat, self.rawQoSEntry.servers, stats);
101
+ }
102
+ break;
103
+ }
104
+ case 'track':
105
+ {
106
+ self.track = stat;
107
+ break;
69
108
  }
70
- break;
71
- }
72
- case 'track': {
73
- self.track = stat;
74
- break;
75
- }
76
109
  }
77
110
  }
78
111
  }
112
+
79
113
  if (!self.rawQoSEntry.frameWidth && self.track) {
80
114
  self._addRaw(self.track);
81
115
  self._parseTrack(self.track, self.rawQoSEntry);
82
116
  }
83
117
  self.track = null;
118
+
84
119
  return self.rawQoSEntry;
85
120
  };
86
- RawQos.prototype._parseRelated = function (stats, stat, self) {
121
+
122
+ RawQos.prototype._parseRelated = function _parseRelated(stats, stat, self) {
87
123
  var track = stats.get(stat.trackId);
124
+
88
125
  if (track) {
89
126
  self._addRaw(track);
90
127
  self._parseTrack(track, self.rawQoSEntry);
91
128
  }
129
+
92
130
  var codec = stats.get(stat.codecId);
131
+
93
132
  if (codec) {
94
133
  self._addRaw(codec);
95
134
  self._parseCodec(codec, self.rawQoSEntry);
96
135
  }
97
136
  };
98
- RawQos.prototype._clearRaw = function () {
137
+
138
+ RawQos.prototype._clearRaw = function _clearRaw() {
99
139
  if (this.enableRawEntries) {
100
140
  this.rawQoSEntry.raw = [];
101
141
  }
102
142
  };
103
- RawQos.prototype._addRaw = function (item) {
143
+
144
+ RawQos.prototype._addRaw = function _addRaw(item) {
104
145
  if (this.enableRawEntries && item) {
105
146
  if (!this.rawQoSEntry.raw) {
106
147
  this.rawQoSEntry.raw = [];
107
148
  }
149
+
108
150
  this.rawQoSEntry.raw.push(this._dumpItem(item));
109
151
  }
110
152
  };
111
- RawQos.prototype._parseServerStats = function (result, parent, stats) {
153
+
154
+ RawQos.prototype._parseServerStats = function _parseServerStats(result, parent, stats) {
112
155
  parent.bytesSent = result.bytesSent;
113
156
  parent.bytesReceived = result.bytesReceived;
114
157
  if (typeof result.totalRoundTripTime === 'number') {
@@ -120,36 +163,47 @@ var RawQos = (function () {
120
163
  if (typeof result.availableOutgoingBitrate === 'number') {
121
164
  parent.availableOutgoingBitrate = result.availableOutgoingBitrate;
122
165
  }
166
+
123
167
  var localCandidate = stats.get(result.localCandidateId);
168
+
124
169
  if (localCandidate) {
125
170
  this._addRaw(localCandidate);
126
171
  this._parseLocal(localCandidate, parent);
127
172
  }
173
+
128
174
  var remoteCandidate = stats.get(result.remoteCandidateId);
175
+
129
176
  if (remoteCandidate) {
130
177
  this._addRaw(remoteCandidate);
131
178
  this._parseRemote(remoteCandidate, parent);
132
179
  }
133
180
  };
134
- RawQos.prototype._parseCodec = function (result, parent) {
181
+
182
+ RawQos.prototype._parseCodec = function _parseCodec(result, parent) {
135
183
  if (result.mimeType) {
136
- var index = this.VIDEO_CODECS.findIndex(function (codec) { return result.mimeType.toLowerCase().includes(codec); });
184
+ var index = this.VIDEO_CODECS.findIndex(function (codec) {
185
+ return result.mimeType.toLowerCase().includes(codec);
186
+ });
187
+
137
188
  if (index >= 0) {
138
189
  parent.videoCodec = this.VIDEO_CODECS[index];
139
190
  }
140
191
  }
141
192
  };
142
- RawQos.prototype._parseLocal = function (result, parent) {
193
+
194
+ RawQos.prototype._parseLocal = function _parseLocal(result, parent) {
143
195
  parent.localIP = result.ip || result.ipAddress;
144
196
  parent.localPort = result.port || result.portNumber;
145
197
  parent.localProtocol = result.protocol || result.transport;
146
198
  };
147
- RawQos.prototype._parseRemote = function (result, parent) {
199
+
200
+ RawQos.prototype._parseRemote = function _parseRemote(result, parent) {
148
201
  parent.remoteIP = result.ip || result.ipAddress;
149
202
  parent.remotePort = result.port || result.portNumber;
150
203
  parent.remoteProtocol = result.protocol || result.transport;
151
204
  };
152
- RawQos.prototype._parseTrack = function (result, parent) {
205
+
206
+ RawQos.prototype._parseTrack = function _parseTrack(result, parent) {
153
207
  if (typeof result.frameWidth === 'number') {
154
208
  parent.frameWidth = result.frameWidth;
155
209
  }
@@ -160,7 +214,8 @@ var RawQos = (function () {
160
214
  parent.videoFrameRate = result.framesPerSecond;
161
215
  }
162
216
  };
163
- RawQos.prototype._parseOutStats = function (result, parent) {
217
+
218
+ RawQos.prototype._parseOutStats = function _parseOutStats(result, parent) {
164
219
  parent.isPublisher = true;
165
220
  parent.videoSentPackets = result.packetsSent;
166
221
  parent.videoSentPacketsLost = result.packetsLost;
@@ -170,13 +225,15 @@ var RawQos = (function () {
170
225
  this._parseOther(result, parent);
171
226
  this._saveSomeMetrics(parent, result);
172
227
  };
173
- RawQos.prototype._parseVideoDuration = function (result, parent) {
228
+
229
+ RawQos.prototype._parseVideoDuration = function _parseVideoDuration(result, parent) {
174
230
  if (!this.startTimestamp) {
175
231
  this.startTimestamp = result.timestamp;
176
232
  }
177
233
  parent.videoDuration = ((result.timestamp - this.startTimestamp) / 1000).toFixed(2);
178
234
  };
179
- RawQos.prototype._parseInStats = function (result, parent) {
235
+
236
+ RawQos.prototype._parseInStats = function _parseInStats(result, parent) {
180
237
  parent.isSubscriber = true;
181
238
  parent.videoReceivedPackets = result.packetsReceived;
182
239
  parent.videoReceivedPacketsLost = result.packetsLost;
@@ -186,7 +243,8 @@ var RawQos = (function () {
186
243
  this._parseOther(result, parent);
187
244
  this._saveSomeMetrics(parent, result);
188
245
  };
189
- RawQos.prototype._saveSomeMetrics = function (parent, result) {
246
+
247
+ RawQos.prototype._saveSomeMetrics = function _saveSomeMetrics(parent, result) {
190
248
  if (parent === this.rawQoSEntry) {
191
249
  this.bytesPrev = parent.videoReceivedBytes;
192
250
  this.timestampPrev = result.timestamp;
@@ -195,7 +253,8 @@ var RawQos = (function () {
195
253
  this._parseVideoDuration(result, parent);
196
254
  }
197
255
  };
198
- RawQos.prototype._parseOther = function (result, parent) {
256
+
257
+ RawQos.prototype._parseOther = function _parseOther(result, parent) {
199
258
  parent.timestamp = result.timestamp;
200
259
  parent.ssrc = result.ssrc;
201
260
  if (typeof result.discardedPackets === 'number') {
@@ -208,52 +267,54 @@ var RawQos = (function () {
208
267
  parent.packetsRepaired = result.packetsRepaired;
209
268
  }
210
269
  };
211
- RawQos.prototype._parseBitrate = function (result, parent, bytes) {
270
+
271
+ RawQos.prototype._parseBitrate = function _parseBitrate(result, parent, bytes) {
212
272
  if (bytes > 0) {
213
273
  if (typeof result.bitrateMean === 'number') {
214
274
  parent.videoBitRate = result.bitrateMean.toFixed(2);
215
- }
216
- else if (this.bytesPrev && this.timestampPrev) {
275
+ } else if (this.bytesPrev && this.timestampPrev) {
217
276
  var totalBytes = bytes;
277
+
218
278
  if (result.ssrc === this.ssrcPrev && bytes > this.bytesPrev) {
219
279
  totalBytes = bytes - this.bytesPrev;
220
280
  }
221
- parent.videoBitRate = Math.floor((8 * totalBytes) / ((result.timestamp - this.timestampPrev) / 1000));
281
+
282
+ parent.videoBitRate = Math.floor(8 * totalBytes / ((result.timestamp - this.timestampPrev) / 1000));
222
283
  }
223
- }
224
- else {
284
+ } else {
225
285
  parent.videoBitRate = 0;
226
286
  }
227
287
  };
228
- RawQos.prototype._parseFrameRate = function (result, parent, bytes) {
288
+
289
+ RawQos.prototype._parseFrameRate = function _parseFrameRate(result, parent, bytes) {
229
290
  if (bytes > 0) {
230
291
  if (typeof result.framerateMean === 'number') {
231
292
  parent.videoFrameRate = Number(result.framerateMean).toFixed(2);
232
- }
233
- else if (this.framesDecodedPrev && this.timestampPrev) {
293
+ } else if (this.framesDecodedPrev && this.timestampPrev) {
234
294
  if (result.framesDecoded >= this.framesDecodedPrev && result.timestamp > this.timestampPrev) {
235
- parent.videoFrameRate = ((result.framesDecoded - this.framesDecodedPrev) /
236
- ((result.timestamp - this.timestampPrev) / 1000)).toFixed(2);
295
+ parent.videoFrameRate = ((result.framesDecoded - this.framesDecodedPrev) / ((result.timestamp - this.timestampPrev) / 1000)).toFixed(2);
237
296
  }
238
297
  }
239
- }
240
- else {
298
+ } else {
241
299
  parent.videoFrameRate = 0;
242
300
  }
243
301
  };
244
- RawQos.prototype._dumpItem = function (res) {
302
+
303
+ RawQos.prototype._dumpItem = function _dumpItem(res) {
245
304
  var statsString = '{';
246
305
  var index = 0;
306
+
247
307
  Object.keys(res).forEach(function (k) {
248
- statsString += "\"".concat(k, "\": \"").concat(res[k], "\"");
308
+ statsString += '"' + k + '": "' + res[k] + '"';
249
309
  if (++index !== res.length) {
250
310
  statsString += ',';
251
311
  }
252
312
  });
253
313
  statsString += '}';
314
+
254
315
  return statsString;
255
316
  };
317
+
256
318
  return RawQos;
257
- }());
258
- exports.RawQos = RawQos;
259
- //# sourceMappingURL=raw-qos.js.map
319
+ }();
320
+ //# sourceMappingURL=raw-qos.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"raw-qos.js","sourceRoot":"","sources":["../../src/qos/raw-qos.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["qos/raw-qos.js"],"names":["RawQos","instance","VIDEO_CODECS","rawQoSEntry","enableRawEntries","bytesPrev","timestampPrev","startTimestamp","parse","stats","self","_clearRaw","values","stat","isRemote","type","_addRaw","_parseOutStats","remote","get","remoteId","_parseInStats","_parseRelated","bytesSent","bytesReceived","servers","_parseServerStats","track","frameWidth","_parseTrack","trackId","codec","codecId","_parseCodec","raw","item","push","_dumpItem","result","parent","totalRoundTripTime","currentRoundTripTime","availableOutgoingBitrate","localCandidate","localCandidateId","_parseLocal","remoteCandidate","remoteCandidateId","_parseRemote","mimeType","index","findIndex","toLowerCase","includes","videoCodec","localIP","ip","ipAddress","localPort","port","portNumber","localProtocol","protocol","transport","remoteIP","remotePort","remoteProtocol","frameHeight","framesPerSecond","videoFrameRate","isPublisher","videoSentPackets","packetsSent","videoSentPacketsLost","packetsLost","videoSentBytes","_parseBitrate","_parseFrameRate","_parseOther","_saveSomeMetrics","_parseVideoDuration","timestamp","videoDuration","toFixed","isSubscriber","videoReceivedPackets","packetsReceived","videoReceivedPacketsLost","videoReceivedBytes","ssrcPrev","ssrc","framesDecodedPrev","framesDecoded","discardedPackets","jitter","packetsRepaired","bytes","bitrateMean","videoBitRate","totalBytes","Math","floor","framerateMean","Number","res","statsString","Object","keys","forEach","k","length"],"mappings":"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","file":"raw-qos.js","sourcesContent":["'use strict';\n\nexport class RawQos {\n constructor() {\n if (RawQos.instance) {\n return RawQos.instance;\n }\n\n this.VIDEO_CODECS = ['vp9', 'vp8', 'h264'];\n this.rawQoSEntry = {};\n this.enableRawEntries = true;\n\n this.bytesPrev = null;\n this.timestampPrev = null;\n this.startTimestamp = null;\n\n RawQos.instance = this;\n }\n\n parse(stats) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n self.rawQoSEntry = {};\n self._clearRaw();\n\n for (const stat of stats.values()) {\n if (!stat.isRemote) {\n switch (stat.type) {\n case 'outbound-rtp': {\n self._addRaw(stat);\n self._parseOutStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseInStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'inbound-rtp': {\n self._addRaw(stat);\n self._parseInStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'remote-inbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseInStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'remote-outbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'candidate-pair': {\n if ((stat.bytesSent > 0 || stat.bytesReceived > 0) &&\n (!self.rawQoSEntry.servers || stat.bytesSent > self.rawQoSEntry.servers.bytesSent ||\n stat.bytesReceived > self.rawQoSEntry.servers.bytesReceived)) {\n self.rawQoSEntry.servers = {};\n self._addRaw(stat);\n self._parseServerStats(stat, self.rawQoSEntry.servers, stats);\n }\n break;\n }\n case 'track': {\n self.track = stat;\n break;\n }\n }\n }\n }\n\n if (!self.rawQoSEntry.frameWidth && self.track) {\n self._addRaw(self.track);\n self._parseTrack(self.track, self.rawQoSEntry);\n }\n self.track = null;\n\n return self.rawQoSEntry;\n }\n\n _parseRelated(stats, stat, self) {\n const track = stats.get(stat.trackId);\n\n if (track) {\n self._addRaw(track);\n self._parseTrack(track, self.rawQoSEntry);\n }\n\n const codec = stats.get(stat.codecId);\n\n if (codec) {\n self._addRaw(codec);\n self._parseCodec(codec, self.rawQoSEntry);\n }\n }\n\n _clearRaw() {\n if (this.enableRawEntries) {\n this.rawQoSEntry.raw = [];\n }\n }\n\n _addRaw(item) {\n if (this.enableRawEntries && item) {\n if (!this.rawQoSEntry.raw) {\n this.rawQoSEntry.raw = [];\n }\n\n this.rawQoSEntry.raw.push(this._dumpItem(item));\n }\n }\n\n _parseServerStats(result, parent, stats) {\n parent.bytesSent = result.bytesSent;\n parent.bytesReceived = result.bytesReceived;\n if (typeof result.totalRoundTripTime === 'number') {\n parent.totalRoundTripTime = result.totalRoundTripTime;\n }\n if (typeof result.currentRoundTripTime === 'number') {\n parent.currentRoundTripTime = result.currentRoundTripTime;\n }\n if (typeof result.availableOutgoingBitrate === 'number') {\n parent.availableOutgoingBitrate = result.availableOutgoingBitrate;\n }\n\n const localCandidate = stats.get(result.localCandidateId);\n\n if (localCandidate) {\n this._addRaw(localCandidate);\n this._parseLocal(localCandidate, parent);\n }\n\n const remoteCandidate = stats.get(result.remoteCandidateId);\n\n if (remoteCandidate) {\n this._addRaw(remoteCandidate);\n this._parseRemote(remoteCandidate, parent);\n }\n }\n\n _parseCodec(result, parent) {\n if (result.mimeType) {\n const index = this.VIDEO_CODECS.findIndex((codec) => result.mimeType.toLowerCase().includes(codec));\n\n if (index >= 0) {\n parent.videoCodec = this.VIDEO_CODECS[index];\n }\n }\n }\n\n _parseLocal(result, parent) {\n parent.localIP = result.ip || result.ipAddress;\n parent.localPort = result.port || result.portNumber;\n parent.localProtocol = result.protocol || result.transport;\n }\n\n _parseRemote(result, parent) {\n parent.remoteIP = result.ip || result.ipAddress;\n parent.remotePort = result.port || result.portNumber;\n parent.remoteProtocol = result.protocol || result.transport;\n }\n\n _parseTrack(result, parent) {\n if (typeof result.frameWidth === 'number') {\n parent.frameWidth = result.frameWidth;\n }\n if (typeof result.frameHeight === 'number') {\n parent.frameHeight = result.frameHeight;\n }\n if (typeof result.framesPerSecond === 'number') {\n parent.videoFrameRate = result.framesPerSecond;\n }\n }\n\n _parseOutStats(result, parent) {\n parent.isPublisher = true;\n parent.videoSentPackets = result.packetsSent;\n parent.videoSentPacketsLost = result.packetsLost;\n parent.videoSentBytes = result.bytesSent;\n this._parseBitrate(result, parent, parent.videoSentBytes);\n this._parseFrameRate(result, parent, parent.videoSentBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _parseVideoDuration(result, parent) {\n if (!this.startTimestamp) {\n this.startTimestamp = result.timestamp;\n }\n parent.videoDuration = ((result.timestamp - this.startTimestamp) / 1000).toFixed(2);\n }\n\n _parseInStats(result, parent) {\n parent.isSubscriber = true;\n parent.videoReceivedPackets = result.packetsReceived;\n parent.videoReceivedPacketsLost = result.packetsLost;\n parent.videoReceivedBytes = result.bytesReceived;\n this._parseBitrate(result, parent, parent.videoReceivedBytes);\n this._parseFrameRate(result, parent, parent.videoReceivedBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _saveSomeMetrics(parent, result) {\n if (parent === this.rawQoSEntry) {\n this.bytesPrev = parent.videoReceivedBytes;\n this.timestampPrev = result.timestamp;\n this.ssrcPrev = result.ssrc;\n this.framesDecodedPrev = result.framesDecoded;\n this._parseVideoDuration(result, parent);\n }\n }\n\n _parseOther(result, parent) {\n parent.timestamp = result.timestamp;\n parent.ssrc = result.ssrc;\n if (typeof result.discardedPackets === 'number') {\n parent.discardedPackets = result.discardedPackets;\n }\n if (typeof result.jitter === 'number') {\n parent.jitter = result.jitter;\n }\n if (typeof result.packetsRepaired === 'number') {\n parent.packetsRepaired = result.packetsRepaired;\n }\n }\n\n _parseBitrate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.bitrateMean === 'number') {\n parent.videoBitRate = (result.bitrateMean).toFixed(2);\n\n } else if (this.bytesPrev && this.timestampPrev) {\n let totalBytes = bytes;\n\n if ((result.ssrc === this.ssrcPrev) && (bytes > this.bytesPrev)) {\n totalBytes = bytes - this.bytesPrev;\n }\n\n parent.videoBitRate = Math.floor((8 * totalBytes) / ((result.timestamp - this.timestampPrev) / 1000));\n }\n } else {\n parent.videoBitRate = 0;\n }\n }\n\n _parseFrameRate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.framerateMean === 'number') {\n parent.videoFrameRate = Number(result.framerateMean).toFixed(2);\n } else if (this.framesDecodedPrev && this.timestampPrev) {\n if (result.framesDecoded >= this.framesDecodedPrev && result.timestamp > this.timestampPrev) {\n parent.videoFrameRate = ((result.framesDecoded - this.framesDecodedPrev) / ((result.timestamp - this.timestampPrev) / 1000)).toFixed(2);\n }\n }\n } else {\n parent.videoFrameRate = 0;\n }\n }\n\n _dumpItem(res) {\n let statsString = '{';\n let index = 0;\n\n Object.keys(res).forEach((k) => {\n statsString += `\"${k}\": \"${res[k]}\"`;\n if (++index !== res.length) {\n statsString += ',';\n }\n });\n statsString += '}';\n\n return statsString;\n }\n}\n"]}