@webex/plugin-meetings 3.0.0-beta.372 → 3.0.0-beta.373
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/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/mediaQualityMetrics/config.js +139 -131
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/statsAnalyzer/index.js +132 -21
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +284 -151
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/mediaQualityMetrics/config.d.ts +103 -99
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
- package/dist/webinar/index.js +1 -1
- package/package.json +19 -19
- package/src/mediaQualityMetrics/config.ts +107 -107
- package/src/statsAnalyzer/index.ts +154 -21
- package/src/statsAnalyzer/mqaUtil.ts +302 -154
- package/test/unit/spec/stats-analyzer/index.js +395 -0
|
@@ -5,221 +5,354 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
|
|
|
5
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.getVideoSenderMqa = exports.getVideoReceiverMqa = exports.getAudioSenderMqa = exports.getAudioReceiverMqa = void 0;
|
|
8
|
+
exports.getVideoSenderStreamMqa = exports.getVideoSenderMqa = exports.getVideoReceiverStreamMqa = exports.getVideoReceiverMqa = exports.getAudioSenderStreamMqa = exports.getAudioSenderMqa = exports.getAudioReceiverStreamMqa = exports.getAudioReceiverMqa = void 0;
|
|
9
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
9
10
|
var _max2 = _interopRequireDefault(require("lodash/max"));
|
|
10
11
|
var _mean2 = _interopRequireDefault(require("lodash/mean"));
|
|
11
12
|
var _constants = require("../constants");
|
|
13
|
+
/**
|
|
14
|
+
* Get the totals of a certain value from a certain media type.
|
|
15
|
+
*
|
|
16
|
+
* @param {object} stats - The large stats object.
|
|
17
|
+
* @param {string} sendrecvType - "send" or "recv".
|
|
18
|
+
* @param {string} baseMediaType - audio or video _and_ share or non-share.
|
|
19
|
+
* @param {string} value - The value we want to get the totals of.
|
|
20
|
+
* @returns {number}
|
|
21
|
+
*/
|
|
22
|
+
var getTotalValueFromBaseType = function getTotalValueFromBaseType(stats, sendrecvType, baseMediaType, value) {
|
|
23
|
+
return (0, _keys.default)(stats).filter(function (mt) {
|
|
24
|
+
return mt.includes(baseMediaType);
|
|
25
|
+
}).reduce(function (acc, mt) {
|
|
26
|
+
var _stats$mt, _stats$mt$sendrecvTyp;
|
|
27
|
+
return acc + (((_stats$mt = stats[mt]) === null || _stats$mt === void 0 ? void 0 : (_stats$mt$sendrecvTyp = _stats$mt[sendrecvType]) === null || _stats$mt$sendrecvTyp === void 0 ? void 0 : _stats$mt$sendrecvTyp[value]) || 0);
|
|
28
|
+
}, 0);
|
|
29
|
+
};
|
|
12
30
|
var getAudioReceiverMqa = function getAudioReceiverMqa(_ref) {
|
|
13
|
-
var
|
|
31
|
+
var _statsResults$Object$;
|
|
14
32
|
var audioReceiver = _ref.audioReceiver,
|
|
15
33
|
statsResults = _ref.statsResults,
|
|
16
34
|
lastMqaDataSent = _ref.lastMqaDataSent,
|
|
17
|
-
|
|
35
|
+
baseMediaType = _ref.baseMediaType;
|
|
18
36
|
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
var
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
var getLastTotalValue = function getLastTotalValue(value) {
|
|
38
|
+
return getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
|
|
39
|
+
};
|
|
40
|
+
var getTotalValue = function getTotalValue(value) {
|
|
41
|
+
return getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
|
|
42
|
+
};
|
|
43
|
+
var lastPacketsReceived = getLastTotalValue('totalPacketsReceived');
|
|
44
|
+
var lastPacketsLost = getLastTotalValue('totalPacketsLost');
|
|
45
|
+
var lastBytesReceived = getLastTotalValue('totalBytesReceived');
|
|
46
|
+
var lastFecPacketsReceived = getLastTotalValue('fecPacketsReceived');
|
|
47
|
+
var lastFecPacketsDiscarded = getLastTotalValue('fecPacketsDiscarded');
|
|
48
|
+
var totalPacketsReceived = getTotalValue('totalPacketsReceived');
|
|
49
|
+
var packetsLost = getTotalValue('totalPacketsLost');
|
|
50
|
+
var totalBytesReceived = getTotalValue('totalBytesReceived');
|
|
51
|
+
var totalFecPacketsReceived = getTotalValue('fecPacketsReceived');
|
|
52
|
+
var totalFecPacketsDiscarded = getTotalValue('fecPacketsDiscarded');
|
|
53
|
+
audioReceiver.common.common.direction = ((_statsResults$Object$ = statsResults[(0, _keys.default)(statsResults).find(function (mediaType) {
|
|
54
|
+
return mediaType.includes(baseMediaType);
|
|
55
|
+
})]) === null || _statsResults$Object$ === void 0 ? void 0 : _statsResults$Object$.direction) || 'inactive';
|
|
56
|
+
audioReceiver.common.common.isMain = !baseMediaType.includes('-share');
|
|
33
57
|
audioReceiver.common.transportType = statsResults.connectionType.local.transport;
|
|
34
58
|
|
|
35
59
|
// add rtpPacket info inside common as also for call analyzer
|
|
36
|
-
audioReceiver.common.rtpPackets =
|
|
37
|
-
audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;
|
|
60
|
+
audioReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived;
|
|
38
61
|
|
|
39
62
|
// Hop by hop are numbers and not percentage so we compare on what we sent the last min
|
|
40
63
|
// collect the packets received for the last min
|
|
41
|
-
var totalPacketsLost =
|
|
64
|
+
var totalPacketsLost = packetsLost - lastPacketsLost;
|
|
42
65
|
audioReceiver.common.mediaHopByHopLost = totalPacketsLost;
|
|
43
66
|
audioReceiver.common.rtpHopByHopLost = totalPacketsLost;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
(
|
|
47
|
-
audioReceiver.streams[0].common.meanRtpJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
|
|
48
|
-
audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;
|
|
49
|
-
|
|
50
|
-
// Fec packets do come in as part of the FEC only for audio
|
|
51
|
-
var fecRecovered = statsResults[mediaType][sendrecvType].fecPacketsReceived - lastFecPacketsReceived - (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);
|
|
52
|
-
audioReceiver.common.fecPackets = fecRecovered || 0;
|
|
53
|
-
audioReceiver.streams[0].common.rtpEndToEndLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;
|
|
54
|
-
audioReceiver.streams[0].common.framesDropped = statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;
|
|
55
|
-
audioReceiver.streams[0].common.renderedFrameRate = audioReceiver.streams[0].common.framesDropped * 100 / 60 || 0;
|
|
56
|
-
audioReceiver.streams[0].common.framesReceived = statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;
|
|
57
|
-
audioReceiver.streams[0].common.concealedFrames = statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;
|
|
58
|
-
audioReceiver.streams[0].common.receivedBitrate = (statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8 / 60 || 0;
|
|
59
|
-
audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;
|
|
67
|
+
var fecRecovered = totalFecPacketsReceived - lastFecPacketsReceived - (totalFecPacketsDiscarded - lastFecPacketsDiscarded);
|
|
68
|
+
audioReceiver.common.fecPackets = fecRecovered;
|
|
69
|
+
audioReceiver.common.rtpBitrate = (totalBytesReceived - lastBytesReceived) * 8 / 60 || 0;
|
|
60
70
|
};
|
|
61
71
|
exports.getAudioReceiverMqa = getAudioReceiverMqa;
|
|
62
|
-
var
|
|
63
|
-
var _lastMqaDataSent$
|
|
64
|
-
var
|
|
72
|
+
var getAudioReceiverStreamMqa = function getAudioReceiverStreamMqa(_ref2) {
|
|
73
|
+
var _lastMqaDataSent$medi, _lastMqaDataSent$medi2, _lastMqaDataSent$medi3, _lastMqaDataSent$medi4, _lastMqaDataSent$medi5, _lastMqaDataSent$medi6, _lastMqaDataSent$medi7, _lastMqaDataSent$medi8;
|
|
74
|
+
var audioReceiverStream = _ref2.audioReceiverStream,
|
|
65
75
|
statsResults = _ref2.statsResults,
|
|
66
76
|
lastMqaDataSent = _ref2.lastMqaDataSent,
|
|
67
77
|
mediaType = _ref2.mediaType;
|
|
68
|
-
var sendrecvType = _constants.STATS.
|
|
69
|
-
var
|
|
70
|
-
var
|
|
71
|
-
var
|
|
72
|
-
var
|
|
73
|
-
var
|
|
78
|
+
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
|
79
|
+
var lastPacketsDecoded = ((_lastMqaDataSent$medi = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi === void 0 ? void 0 : _lastMqaDataSent$medi[sendrecvType].totalSamplesDecoded) || 0;
|
|
80
|
+
var lastSamplesReceived = ((_lastMqaDataSent$medi2 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi2 === void 0 ? void 0 : _lastMqaDataSent$medi2[sendrecvType].totalSamplesReceived) || 0;
|
|
81
|
+
var lastConcealedSamples = ((_lastMqaDataSent$medi3 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi3 === void 0 ? void 0 : _lastMqaDataSent$medi3[sendrecvType].concealedSamples) || 0;
|
|
82
|
+
var lastBytesReceived = ((_lastMqaDataSent$medi4 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi4 === void 0 ? void 0 : _lastMqaDataSent$medi4[sendrecvType].totalBytesReceived) || 0;
|
|
83
|
+
var lastFecPacketsReceived = ((_lastMqaDataSent$medi5 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi5 === void 0 ? void 0 : _lastMqaDataSent$medi5[sendrecvType].fecPacketsReceived) || 0;
|
|
84
|
+
var lastFecPacketsDiscarded = ((_lastMqaDataSent$medi6 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi6 === void 0 ? void 0 : _lastMqaDataSent$medi6[sendrecvType].fecPacketsDiscarded) || 0;
|
|
85
|
+
var lastPacketsReceived = ((_lastMqaDataSent$medi7 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi7 === void 0 ? void 0 : _lastMqaDataSent$medi7[sendrecvType].totalPacketsReceived) || 0;
|
|
86
|
+
var lastPacketsLost = ((_lastMqaDataSent$medi8 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi8 === void 0 ? void 0 : _lastMqaDataSent$medi8[sendrecvType].totalPacketsLost) || 0;
|
|
74
87
|
var csi = statsResults[mediaType].csi;
|
|
75
|
-
if (csi && !
|
|
76
|
-
|
|
88
|
+
if (csi && !audioReceiverStream.common.csi.includes(csi)) {
|
|
89
|
+
audioReceiverStream.common.csi.push(csi);
|
|
77
90
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
audioSender.common.transportType = statsResults.connectionType.local.transport;
|
|
81
|
-
audioSender.common.maxRemoteJitter =
|
|
91
|
+
audioReceiverStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
|
|
92
|
+
audioReceiverStream.common.maxRtpJitter =
|
|
82
93
|
// @ts-ignore
|
|
83
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
94
|
+
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
|
|
95
|
+
audioReceiverStream.common.meanRtpJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
|
|
96
|
+
audioReceiverStream.common.rtpJitter = audioReceiverStream.common.maxRtpJitter;
|
|
97
|
+
|
|
98
|
+
// Fec packets do come in as part of the FEC only for audio
|
|
99
|
+
var fecRecovered = statsResults[mediaType][sendrecvType].fecPacketsReceived - lastFecPacketsReceived - (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);
|
|
100
|
+
audioReceiverStream.common.rtpEndToEndLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;
|
|
101
|
+
audioReceiverStream.common.framesDropped = statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;
|
|
102
|
+
audioReceiverStream.common.renderedFrameRate = audioReceiverStream.common.framesDropped * 100 / 60 || 0;
|
|
103
|
+
audioReceiverStream.common.framesReceived = statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;
|
|
104
|
+
audioReceiverStream.common.concealedFrames = statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;
|
|
105
|
+
audioReceiverStream.common.receivedBitrate = (statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8 / 60 || 0;
|
|
106
|
+
};
|
|
107
|
+
exports.getAudioReceiverStreamMqa = getAudioReceiverStreamMqa;
|
|
108
|
+
var getAudioSenderMqa = function getAudioSenderMqa(_ref3) {
|
|
109
|
+
var _statsResults$Object$2;
|
|
110
|
+
var audioSender = _ref3.audioSender,
|
|
111
|
+
statsResults = _ref3.statsResults,
|
|
112
|
+
lastMqaDataSent = _ref3.lastMqaDataSent,
|
|
113
|
+
baseMediaType = _ref3.baseMediaType;
|
|
114
|
+
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
115
|
+
var getLastTotalValue = function getLastTotalValue(value) {
|
|
116
|
+
return getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
|
|
117
|
+
};
|
|
118
|
+
var getTotalValue = function getTotalValue(value) {
|
|
119
|
+
return getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
|
|
120
|
+
};
|
|
121
|
+
var lastPacketsSent = getLastTotalValue('totalPacketsSent');
|
|
122
|
+
var lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');
|
|
123
|
+
var totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');
|
|
124
|
+
var totalPacketsSent = getTotalValue('totalPacketsSent');
|
|
125
|
+
var meanRemoteJitter = (0, _keys.default)(statsResults).filter(function (mt) {
|
|
126
|
+
return mt.includes(baseMediaType);
|
|
127
|
+
}).reduce(function (acc, mt) {
|
|
128
|
+
return acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter);
|
|
129
|
+
}, []);
|
|
130
|
+
var meanRoundTripTime = (0, _keys.default)(statsResults).filter(function (mt) {
|
|
131
|
+
return mt.includes(baseMediaType);
|
|
132
|
+
}).reduce(function (acc, mt) {
|
|
133
|
+
return acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime);
|
|
134
|
+
}, []);
|
|
135
|
+
audioSender.common.common.direction = ((_statsResults$Object$2 = statsResults[(0, _keys.default)(statsResults).find(function (mediaType) {
|
|
136
|
+
return mediaType.includes(baseMediaType);
|
|
137
|
+
})]) === null || _statsResults$Object$2 === void 0 ? void 0 : _statsResults$Object$2.direction) || 'inactive';
|
|
138
|
+
audioSender.common.common.isMain = !baseMediaType.includes('-share');
|
|
139
|
+
audioSender.common.transportType = statsResults.connectionType.local.transport;
|
|
140
|
+
audioSender.common.maxRemoteJitter = (0, _max2.default)(meanRemoteJitter) * 1000 || 0;
|
|
141
|
+
audioSender.common.meanRemoteJitter = (0, _mean2.default)(meanRemoteJitter) * 1000 || 0;
|
|
142
|
+
audioSender.common.rtpPackets = totalPacketsSent - lastPacketsSent || 0;
|
|
143
|
+
// audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;
|
|
87
144
|
// From candidate-pair
|
|
88
|
-
audioSender.common.availableBitrate = statsResults
|
|
145
|
+
audioSender.common.availableBitrate = getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, 'availableOutgoingBitrate');
|
|
89
146
|
// Calculate based on how much packets lost of received compated to how to the client sent
|
|
90
147
|
|
|
91
|
-
var
|
|
92
|
-
audioSender.common.remoteLossRate =
|
|
148
|
+
var totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;
|
|
149
|
+
audioSender.common.remoteLossRate = totalPacketsSent - lastPacketsSent > 0 ? totalPacketsLostForaMin * 100 / (totalPacketsSent - lastPacketsSent) : 0; // This is the packets sent with in last min
|
|
93
150
|
|
|
94
|
-
audioSender.common.maxRoundTripTime =
|
|
95
|
-
|
|
96
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
|
97
|
-
audioSender.common.meanRoundTripTime = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
|
151
|
+
audioSender.common.maxRoundTripTime = (0, _max2.default)(meanRoundTripTime) * 1000 || 0;
|
|
152
|
+
audioSender.common.meanRoundTripTime = (0, _mean2.default)(meanRoundTripTime) * 1000 || 0;
|
|
98
153
|
audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;
|
|
99
154
|
|
|
100
155
|
// Calculate the outgoing bitrate
|
|
101
|
-
var totalBytesSentInaMin = statsResults
|
|
102
|
-
audioSender.
|
|
103
|
-
audioSender.common.rtpBitrate = audioSender.streams[0].common.transmittedBitrate;
|
|
104
|
-
audioSender.streams[0].transmittedKeyFrames = statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;
|
|
105
|
-
audioSender.streams[0].requestedKeyFrames = statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;
|
|
156
|
+
var totalBytesSentInaMin = getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, 'totalBytesSent') - getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, 'totalBytesSent');
|
|
157
|
+
audioSender.common.rtpBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
|
|
106
158
|
};
|
|
107
159
|
exports.getAudioSenderMqa = getAudioSenderMqa;
|
|
108
|
-
var
|
|
109
|
-
var _lastMqaDataSent$
|
|
110
|
-
var
|
|
111
|
-
statsResults =
|
|
112
|
-
lastMqaDataSent =
|
|
113
|
-
mediaType =
|
|
114
|
-
var sendrecvType = _constants.STATS.
|
|
115
|
-
var
|
|
116
|
-
var
|
|
117
|
-
var
|
|
118
|
-
var
|
|
119
|
-
var lastFramesDecoded = ((_lastMqaDataSent$medi18 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi18 === void 0 ? void 0 : _lastMqaDataSent$medi18[sendrecvType].framesDecoded) || 0;
|
|
120
|
-
var lastFramesDropped = ((_lastMqaDataSent$medi19 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi19 === void 0 ? void 0 : _lastMqaDataSent$medi19[sendrecvType].framesDropped) || 0;
|
|
121
|
-
var lastKeyFramesDecoded = ((_lastMqaDataSent$medi20 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi20 === void 0 ? void 0 : _lastMqaDataSent$medi20[sendrecvType].keyFramesDecoded) || 0;
|
|
122
|
-
var lastPliCount = ((_lastMqaDataSent$medi21 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi21 === void 0 ? void 0 : _lastMqaDataSent$medi21[sendrecvType].totalPliCount) || 0;
|
|
160
|
+
var getAudioSenderStreamMqa = function getAudioSenderStreamMqa(_ref4) {
|
|
161
|
+
var _lastMqaDataSent$medi9, _lastMqaDataSent$medi10, _lastMqaDataSent$medi11, _lastMqaDataSent$medi12;
|
|
162
|
+
var audioSenderStream = _ref4.audioSenderStream,
|
|
163
|
+
statsResults = _ref4.statsResults,
|
|
164
|
+
lastMqaDataSent = _ref4.lastMqaDataSent,
|
|
165
|
+
mediaType = _ref4.mediaType;
|
|
166
|
+
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
167
|
+
var lastBytesSent = ((_lastMqaDataSent$medi9 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi9 === void 0 ? void 0 : _lastMqaDataSent$medi9[sendrecvType].totalBytesSent) || 0;
|
|
168
|
+
var lastFramesEncoded = ((_lastMqaDataSent$medi10 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi10 === void 0 ? void 0 : _lastMqaDataSent$medi10[sendrecvType].totalKeyFramesEncoded) || 0;
|
|
169
|
+
var lastFirCount = ((_lastMqaDataSent$medi11 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi11 === void 0 ? void 0 : _lastMqaDataSent$medi11[sendrecvType].totalFirCount) || 0;
|
|
170
|
+
var lastPacketsSent = ((_lastMqaDataSent$medi12 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi12 === void 0 ? void 0 : _lastMqaDataSent$medi12[sendrecvType].totalPacketsSent) || 0;
|
|
123
171
|
var csi = statsResults[mediaType].csi;
|
|
124
|
-
if (csi && !
|
|
125
|
-
|
|
172
|
+
if (csi && !audioSenderStream.common.csi.includes(csi)) {
|
|
173
|
+
audioSenderStream.common.csi.push(csi);
|
|
126
174
|
}
|
|
127
|
-
|
|
128
|
-
|
|
175
|
+
audioSenderStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
|
|
176
|
+
var totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;
|
|
177
|
+
audioSenderStream.common.transmittedBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
|
|
178
|
+
audioSenderStream.transmittedKeyFrames = statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;
|
|
179
|
+
audioSenderStream.requestedKeyFrames = statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;
|
|
180
|
+
};
|
|
181
|
+
exports.getAudioSenderStreamMqa = getAudioSenderStreamMqa;
|
|
182
|
+
var getVideoReceiverMqa = function getVideoReceiverMqa(_ref5) {
|
|
183
|
+
var _statsResults$Object$3;
|
|
184
|
+
var videoReceiver = _ref5.videoReceiver,
|
|
185
|
+
statsResults = _ref5.statsResults,
|
|
186
|
+
lastMqaDataSent = _ref5.lastMqaDataSent,
|
|
187
|
+
baseMediaType = _ref5.baseMediaType;
|
|
188
|
+
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
|
189
|
+
var getLastTotalValue = function getLastTotalValue(value) {
|
|
190
|
+
return getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
|
|
191
|
+
};
|
|
192
|
+
var getTotalValue = function getTotalValue(value) {
|
|
193
|
+
return getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
|
|
194
|
+
};
|
|
195
|
+
var lastPacketsReceived = getLastTotalValue('totalPacketsReceived');
|
|
196
|
+
var lastPacketsLost = getLastTotalValue('totalPacketsLost');
|
|
197
|
+
var lastBytesReceived = getLastTotalValue('totalBytesReceived');
|
|
198
|
+
var packetsLost = getTotalValue('totalPacketsLost');
|
|
199
|
+
var totalPacketsReceived = getTotalValue('totalPacketsReceived');
|
|
200
|
+
var totalBytesReceived = getTotalValue('totalBytesReceived');
|
|
201
|
+
var meanRemoteJitter = (0, _keys.default)(statsResults).filter(function (mt) {
|
|
202
|
+
return mt.includes(baseMediaType);
|
|
203
|
+
}).reduce(function (acc, mt) {
|
|
204
|
+
return acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter);
|
|
205
|
+
}, []);
|
|
206
|
+
videoReceiver.common.common.direction = ((_statsResults$Object$3 = statsResults[(0, _keys.default)(statsResults).find(function (mediaType) {
|
|
207
|
+
return mediaType.includes(baseMediaType);
|
|
208
|
+
})]) === null || _statsResults$Object$3 === void 0 ? void 0 : _statsResults$Object$3.direction) || 'inactive';
|
|
209
|
+
videoReceiver.common.common.isMain = !baseMediaType.includes('-share');
|
|
129
210
|
videoReceiver.common.transportType = statsResults.connectionType.local.transport;
|
|
130
211
|
|
|
131
212
|
// collect the packets received for the last min
|
|
132
|
-
videoReceiver.common.rtpPackets =
|
|
133
|
-
videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;
|
|
213
|
+
videoReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived || 0;
|
|
134
214
|
|
|
135
215
|
// Hop by hop are numbers and not percentage so we compare on what we sent the last min
|
|
136
216
|
// this is including packet lost
|
|
137
|
-
var totalPacketsLost =
|
|
217
|
+
var totalPacketsLost = packetsLost - lastPacketsLost;
|
|
138
218
|
videoReceiver.common.mediaHopByHopLost = totalPacketsLost;
|
|
139
219
|
videoReceiver.common.rtpHopByHopLost = totalPacketsLost;
|
|
140
220
|
|
|
141
|
-
// End to end packetloss is after recovery
|
|
142
|
-
videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketsLost;
|
|
143
|
-
|
|
144
221
|
// calculate this values
|
|
222
|
+
videoReceiver.common.maxRemoteJitter = (0, _max2.default)(meanRemoteJitter) * 1000 || 0;
|
|
223
|
+
videoReceiver.common.meanRemoteJitter = (0, _mean2.default)(meanRemoteJitter) * 1000 || 0;
|
|
145
224
|
|
|
146
|
-
|
|
225
|
+
// Calculate the outgoing bitrate
|
|
226
|
+
var totalBytesReceivedInaMin = totalBytesReceived - lastBytesReceived;
|
|
227
|
+
videoReceiver.common.rtpBitrate = totalBytesReceivedInaMin ? totalBytesReceivedInaMin * 8 / 60 : 0;
|
|
228
|
+
};
|
|
229
|
+
exports.getVideoReceiverMqa = getVideoReceiverMqa;
|
|
230
|
+
var getVideoReceiverStreamMqa = function getVideoReceiverStreamMqa(_ref6) {
|
|
231
|
+
var _lastMqaDataSent$medi13, _lastMqaDataSent$medi14, _lastMqaDataSent$medi15, _lastMqaDataSent$medi16, _lastMqaDataSent$medi17, _lastMqaDataSent$medi18, _lastMqaDataSent$medi19, _lastMqaDataSent$medi20;
|
|
232
|
+
var videoReceiverStream = _ref6.videoReceiverStream,
|
|
233
|
+
statsResults = _ref6.statsResults,
|
|
234
|
+
lastMqaDataSent = _ref6.lastMqaDataSent,
|
|
235
|
+
mediaType = _ref6.mediaType;
|
|
236
|
+
var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
|
|
237
|
+
var lastPacketsReceived = ((_lastMqaDataSent$medi13 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi13 === void 0 ? void 0 : _lastMqaDataSent$medi13[sendrecvType].totalPacketsReceived) || 0;
|
|
238
|
+
var lastPacketsLost = ((_lastMqaDataSent$medi14 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi14 === void 0 ? void 0 : _lastMqaDataSent$medi14[sendrecvType].totalPacketsLost) || 0;
|
|
239
|
+
var lastBytesReceived = ((_lastMqaDataSent$medi15 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi15 === void 0 ? void 0 : _lastMqaDataSent$medi15[sendrecvType].totalBytesReceived) || 0;
|
|
240
|
+
var lastFramesReceived = ((_lastMqaDataSent$medi16 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi16 === void 0 ? void 0 : _lastMqaDataSent$medi16[sendrecvType].framesReceived) || 0;
|
|
241
|
+
var lastFramesDecoded = ((_lastMqaDataSent$medi17 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi17 === void 0 ? void 0 : _lastMqaDataSent$medi17[sendrecvType].framesDecoded) || 0;
|
|
242
|
+
var lastFramesDropped = ((_lastMqaDataSent$medi18 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi18 === void 0 ? void 0 : _lastMqaDataSent$medi18[sendrecvType].framesDropped) || 0;
|
|
243
|
+
var lastKeyFramesDecoded = ((_lastMqaDataSent$medi19 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi19 === void 0 ? void 0 : _lastMqaDataSent$medi19[sendrecvType].keyFramesDecoded) || 0;
|
|
244
|
+
var lastPliCount = ((_lastMqaDataSent$medi20 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi20 === void 0 ? void 0 : _lastMqaDataSent$medi20[sendrecvType].totalPliCount) || 0;
|
|
245
|
+
var csi = statsResults[mediaType].csi;
|
|
246
|
+
if (csi && !videoReceiverStream.common.csi.includes(csi)) {
|
|
247
|
+
videoReceiverStream.common.csi.push(csi);
|
|
248
|
+
}
|
|
249
|
+
videoReceiverStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
|
|
250
|
+
var totalPacketLoss = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
|
|
251
|
+
|
|
252
|
+
// End to end packetloss is after recovery
|
|
253
|
+
videoReceiverStream.common.rtpEndToEndLost = totalPacketLoss;
|
|
254
|
+
videoReceiverStream.common.rtpJitter =
|
|
147
255
|
// @ts-ignore
|
|
148
256
|
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
149
|
-
videoReceiver.common.meanRemoteJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
150
|
-
videoReceiver.streams[0].common.rtpJitter = videoReceiver.common.maxRemoteJitter;
|
|
151
|
-
|
|
152
|
-
// Calculate the outgoing bitrate
|
|
153
257
|
var totalBytesReceivedInaMin = statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;
|
|
154
|
-
|
|
155
|
-
videoReceiver.common.rtpBitrate = videoReceiver.streams[0].common.receivedBitrate;
|
|
156
|
-
|
|
157
|
-
// From tracks //TODO: calculate a proper one
|
|
258
|
+
videoReceiverStream.common.receivedBitrate = totalBytesReceivedInaMin ? totalBytesReceivedInaMin * 8 / 60 : 0;
|
|
158
259
|
var totalFrameReceivedInaMin = statsResults[mediaType][sendrecvType].framesReceived - lastFramesReceived;
|
|
159
260
|
var totalFrameDecodedInaMin = statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
261
|
+
videoReceiverStream.common.receivedFrameRate = Math.round(totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0);
|
|
262
|
+
videoReceiverStream.common.renderedFrameRate = Math.round(totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0);
|
|
263
|
+
videoReceiverStream.common.framesDropped = statsResults[mediaType][sendrecvType].framesDropped - lastFramesDropped || 0;
|
|
264
|
+
videoReceiverStream.receivedHeight = statsResults[mediaType][sendrecvType].height || 0;
|
|
265
|
+
videoReceiverStream.receivedWidth = statsResults[mediaType][sendrecvType].width || 0;
|
|
266
|
+
videoReceiverStream.receivedFrameSize = videoReceiverStream.receivedHeight * videoReceiverStream.receivedWidth / 256;
|
|
267
|
+
videoReceiverStream.receivedKeyFrames = statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;
|
|
268
|
+
videoReceiverStream.requestedKeyFrames = statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;
|
|
168
269
|
};
|
|
169
|
-
exports.
|
|
170
|
-
var getVideoSenderMqa = function getVideoSenderMqa(
|
|
171
|
-
var
|
|
172
|
-
var videoSender =
|
|
173
|
-
statsResults =
|
|
174
|
-
lastMqaDataSent =
|
|
175
|
-
|
|
270
|
+
exports.getVideoReceiverStreamMqa = getVideoReceiverStreamMqa;
|
|
271
|
+
var getVideoSenderMqa = function getVideoSenderMqa(_ref7) {
|
|
272
|
+
var _statsResults$Object$4;
|
|
273
|
+
var videoSender = _ref7.videoSender,
|
|
274
|
+
statsResults = _ref7.statsResults,
|
|
275
|
+
lastMqaDataSent = _ref7.lastMqaDataSent,
|
|
276
|
+
baseMediaType = _ref7.baseMediaType;
|
|
176
277
|
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
177
|
-
var
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
var
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
var
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
278
|
+
var getLastTotalValue = function getLastTotalValue(value) {
|
|
279
|
+
return getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
|
|
280
|
+
};
|
|
281
|
+
var getTotalValue = function getTotalValue(value) {
|
|
282
|
+
return getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
|
|
283
|
+
};
|
|
284
|
+
var lastPacketsSent = getLastTotalValue('totalPacketsSent');
|
|
285
|
+
var lastBytesSent = getLastTotalValue('totalBytesSent');
|
|
286
|
+
var lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');
|
|
287
|
+
var totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');
|
|
288
|
+
var totalPacketsSent = getTotalValue('totalPacketsSent');
|
|
289
|
+
var totalBytesSent = getTotalValue('totalBytesSent');
|
|
290
|
+
var availableOutgoingBitrate = getTotalValue('availableOutgoingBitrate');
|
|
291
|
+
videoSender.common.common.direction = ((_statsResults$Object$4 = statsResults[(0, _keys.default)(statsResults).find(function (mediaType) {
|
|
292
|
+
return mediaType.includes(baseMediaType);
|
|
293
|
+
})]) === null || _statsResults$Object$4 === void 0 ? void 0 : _statsResults$Object$4.direction) || 'inactive';
|
|
294
|
+
videoSender.common.common.isMain = !baseMediaType.includes('-share');
|
|
189
295
|
videoSender.common.transportType = statsResults.connectionType.local.transport;
|
|
296
|
+
var meanRemoteJitter = (0, _keys.default)(statsResults).filter(function (mt) {
|
|
297
|
+
return mt.includes(baseMediaType);
|
|
298
|
+
}).reduce(function (acc, mt) {
|
|
299
|
+
return acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter);
|
|
300
|
+
}, []);
|
|
301
|
+
var meanRoundTripTime = (0, _keys.default)(statsResults).filter(function (mt) {
|
|
302
|
+
return mt.includes(baseMediaType);
|
|
303
|
+
}).reduce(function (acc, mt) {
|
|
304
|
+
return acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime);
|
|
305
|
+
}, []);
|
|
190
306
|
|
|
191
307
|
// @ts-ignore
|
|
192
|
-
videoSender.common.maxRemoteJitter =
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
videoSender.common.
|
|
196
|
-
videoSender.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
|
|
197
|
-
videoSender.common.availableBitrate = statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;
|
|
198
|
-
// Calculate based on how much packets lost of received compated to how to the client sent
|
|
308
|
+
videoSender.common.maxRemoteJitter = (0, _max2.default)(meanRemoteJitter) * 1000 || 0;
|
|
309
|
+
videoSender.common.meanRemoteJitter = (0, _mean2.default)(meanRemoteJitter) * 1000 || 0;
|
|
310
|
+
videoSender.common.rtpPackets = totalPacketsSent - lastPacketsSent;
|
|
311
|
+
videoSender.common.availableBitrate = availableOutgoingBitrate;
|
|
199
312
|
|
|
200
|
-
|
|
201
|
-
|
|
313
|
+
// Calculate based on how much packets lost of received compated to how to the client sent
|
|
314
|
+
var totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;
|
|
315
|
+
videoSender.common.remoteLossRate = totalPacketsSent - lastPacketsSent > 0 ? totalPacketsLostForaMin * 100 / (totalPacketsSent - lastPacketsSent) : 0; // This is the packets sent with in last min || 0;
|
|
202
316
|
|
|
203
|
-
videoSender.common.maxRoundTripTime =
|
|
204
|
-
|
|
205
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
|
206
|
-
videoSender.common.meanRoundTripTime = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
|
317
|
+
videoSender.common.maxRoundTripTime = (0, _max2.default)(meanRoundTripTime) * 1000 || 0;
|
|
318
|
+
videoSender.common.meanRoundTripTime = (0, _mean2.default)(meanRoundTripTime) * 1000 || 0;
|
|
207
319
|
videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;
|
|
208
|
-
|
|
320
|
+
|
|
321
|
+
// Calculate the outgoing bitrate
|
|
322
|
+
var totalBytesSentInaMin = totalBytesSent - lastBytesSent;
|
|
323
|
+
videoSender.common.rtpBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
|
|
324
|
+
};
|
|
325
|
+
exports.getVideoSenderMqa = getVideoSenderMqa;
|
|
326
|
+
var getVideoSenderStreamMqa = function getVideoSenderStreamMqa(_ref8) {
|
|
327
|
+
var _lastMqaDataSent$medi21, _lastMqaDataSent$medi22, _lastMqaDataSent$medi23, _lastMqaDataSent$medi24, _lastMqaDataSent$medi25;
|
|
328
|
+
var videoSenderStream = _ref8.videoSenderStream,
|
|
329
|
+
statsResults = _ref8.statsResults,
|
|
330
|
+
lastMqaDataSent = _ref8.lastMqaDataSent,
|
|
331
|
+
mediaType = _ref8.mediaType;
|
|
332
|
+
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
333
|
+
var lastPacketsSent = ((_lastMqaDataSent$medi21 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi21 === void 0 ? void 0 : _lastMqaDataSent$medi21[sendrecvType].totalPacketsSent) || 0;
|
|
334
|
+
var lastBytesSent = ((_lastMqaDataSent$medi22 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi22 === void 0 ? void 0 : _lastMqaDataSent$medi22[sendrecvType].totalBytesSent) || 0;
|
|
335
|
+
var lastKeyFramesEncoded = ((_lastMqaDataSent$medi23 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi23 === void 0 ? void 0 : _lastMqaDataSent$medi23[sendrecvType].totalKeyFramesEncoded) || 0;
|
|
336
|
+
var lastFirCount = ((_lastMqaDataSent$medi24 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi24 === void 0 ? void 0 : _lastMqaDataSent$medi24[sendrecvType].totalFirCount) || 0;
|
|
337
|
+
var lastFramesSent = ((_lastMqaDataSent$medi25 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi25 === void 0 ? void 0 : _lastMqaDataSent$medi25[sendrecvType].framesSent) || 0;
|
|
338
|
+
var csi = statsResults[mediaType].csi;
|
|
339
|
+
if (csi && !videoSenderStream.common.csi.includes(csi)) {
|
|
340
|
+
videoSenderStream.common.csi.push(csi);
|
|
341
|
+
}
|
|
342
|
+
videoSenderStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
|
|
209
343
|
|
|
210
344
|
// Calculate the outgoing bitrate
|
|
211
345
|
var totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
videoSender.streams[0].requestedKeyFrames = statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;
|
|
346
|
+
videoSenderStream.common.transmittedBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
|
|
347
|
+
videoSenderStream.transmittedKeyFrames = statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastKeyFramesEncoded || 0;
|
|
348
|
+
videoSenderStream.requestedKeyFrames = statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;
|
|
216
349
|
|
|
217
350
|
// From tracks //TODO: calculate a proper one
|
|
218
351
|
var totalFrameSentInaMin = statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
352
|
+
videoSenderStream.common.transmittedFrameRate = Math.round(totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0);
|
|
353
|
+
videoSenderStream.transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;
|
|
354
|
+
videoSenderStream.transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;
|
|
355
|
+
videoSenderStream.transmittedFrameSize = videoSenderStream.transmittedHeight * videoSenderStream.transmittedWidth / 256;
|
|
223
356
|
};
|
|
224
|
-
exports.
|
|
357
|
+
exports.getVideoSenderStreamMqa = getVideoSenderStreamMqa;
|
|
225
358
|
//# sourceMappingURL=mqaUtil.js.map
|