@webex/plugin-meetings 3.0.0-stream-classes.4 → 3.0.0-test.1
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 +12 -0
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/common/errors/no-meeting-info.js +51 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/reclaim-host-role-errors.js +158 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/webex-errors.js +23 -3
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/request.js +5 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +69 -9
- package/dist/constants.js.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.js +93 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/index.js +16 -2
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +40 -11
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +15 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +42 -21
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/media/index.js +10 -6
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +13 -3
- package/dist/media/properties.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +135 -330
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +4 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2187 -1074
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +37 -25
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +34 -19
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +71 -0
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +48 -23
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +25 -4
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +17 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +142 -57
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +2 -6
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +11 -0
- package/dist/member/util.js.map +1 -1
- package/dist/members/index.js +17 -1
- package/dist/members/index.js.map +1 -1
- package/dist/members/types.js.map +1 -1
- package/dist/members/util.js +15 -4
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +15 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +1 -1
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +16 -2
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +222 -73
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +22 -0
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/reachability/clusterReachability.js +356 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.js +262 -432
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +1 -1
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reconnection-manager/index.js +113 -96
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js +57 -25
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +5 -13
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +173 -81
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/index.js +68 -6
- package/dist/rtcMetrics/index.js.map +1 -1
- package/dist/statsAnalyzer/index.js +338 -289
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +296 -156
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/types/common/errors/webex-errors.d.ts +13 -1
- package/dist/types/common/logs/request.d.ts +2 -0
- package/dist/types/config.d.ts +1 -1
- package/dist/types/constants.d.ts +66 -13
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interceptors/index.d.ts +2 -0
- package/dist/types/interceptors/locusRetry.d.ts +27 -0
- package/dist/types/locus-info/index.d.ts +1 -1
- package/dist/types/locus-info/parser.d.ts +3 -2
- package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
- package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
- package/dist/types/meeting/index.d.ts +285 -34
- package/dist/types/meeting/locusMediaRequest.d.ts +1 -2
- package/dist/types/meeting/muteState.d.ts +2 -8
- package/dist/types/meeting/request.d.ts +4 -1
- package/dist/types/meeting/util.d.ts +25 -1
- package/dist/types/meeting-info/index.d.ts +7 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +1 -0
- package/dist/types/meetings/collection.d.ts +9 -0
- package/dist/types/meetings/index.d.ts +42 -14
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/members/types.d.ts +1 -0
- package/dist/types/members/util.d.ts +5 -0
- package/dist/types/metrics/constants.d.ts +15 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +2 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +2 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +25 -1
- package/dist/types/multistream/sendSlotManager.d.ts +9 -0
- package/dist/types/reachability/clusterReachability.d.ts +109 -0
- package/dist/types/reachability/index.d.ts +59 -112
- package/dist/types/reachability/request.d.ts +1 -1
- package/dist/types/reachability/util.d.ts +8 -0
- package/dist/types/reconnection-manager/index.d.ts +10 -0
- package/dist/types/roap/index.d.ts +2 -1
- package/dist/types/roap/request.d.ts +2 -1
- package/dist/types/roap/turnDiscovery.d.ts +21 -4
- package/dist/types/rtcMetrics/index.d.ts +15 -1
- package/dist/types/statsAnalyzer/index.d.ts +28 -11
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
- package/dist/types/webinar/collection.d.ts +16 -0
- package/dist/types/webinar/index.d.ts +5 -0
- package/dist/webinar/collection.js +44 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.js +69 -0
- package/dist/webinar/index.js.map +1 -0
- package/package.json +3 -2
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +19 -2
- package/src/common/logs/request.ts +5 -1
- package/src/config.ts +1 -1
- package/src/constants.ts +71 -6
- package/src/index.ts +5 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/interpretation/index.ts +18 -1
- package/src/locus-info/index.ts +52 -16
- package/src/locus-info/mediaSharesUtils.ts +16 -0
- package/src/locus-info/parser.ts +47 -21
- package/src/media/index.ts +8 -6
- package/src/media/properties.ts +17 -2
- package/src/mediaQualityMetrics/config.ts +103 -238
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +1510 -529
- package/src/meeting/muteState.ts +34 -20
- package/src/meeting/request.ts +19 -1
- package/src/meeting/util.ts +97 -0
- package/src/meeting-info/index.ts +47 -20
- package/src/meeting-info/meeting-info-v2.ts +27 -5
- package/src/meeting-info/utilv2.ts +1 -1
- package/src/meetings/collection.ts +13 -0
- package/src/meetings/index.ts +112 -31
- package/src/meetings/util.ts +2 -8
- package/src/member/index.ts +9 -0
- package/src/member/util.ts +14 -0
- package/src/members/index.ts +29 -2
- package/src/members/types.ts +1 -0
- package/src/members/util.ts +15 -1
- package/src/metrics/constants.ts +14 -0
- package/src/multistream/mediaRequestManager.ts +4 -1
- package/src/multistream/remoteMediaGroup.ts +19 -0
- package/src/multistream/remoteMediaManager.ts +141 -18
- package/src/multistream/sendSlotManager.ts +29 -0
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +221 -382
- package/src/reachability/request.ts +1 -1
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +87 -83
- package/src/roap/index.ts +60 -24
- package/src/roap/request.ts +3 -16
- package/src/roap/turnDiscovery.ts +112 -39
- package/src/rtcMetrics/index.ts +71 -5
- package/src/statsAnalyzer/index.ts +430 -427
- package/src/statsAnalyzer/mqaUtil.ts +317 -168
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +7 -7
- package/test/integration/spec/journey.js +86 -104
- package/test/integration/spec/space-meeting.js +9 -9
- package/test/unit/spec/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/interpretation/index.ts +36 -3
- package/test/unit/spec/locus-info/index.js +205 -12
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
- package/test/unit/spec/locus-info/parser.js +54 -13
- package/test/unit/spec/media/index.ts +20 -4
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +4027 -1075
- package/test/unit/spec/meeting/muteState.js +219 -67
- package/test/unit/spec/meeting/request.js +63 -12
- package/test/unit/spec/meeting/utils.js +93 -0
- package/test/unit/spec/meeting-info/index.js +180 -61
- package/test/unit/spec/meeting-info/meetinginfov2.js +196 -53
- package/test/unit/spec/meetings/collection.js +12 -0
- package/test/unit/spec/meetings/index.js +619 -206
- package/test/unit/spec/meetings/utils.js +35 -12
- package/test/unit/spec/member/index.js +8 -7
- package/test/unit/spec/member/util.js +32 -0
- package/test/unit/spec/members/index.js +130 -17
- package/test/unit/spec/members/utils.js +26 -0
- package/test/unit/spec/multistream/mediaRequestManager.ts +20 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +80 -1
- package/test/unit/spec/multistream/remoteMediaManager.ts +210 -3
- package/test/unit/spec/multistream/sendSlotManager.ts +50 -18
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +505 -135
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +74 -17
- package/test/unit/spec/roap/index.ts +181 -61
- package/test/unit/spec/roap/request.ts +27 -3
- package/test/unit/spec/roap/turnDiscovery.ts +362 -101
- package/test/unit/spec/rtcMetrics/index.ts +57 -3
- package/test/unit/spec/stats-analyzer/index.js +1225 -12
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/integrationTestUtils.js +4 -4
- package/test/utils/webex-test-users.js +12 -4
|
@@ -5,214 +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');
|
|
57
|
+
audioReceiver.common.transportType = statsResults.connectionType.local.transport;
|
|
33
58
|
|
|
34
59
|
// add rtpPacket info inside common as also for call analyzer
|
|
35
|
-
audioReceiver.common.rtpPackets =
|
|
60
|
+
audioReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived;
|
|
61
|
+
|
|
36
62
|
// Hop by hop are numbers and not percentage so we compare on what we sent the last min
|
|
37
63
|
// collect the packets received for the last min
|
|
38
|
-
|
|
39
|
-
audioReceiver.common.mediaHopByHopLost =
|
|
40
|
-
audioReceiver.common.rtpHopByHopLost =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
(
|
|
44
|
-
audioReceiver.streams[0].common.meanRtpJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
|
|
45
|
-
audioReceiver.streams[0].common.rtpJitter = audioReceiver.streams[0].common.maxRtpJitter;
|
|
46
|
-
|
|
47
|
-
// Fec packets do come in as part of the FEC only for audio
|
|
48
|
-
var fecRecovered = statsResults[mediaType][sendrecvType].fecPacketsReceived - lastFecPacketsReceived - (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);
|
|
49
|
-
audioReceiver.streams[0].common.rtpEndToEndLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;
|
|
50
|
-
audioReceiver.streams[0].common.framesDropped = statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;
|
|
51
|
-
audioReceiver.streams[0].common.renderedFrameRate = audioReceiver.streams[0].common.framesDropped * 100 / 60 || 0;
|
|
52
|
-
audioReceiver.streams[0].common.framesReceived = statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;
|
|
53
|
-
audioReceiver.streams[0].common.concealedFrames = statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;
|
|
54
|
-
audioReceiver.streams[0].common.receivedBitrate = (statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8 / 60 || 0;
|
|
55
|
-
audioReceiver.common.rtpBitrate = audioReceiver.streams[0].common.receivedBitrate;
|
|
64
|
+
var totalPacketsLost = packetsLost - lastPacketsLost;
|
|
65
|
+
audioReceiver.common.mediaHopByHopLost = totalPacketsLost;
|
|
66
|
+
audioReceiver.common.rtpHopByHopLost = totalPacketsLost;
|
|
67
|
+
var fecRecovered = totalFecPacketsReceived - lastFecPacketsReceived - (totalFecPacketsDiscarded - lastFecPacketsDiscarded);
|
|
68
|
+
audioReceiver.common.fecPackets = fecRecovered;
|
|
69
|
+
audioReceiver.common.rtpBitrate = (totalBytesReceived - lastBytesReceived) * 8 / 60 || 0;
|
|
56
70
|
};
|
|
57
71
|
exports.getAudioReceiverMqa = getAudioReceiverMqa;
|
|
58
|
-
var
|
|
59
|
-
var _lastMqaDataSent$
|
|
60
|
-
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,
|
|
61
75
|
statsResults = _ref2.statsResults,
|
|
62
76
|
lastMqaDataSent = _ref2.lastMqaDataSent,
|
|
63
77
|
mediaType = _ref2.mediaType;
|
|
64
|
-
var sendrecvType = _constants.STATS.
|
|
65
|
-
var
|
|
66
|
-
var
|
|
67
|
-
var
|
|
68
|
-
var
|
|
69
|
-
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;
|
|
70
87
|
var csi = statsResults[mediaType].csi;
|
|
71
|
-
if (csi && !
|
|
72
|
-
|
|
88
|
+
if (csi && !audioReceiverStream.common.csi.includes(csi)) {
|
|
89
|
+
audioReceiverStream.common.csi.push(csi);
|
|
73
90
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
audioSender.common.maxRemoteJitter =
|
|
91
|
+
audioReceiverStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
|
|
92
|
+
audioReceiverStream.common.maxRtpJitter =
|
|
77
93
|
// @ts-ignore
|
|
78
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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;
|
|
82
144
|
// From candidate-pair
|
|
83
|
-
audioSender.common.availableBitrate = statsResults
|
|
145
|
+
audioSender.common.availableBitrate = getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, 'availableOutgoingBitrate');
|
|
84
146
|
// Calculate based on how much packets lost of received compated to how to the client sent
|
|
85
147
|
|
|
86
|
-
var
|
|
87
|
-
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
|
|
88
150
|
|
|
89
|
-
audioSender.common.maxRoundTripTime =
|
|
90
|
-
|
|
91
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
|
|
92
|
-
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;
|
|
93
153
|
audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;
|
|
94
154
|
|
|
95
155
|
// Calculate the outgoing bitrate
|
|
96
|
-
var totalBytesSentInaMin = statsResults
|
|
97
|
-
audioSender.
|
|
98
|
-
audioSender.common.rtpBitrate = audioSender.streams[0].common.transmittedBitrate;
|
|
99
|
-
audioSender.streams[0].transmittedKeyFrames = statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;
|
|
100
|
-
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;
|
|
101
158
|
};
|
|
102
159
|
exports.getAudioSenderMqa = getAudioSenderMqa;
|
|
103
|
-
var
|
|
104
|
-
var _lastMqaDataSent$
|
|
105
|
-
var
|
|
106
|
-
statsResults =
|
|
107
|
-
lastMqaDataSent =
|
|
108
|
-
mediaType =
|
|
109
|
-
var sendrecvType = _constants.STATS.
|
|
110
|
-
var
|
|
111
|
-
var
|
|
112
|
-
var
|
|
113
|
-
var
|
|
114
|
-
var lastFramesDecoded = ((_lastMqaDataSent$medi18 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi18 === void 0 ? void 0 : _lastMqaDataSent$medi18[sendrecvType].framesDecoded) || 0;
|
|
115
|
-
var lastFramesDropped = ((_lastMqaDataSent$medi19 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi19 === void 0 ? void 0 : _lastMqaDataSent$medi19[sendrecvType].framesDropped) || 0;
|
|
116
|
-
var lastKeyFramesDecoded = ((_lastMqaDataSent$medi20 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi20 === void 0 ? void 0 : _lastMqaDataSent$medi20[sendrecvType].keyFramesDecoded) || 0;
|
|
117
|
-
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;
|
|
118
171
|
var csi = statsResults[mediaType].csi;
|
|
119
|
-
if (csi && !
|
|
120
|
-
|
|
172
|
+
if (csi && !audioSenderStream.common.csi.includes(csi)) {
|
|
173
|
+
audioSenderStream.common.csi.push(csi);
|
|
121
174
|
}
|
|
122
|
-
|
|
123
|
-
|
|
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');
|
|
210
|
+
videoReceiver.common.transportType = statsResults.connectionType.local.transport;
|
|
211
|
+
|
|
124
212
|
// collect the packets received for the last min
|
|
125
|
-
videoReceiver.common.rtpPackets =
|
|
126
|
-
videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;
|
|
127
|
-
var totalPacketLoss = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
|
|
213
|
+
videoReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived || 0;
|
|
128
214
|
|
|
129
|
-
//
|
|
215
|
+
// Hop by hop are numbers and not percentage so we compare on what we sent the last min
|
|
130
216
|
// this is including packet lost
|
|
131
|
-
|
|
132
|
-
videoReceiver.common.
|
|
133
|
-
|
|
134
|
-
// End to end packetloss is after recovery
|
|
135
|
-
videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketLoss;
|
|
217
|
+
var totalPacketsLost = packetsLost - lastPacketsLost;
|
|
218
|
+
videoReceiver.common.mediaHopByHopLost = totalPacketsLost;
|
|
219
|
+
videoReceiver.common.rtpHopByHopLost = totalPacketsLost;
|
|
136
220
|
|
|
137
221
|
// calculate this values
|
|
138
|
-
|
|
139
|
-
videoReceiver.common.
|
|
140
|
-
// @ts-ignore
|
|
141
|
-
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
142
|
-
videoReceiver.common.meanRemoteJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
143
|
-
videoReceiver.streams[0].common.rtpJitter = videoReceiver.common.maxRemoteJitter;
|
|
144
|
-
// videoReceiver.streams[0].common.rtpJitter = (statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay - lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].jitterBufferDelay) / (statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount - lastMqaDataSent.resolutions[mediaType]?.[sendrecvType].jitterBufferEmittedCount) * 1000 || 0;
|
|
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
|
|
147
|
-
var totalBytesReceivedInaMin =
|
|
148
|
-
videoReceiver.
|
|
149
|
-
videoReceiver.common.rtpBitrate = videoReceiver.streams[0].common.receivedBitrate;
|
|
150
|
-
|
|
151
|
-
// From tracks //TODO: calculate a proper one
|
|
152
|
-
var totalFrameReceivedInaMin = statsResults.resolutions[mediaType][sendrecvType].framesReceived - lastFramesReceived;
|
|
153
|
-
var totalFrameDecodedInaMin = statsResults.resolutions[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;
|
|
154
|
-
videoReceiver.streams[0].common.receivedFrameRate = totalFrameReceivedInaMin ? totalFrameReceivedInaMin * 100 / 60 : 0;
|
|
155
|
-
videoReceiver.streams[0].common.renderedFrameRate = totalFrameDecodedInaMin ? totalFrameDecodedInaMin * 100 / 60 : 0;
|
|
156
|
-
videoReceiver.streams[0].common.framesDropped = statsResults.resolutions[mediaType][sendrecvType].framesDropped - lastFramesDropped;
|
|
157
|
-
videoReceiver.streams[0].receivedHeight = statsResults.resolutions[mediaType][sendrecvType].height || 0;
|
|
158
|
-
videoReceiver.streams[0].receivedWidth = statsResults.resolutions[mediaType][sendrecvType].width || 0;
|
|
159
|
-
videoReceiver.streams[0].receivedFrameSize = videoReceiver.streams[0].receivedHeight * videoReceiver.streams[0].receivedWidth / 256;
|
|
160
|
-
videoReceiver.streams[0].receivedKeyFrames = statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;
|
|
161
|
-
videoReceiver.streams[0].requestedKeyFrames = statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;
|
|
226
|
+
var totalBytesReceivedInaMin = totalBytesReceived - lastBytesReceived;
|
|
227
|
+
videoReceiver.common.rtpBitrate = totalBytesReceivedInaMin ? totalBytesReceivedInaMin * 8 / 60 : 0;
|
|
162
228
|
};
|
|
163
229
|
exports.getVideoReceiverMqa = getVideoReceiverMqa;
|
|
164
|
-
var
|
|
165
|
-
var _lastMqaDataSent$
|
|
166
|
-
var
|
|
167
|
-
statsResults =
|
|
168
|
-
lastMqaDataSent =
|
|
169
|
-
mediaType =
|
|
170
|
-
var sendrecvType = _constants.STATS.
|
|
171
|
-
var
|
|
172
|
-
var lastPacketsLost = ((_lastMqaDataSent$
|
|
173
|
-
var
|
|
174
|
-
var
|
|
175
|
-
var
|
|
176
|
-
var
|
|
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;
|
|
177
245
|
var csi = statsResults[mediaType].csi;
|
|
178
|
-
if (csi && !
|
|
179
|
-
|
|
246
|
+
if (csi && !videoReceiverStream.common.csi.includes(csi)) {
|
|
247
|
+
videoReceiverStream.common.csi.push(csi);
|
|
180
248
|
}
|
|
181
|
-
|
|
182
|
-
|
|
249
|
+
videoReceiverStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
|
|
250
|
+
var totalPacketLoss = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
|
|
183
251
|
|
|
184
|
-
//
|
|
185
|
-
|
|
252
|
+
// End to end packetloss is after recovery
|
|
253
|
+
videoReceiverStream.common.rtpEndToEndLost = totalPacketLoss;
|
|
254
|
+
videoReceiverStream.common.rtpJitter =
|
|
186
255
|
// @ts-ignore
|
|
187
256
|
(0, _max2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
257
|
+
var totalBytesReceivedInaMin = statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;
|
|
258
|
+
videoReceiverStream.common.receivedBitrate = totalBytesReceivedInaMin ? totalBytesReceivedInaMin * 8 / 60 : 0;
|
|
259
|
+
var totalFrameReceivedInaMin = statsResults[mediaType][sendrecvType].framesReceived - lastFramesReceived;
|
|
260
|
+
var totalFrameDecodedInaMin = statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;
|
|
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;
|
|
269
|
+
};
|
|
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;
|
|
277
|
+
var sendrecvType = _constants.STATS.SEND_DIRECTION;
|
|
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');
|
|
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
|
+
}, []);
|
|
195
306
|
|
|
196
|
-
videoSender.common.maxRoundTripTime =
|
|
197
307
|
// @ts-ignore
|
|
198
|
-
(0, _max2.default)(
|
|
199
|
-
videoSender.common.
|
|
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;
|
|
312
|
+
|
|
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;
|
|
316
|
+
|
|
317
|
+
videoSender.common.maxRoundTripTime = (0, _max2.default)(meanRoundTripTime) * 1000 || 0;
|
|
318
|
+
videoSender.common.meanRoundTripTime = (0, _mean2.default)(meanRoundTripTime) * 1000 || 0;
|
|
200
319
|
videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;
|
|
201
|
-
|
|
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;
|
|
202
343
|
|
|
203
344
|
// Calculate the outgoing bitrate
|
|
204
345
|
var totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
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;
|
|
209
349
|
|
|
210
350
|
// From tracks //TODO: calculate a proper one
|
|
211
|
-
var totalFrameSentInaMin = statsResults
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
351
|
+
var totalFrameSentInaMin = statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);
|
|
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;
|
|
216
356
|
};
|
|
217
|
-
exports.
|
|
357
|
+
exports.getVideoSenderStreamMqa = getVideoSenderStreamMqa;
|
|
218
358
|
//# sourceMappingURL=mqaUtil.js.map
|