@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.
- package/README.md +28 -27
- package/lib/LocalStreamManager.d.ts +0 -1
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +84 -82
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.d.ts +3 -21
- package/lib/MediaConstants.d.ts.map +1 -1
- package/lib/MediaConstants.js +13 -32
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.d.ts +3 -9
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaContracts.js +4 -1
- package/lib/MediaContracts.js.map +1 -1
- package/lib/MediaPublisher.d.ts +0 -1
- package/lib/MediaPublisher.d.ts.map +1 -1
- package/lib/MediaPublisher.js +10 -7
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.d.ts +0 -1
- package/lib/MediaServiceBase.d.ts.map +1 -1
- package/lib/MediaServiceBase.js +199 -170
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.d.ts +0 -1
- package/lib/MediaSession/MediaServer.d.ts.map +1 -1
- package/lib/MediaSession/MediaServer.js +74 -62
- package/lib/MediaSession/MediaServer.js.map +1 -1
- package/lib/MediaSession/MediaSessionBase.d.ts +0 -1
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js +23 -19
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.d.ts +2 -3
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
- package/lib/MediaSession/SessionOpentok.js +80 -51
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.d.ts +0 -1
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
- package/lib/MediaSession/SessionTurn.js +151 -109
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSession/TurnConstants.d.ts +0 -1
- package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
- package/lib/MediaSession/TurnConstants.js +16 -1
- package/lib/MediaSession/TurnConstants.js.map +1 -1
- package/lib/MediaSubscriber.d.ts +0 -1
- package/lib/MediaSubscriber.d.ts.map +1 -1
- package/lib/MediaSubscriber.js +43 -37
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts +0 -3
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +34 -76
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts +3 -6
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +65 -70
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MediaUtils/MediaTracer.d.ts +0 -1
- package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
- package/lib/MediaUtils/MediaTracer.js +5 -2
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.d.ts +14 -17
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.js +54 -98
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +10 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.js +140 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.js.map +1 -0
- package/lib/MultiParty/MultiParty.d.ts +21 -0
- package/lib/MultiParty/MultiParty.d.ts.map +1 -0
- package/lib/MultiParty/MultiParty.js +160 -0
- package/lib/MultiParty/MultiParty.js.map +1 -0
- package/lib/MultiParty/OpentokMultiparty.d.ts +32 -0
- package/lib/MultiParty/OpentokMultiparty.d.ts.map +1 -0
- package/lib/MultiParty/OpentokMultiparty.js +184 -0
- package/lib/MultiParty/OpentokMultiparty.js.map +1 -0
- package/lib/TechseeMediaStream.d.ts +0 -1
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js +12 -9
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/oldCode/constants.js +20 -0
- package/lib/oldCode/constants.js.map +1 -0
- package/lib/oldCode/event-emitter.js +39 -0
- package/lib/oldCode/event-emitter.js.map +1 -0
- package/lib/oldCode/index.js +64 -0
- package/lib/oldCode/index.js.map +1 -0
- package/lib/oldCode/opentok/session.js +310 -0
- package/lib/oldCode/opentok/session.js.map +1 -0
- package/lib/oldCode/opentok/stream.js +310 -0
- package/lib/oldCode/opentok/stream.js.map +1 -0
- package/lib/oldCode/publisher.js +143 -0
- package/lib/oldCode/publisher.js.map +1 -0
- package/lib/oldCode/service.js +395 -0
- package/lib/oldCode/service.js.map +1 -0
- package/lib/oldCode/session.js +110 -0
- package/lib/oldCode/session.js.map +1 -0
- package/lib/oldCode/stream.js +195 -0
- package/lib/oldCode/stream.js.map +1 -0
- package/lib/oldCode/subscriber.js +90 -0
- package/lib/oldCode/subscriber.js.map +1 -0
- package/lib/oldCode/tracer.d.ts +36 -0
- package/lib/oldCode/tracer.d.ts.map +1 -0
- package/lib/oldCode/tracer.js +161 -0
- package/lib/oldCode/tracer.js.map +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts.map +1 -0
- package/lib/oldCode/utils/ImageFixer.js +59 -0
- package/lib/oldCode/utils/ImageFixer.js.map +1 -0
- package/lib/oldCode/webrtc/constants.js +114 -0
- package/lib/oldCode/webrtc/constants.js.map +1 -0
- package/lib/oldCode/webrtc/helper.js +173 -0
- package/lib/oldCode/webrtc/helper.js.map +1 -0
- package/lib/oldCode/webrtc/session-kms.js +558 -0
- package/lib/oldCode/webrtc/session-kms.js.map +1 -0
- package/lib/oldCode/webrtc/session-loopback.js +336 -0
- package/lib/oldCode/webrtc/session-loopback.js.map +1 -0
- package/lib/oldCode/webrtc/session-turn.js +880 -0
- package/lib/oldCode/webrtc/session-turn.js.map +1 -0
- package/lib/oldCode/webrtc/session-turn.v2.js +583 -0
- package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -0
- package/lib/oldCode/webrtc/session.js +52 -0
- package/lib/oldCode/webrtc/session.js.map +1 -0
- package/lib/oldCode/webrtc/stream.js +674 -0
- package/lib/oldCode/webrtc/stream.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter-loader.js +12 -0
- package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter.js +5861 -0
- package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -0
- package/lib/oldCode/webrtc/webrtc-ie-shim.js +3007 -0
- package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -0
- package/lib/qos/raw-qos.js +145 -84
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.js +2950 -1896
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +59 -65
- package/lib/MediaUtils/index.d.ts +0 -2
- package/lib/MediaUtils/index.d.ts.map +0 -1
- package/lib/MediaUtils/index.js +0 -6
- package/lib/MediaUtils/index.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesService.d.ts +0 -18
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesService.js +0 -158
- package/lib/MultiParty/MediaCapabilitiesService.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +0 -6
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.js +0 -123
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +0 -1
- package/lib/MultiParty/MediaTracer.d.ts +0 -4
- package/lib/MultiParty/MediaTracer.d.ts.map +0 -1
- package/lib/MultiParty/MediaTracer.js +0 -10
- package/lib/MultiParty/MediaTracer.js.map +0 -1
- package/lib/MultiParty/MultiPartyService.d.ts +0 -49
- package/lib/MultiParty/MultiPartyService.d.ts.map +0 -1
- package/lib/MultiParty/MultiPartyService.js +0 -30
- package/lib/MultiParty/MultiPartyService.js.map +0 -1
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts +0 -4
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +0 -1
- package/lib/MultiParty/MultiPartyServiceFactory.js +0 -13
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +0 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +0 -89
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +0 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.js +0 -16
- package/lib/MultiParty/MultipartyServiceEventTypes.js.map +0 -1
- package/lib/MultiParty/index.d.ts +0 -7
- package/lib/MultiParty/index.d.ts.map +0 -1
- package/lib/MultiParty/index.js +0 -25
- package/lib/MultiParty/index.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +0 -38
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js +0 -492
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts +0 -34
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisher.js +0 -121
- package/lib/MultiParty/opentok/OpentokPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +0 -20
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +0 -49
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +0 -6
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js +0 -48
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +0 -2
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.js +0 -26
- package/lib/MultiParty/opentok/OpentokSubscriber.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +0 -19
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js +0 -182
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/trace.d.ts +0 -3
- package/lib/MultiParty/opentok/trace.d.ts.map +0 -1
- package/lib/MultiParty/opentok/trace.js +0 -18
- package/lib/MultiParty/opentok/trace.js.map +0 -1
- package/lib/MultiParty/opentok.d.ts +0 -463
- package/lib/MultiParty/types.d.ts +0 -33
- package/lib/MultiParty/types.d.ts.map +0 -1
- package/lib/MultiParty/types.js +0 -3
- package/lib/MultiParty/types.js.map +0 -1
- package/lib/MultiParty/utils.d.ts +0 -10
- package/lib/MultiParty/utils.d.ts.map +0 -1
- package/lib/MultiParty/utils.js +0 -17
- package/lib/MultiParty/utils.js.map +0 -1
- package/lib/qos/raw-qos.d.ts +0 -29
- package/lib/qos/raw-qos.d.ts.map +0 -1
- package/lib/webrtc-ie-shim.d.ts +0 -4
- package/lib/webrtc-ie-shim.d.ts.map +0 -1
package/lib/qos/raw-qos.js
CHANGED
|
@@ -1,114 +1,157 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
|
|
3
|
-
exports.
|
|
4
|
-
|
|
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
|
-
|
|
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
|
-
|
|
22
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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.
|
|
85
|
+
self._parseInStats(stat, self.rawQoSEntry.remote);
|
|
86
|
+
break;
|
|
45
87
|
}
|
|
46
|
-
|
|
47
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
137
|
+
|
|
138
|
+
RawQos.prototype._clearRaw = function _clearRaw() {
|
|
99
139
|
if (this.enableRawEntries) {
|
|
100
140
|
this.rawQoSEntry.raw = [];
|
|
101
141
|
}
|
|
102
142
|
};
|
|
103
|
-
|
|
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
|
-
|
|
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
|
-
|
|
181
|
+
|
|
182
|
+
RawQos.prototype._parseCodec = function _parseCodec(result, parent) {
|
|
135
183
|
if (result.mimeType) {
|
|
136
|
-
var index = this.VIDEO_CODECS.findIndex(function (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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 += "
|
|
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
|
-
|
|
259
|
-
//# sourceMappingURL=raw-qos.js.map
|
|
319
|
+
}();
|
|
320
|
+
//# sourceMappingURL=raw-qos.js.map
|
package/lib/qos/raw-qos.js.map
CHANGED
|
@@ -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"]}
|