@webex/plugin-meetings 2.60.1-next.13 → 2.60.1-next.15

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