@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.
Files changed (239) hide show
  1. package/README.md +12 -0
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/no-meeting-info.js +51 -0
  5. package/dist/common/errors/no-meeting-info.js.map +1 -0
  6. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  7. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  8. package/dist/common/errors/webex-errors.js +23 -3
  9. package/dist/common/errors/webex-errors.js.map +1 -1
  10. package/dist/common/logs/request.js +5 -1
  11. package/dist/common/logs/request.js.map +1 -1
  12. package/dist/config.js +1 -1
  13. package/dist/config.js.map +1 -1
  14. package/dist/constants.js +69 -9
  15. package/dist/constants.js.map +1 -1
  16. package/dist/index.js +11 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/interceptors/index.js +15 -0
  19. package/dist/interceptors/index.js.map +1 -0
  20. package/dist/interceptors/locusRetry.js +93 -0
  21. package/dist/interceptors/locusRetry.js.map +1 -0
  22. package/dist/interpretation/index.js +16 -2
  23. package/dist/interpretation/index.js.map +1 -1
  24. package/dist/interpretation/siLanguage.js +1 -1
  25. package/dist/locus-info/index.js +40 -11
  26. package/dist/locus-info/index.js.map +1 -1
  27. package/dist/locus-info/mediaSharesUtils.js +15 -1
  28. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  29. package/dist/locus-info/parser.js +42 -21
  30. package/dist/locus-info/parser.js.map +1 -1
  31. package/dist/media/index.js +10 -6
  32. package/dist/media/index.js.map +1 -1
  33. package/dist/media/properties.js +13 -3
  34. package/dist/media/properties.js.map +1 -1
  35. package/dist/mediaQualityMetrics/config.js +135 -330
  36. package/dist/mediaQualityMetrics/config.js.map +1 -1
  37. package/dist/meeting/in-meeting-actions.js +4 -0
  38. package/dist/meeting/in-meeting-actions.js.map +1 -1
  39. package/dist/meeting/index.js +2187 -1074
  40. package/dist/meeting/index.js.map +1 -1
  41. package/dist/meeting/muteState.js +37 -25
  42. package/dist/meeting/muteState.js.map +1 -1
  43. package/dist/meeting/request.js +34 -19
  44. package/dist/meeting/request.js.map +1 -1
  45. package/dist/meeting/util.js +71 -0
  46. package/dist/meeting/util.js.map +1 -1
  47. package/dist/meeting-info/index.js +48 -23
  48. package/dist/meeting-info/index.js.map +1 -1
  49. package/dist/meeting-info/meeting-info-v2.js +25 -4
  50. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  51. package/dist/meeting-info/utilv2.js +1 -1
  52. package/dist/meeting-info/utilv2.js.map +1 -1
  53. package/dist/meetings/collection.js +17 -0
  54. package/dist/meetings/collection.js.map +1 -1
  55. package/dist/meetings/index.js +142 -57
  56. package/dist/meetings/index.js.map +1 -1
  57. package/dist/meetings/util.js +2 -6
  58. package/dist/meetings/util.js.map +1 -1
  59. package/dist/member/index.js +9 -0
  60. package/dist/member/index.js.map +1 -1
  61. package/dist/member/util.js +11 -0
  62. package/dist/member/util.js.map +1 -1
  63. package/dist/members/index.js +17 -1
  64. package/dist/members/index.js.map +1 -1
  65. package/dist/members/types.js.map +1 -1
  66. package/dist/members/util.js +15 -4
  67. package/dist/members/util.js.map +1 -1
  68. package/dist/metrics/constants.js +15 -1
  69. package/dist/metrics/constants.js.map +1 -1
  70. package/dist/multistream/mediaRequestManager.js +1 -1
  71. package/dist/multistream/mediaRequestManager.js.map +1 -1
  72. package/dist/multistream/remoteMediaGroup.js +16 -2
  73. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  74. package/dist/multistream/remoteMediaManager.js +222 -73
  75. package/dist/multistream/remoteMediaManager.js.map +1 -1
  76. package/dist/multistream/sendSlotManager.js +22 -0
  77. package/dist/multistream/sendSlotManager.js.map +1 -1
  78. package/dist/reachability/clusterReachability.js +356 -0
  79. package/dist/reachability/clusterReachability.js.map +1 -0
  80. package/dist/reachability/index.js +262 -432
  81. package/dist/reachability/index.js.map +1 -1
  82. package/dist/reachability/request.js +1 -1
  83. package/dist/reachability/request.js.map +1 -1
  84. package/dist/reachability/util.js +29 -0
  85. package/dist/reachability/util.js.map +1 -0
  86. package/dist/reconnection-manager/index.js +113 -96
  87. package/dist/reconnection-manager/index.js.map +1 -1
  88. package/dist/roap/index.js +57 -25
  89. package/dist/roap/index.js.map +1 -1
  90. package/dist/roap/request.js +5 -13
  91. package/dist/roap/request.js.map +1 -1
  92. package/dist/roap/turnDiscovery.js +173 -81
  93. package/dist/roap/turnDiscovery.js.map +1 -1
  94. package/dist/rtcMetrics/index.js +68 -6
  95. package/dist/rtcMetrics/index.js.map +1 -1
  96. package/dist/statsAnalyzer/index.js +338 -289
  97. package/dist/statsAnalyzer/index.js.map +1 -1
  98. package/dist/statsAnalyzer/mqaUtil.js +296 -156
  99. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  100. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  101. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  102. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  103. package/dist/types/common/logs/request.d.ts +2 -0
  104. package/dist/types/config.d.ts +1 -1
  105. package/dist/types/constants.d.ts +66 -13
  106. package/dist/types/index.d.ts +1 -1
  107. package/dist/types/interceptors/index.d.ts +2 -0
  108. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  109. package/dist/types/locus-info/index.d.ts +1 -1
  110. package/dist/types/locus-info/parser.d.ts +3 -2
  111. package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
  112. package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
  113. package/dist/types/meeting/index.d.ts +285 -34
  114. package/dist/types/meeting/locusMediaRequest.d.ts +1 -2
  115. package/dist/types/meeting/muteState.d.ts +2 -8
  116. package/dist/types/meeting/request.d.ts +4 -1
  117. package/dist/types/meeting/util.d.ts +25 -1
  118. package/dist/types/meeting-info/index.d.ts +7 -0
  119. package/dist/types/meeting-info/meeting-info-v2.d.ts +1 -0
  120. package/dist/types/meetings/collection.d.ts +9 -0
  121. package/dist/types/meetings/index.d.ts +42 -14
  122. package/dist/types/member/index.d.ts +1 -0
  123. package/dist/types/members/types.d.ts +1 -0
  124. package/dist/types/members/util.d.ts +5 -0
  125. package/dist/types/metrics/constants.d.ts +15 -0
  126. package/dist/types/multistream/mediaRequestManager.d.ts +2 -0
  127. package/dist/types/multistream/remoteMediaGroup.d.ts +2 -0
  128. package/dist/types/multistream/remoteMediaManager.d.ts +25 -1
  129. package/dist/types/multistream/sendSlotManager.d.ts +9 -0
  130. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  131. package/dist/types/reachability/index.d.ts +59 -112
  132. package/dist/types/reachability/request.d.ts +1 -1
  133. package/dist/types/reachability/util.d.ts +8 -0
  134. package/dist/types/reconnection-manager/index.d.ts +10 -0
  135. package/dist/types/roap/index.d.ts +2 -1
  136. package/dist/types/roap/request.d.ts +2 -1
  137. package/dist/types/roap/turnDiscovery.d.ts +21 -4
  138. package/dist/types/rtcMetrics/index.d.ts +15 -1
  139. package/dist/types/statsAnalyzer/index.d.ts +28 -11
  140. package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
  141. package/dist/types/webinar/collection.d.ts +16 -0
  142. package/dist/types/webinar/index.d.ts +5 -0
  143. package/dist/webinar/collection.js +44 -0
  144. package/dist/webinar/collection.js.map +1 -0
  145. package/dist/webinar/index.js +69 -0
  146. package/dist/webinar/index.js.map +1 -0
  147. package/package.json +3 -2
  148. package/src/common/errors/no-meeting-info.ts +24 -0
  149. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  150. package/src/common/errors/webex-errors.ts +19 -2
  151. package/src/common/logs/request.ts +5 -1
  152. package/src/config.ts +1 -1
  153. package/src/constants.ts +71 -6
  154. package/src/index.ts +5 -0
  155. package/src/interceptors/index.ts +3 -0
  156. package/src/interceptors/locusRetry.ts +67 -0
  157. package/src/interpretation/index.ts +18 -1
  158. package/src/locus-info/index.ts +52 -16
  159. package/src/locus-info/mediaSharesUtils.ts +16 -0
  160. package/src/locus-info/parser.ts +47 -21
  161. package/src/media/index.ts +8 -6
  162. package/src/media/properties.ts +17 -2
  163. package/src/mediaQualityMetrics/config.ts +103 -238
  164. package/src/meeting/in-meeting-actions.ts +8 -0
  165. package/src/meeting/index.ts +1510 -529
  166. package/src/meeting/muteState.ts +34 -20
  167. package/src/meeting/request.ts +19 -1
  168. package/src/meeting/util.ts +97 -0
  169. package/src/meeting-info/index.ts +47 -20
  170. package/src/meeting-info/meeting-info-v2.ts +27 -5
  171. package/src/meeting-info/utilv2.ts +1 -1
  172. package/src/meetings/collection.ts +13 -0
  173. package/src/meetings/index.ts +112 -31
  174. package/src/meetings/util.ts +2 -8
  175. package/src/member/index.ts +9 -0
  176. package/src/member/util.ts +14 -0
  177. package/src/members/index.ts +29 -2
  178. package/src/members/types.ts +1 -0
  179. package/src/members/util.ts +15 -1
  180. package/src/metrics/constants.ts +14 -0
  181. package/src/multistream/mediaRequestManager.ts +4 -1
  182. package/src/multistream/remoteMediaGroup.ts +19 -0
  183. package/src/multistream/remoteMediaManager.ts +141 -18
  184. package/src/multistream/sendSlotManager.ts +29 -0
  185. package/src/reachability/clusterReachability.ts +320 -0
  186. package/src/reachability/index.ts +221 -382
  187. package/src/reachability/request.ts +1 -1
  188. package/src/reachability/util.ts +24 -0
  189. package/src/reconnection-manager/index.ts +87 -83
  190. package/src/roap/index.ts +60 -24
  191. package/src/roap/request.ts +3 -16
  192. package/src/roap/turnDiscovery.ts +112 -39
  193. package/src/rtcMetrics/index.ts +71 -5
  194. package/src/statsAnalyzer/index.ts +430 -427
  195. package/src/statsAnalyzer/mqaUtil.ts +317 -168
  196. package/src/webinar/collection.ts +31 -0
  197. package/src/webinar/index.ts +62 -0
  198. package/test/integration/spec/converged-space-meetings.js +7 -7
  199. package/test/integration/spec/journey.js +86 -104
  200. package/test/integration/spec/space-meeting.js +9 -9
  201. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  202. package/test/unit/spec/interpretation/index.ts +36 -3
  203. package/test/unit/spec/locus-info/index.js +205 -12
  204. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  205. package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
  206. package/test/unit/spec/locus-info/parser.js +54 -13
  207. package/test/unit/spec/media/index.ts +20 -4
  208. package/test/unit/spec/media/properties.ts +2 -2
  209. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  210. package/test/unit/spec/meeting/index.js +4027 -1075
  211. package/test/unit/spec/meeting/muteState.js +219 -67
  212. package/test/unit/spec/meeting/request.js +63 -12
  213. package/test/unit/spec/meeting/utils.js +93 -0
  214. package/test/unit/spec/meeting-info/index.js +180 -61
  215. package/test/unit/spec/meeting-info/meetinginfov2.js +196 -53
  216. package/test/unit/spec/meetings/collection.js +12 -0
  217. package/test/unit/spec/meetings/index.js +619 -206
  218. package/test/unit/spec/meetings/utils.js +35 -12
  219. package/test/unit/spec/member/index.js +8 -7
  220. package/test/unit/spec/member/util.js +32 -0
  221. package/test/unit/spec/members/index.js +130 -17
  222. package/test/unit/spec/members/utils.js +26 -0
  223. package/test/unit/spec/multistream/mediaRequestManager.ts +20 -2
  224. package/test/unit/spec/multistream/remoteMediaGroup.ts +80 -1
  225. package/test/unit/spec/multistream/remoteMediaManager.ts +210 -3
  226. package/test/unit/spec/multistream/sendSlotManager.ts +50 -18
  227. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  228. package/test/unit/spec/reachability/index.ts +505 -135
  229. package/test/unit/spec/reachability/util.ts +40 -0
  230. package/test/unit/spec/reconnection-manager/index.js +74 -17
  231. package/test/unit/spec/roap/index.ts +181 -61
  232. package/test/unit/spec/roap/request.ts +27 -3
  233. package/test/unit/spec/roap/turnDiscovery.ts +362 -101
  234. package/test/unit/spec/rtcMetrics/index.ts +57 -3
  235. package/test/unit/spec/stats-analyzer/index.js +1225 -12
  236. package/test/unit/spec/webinar/collection.ts +13 -0
  237. package/test/unit/spec/webinar/index.ts +60 -0
  238. package/test/utils/integrationTestUtils.js +4 -4
  239. 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 _lastMqaDataSent$medi, _lastMqaDataSent$medi2, _lastMqaDataSent$medi3, _lastMqaDataSent$medi4, _lastMqaDataSent$medi5, _lastMqaDataSent$medi6, _lastMqaDataSent$medi7, _lastMqaDataSent$medi8;
31
+ var _statsResults$Object$;
14
32
  var audioReceiver = _ref.audioReceiver,
15
33
  statsResults = _ref.statsResults,
16
34
  lastMqaDataSent = _ref.lastMqaDataSent,
17
- mediaType = _ref.mediaType;
35
+ baseMediaType = _ref.baseMediaType;
18
36
  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.transportType = statsResults.connectionType.remote.transport[0];
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 = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
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
- audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;
39
- audioReceiver.common.mediaHopByHopLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
40
- audioReceiver.common.rtpHopByHopLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
41
- audioReceiver.streams[0].common.maxRtpJitter =
42
- // @ts-ignore
43
- (0, _max2.default)(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;
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 getAudioSenderMqa = function getAudioSenderMqa(_ref2) {
59
- var _lastMqaDataSent$medi9, _lastMqaDataSent$medi10, _lastMqaDataSent$medi11, _lastMqaDataSent$medi12, _lastMqaDataSent$medi13;
60
- var audioSender = _ref2.audioSender,
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.SEND_DIRECTION;
65
- var lastPacketsSent = ((_lastMqaDataSent$medi9 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi9 === void 0 ? void 0 : _lastMqaDataSent$medi9[sendrecvType].totalPacketsSent) || 0;
66
- var lastPacketsLost = ((_lastMqaDataSent$medi10 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi10 === void 0 ? void 0 : _lastMqaDataSent$medi10[sendrecvType].totalPacketsLostOnReceiver) || 0;
67
- var lastBytesSent = ((_lastMqaDataSent$medi11 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi11 === void 0 ? void 0 : _lastMqaDataSent$medi11[sendrecvType].totalBytesSent) || 0;
68
- var lastFramesEncoded = ((_lastMqaDataSent$medi12 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi12 === void 0 ? void 0 : _lastMqaDataSent$medi12[sendrecvType].totalKeyFramesEncoded) || 0;
69
- var lastFirCount = ((_lastMqaDataSent$medi13 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi13 === void 0 ? void 0 : _lastMqaDataSent$medi13[sendrecvType].totalFirCount) || 0;
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 && !audioSender.streams[0].common.csi.includes(csi)) {
72
- audioSender.streams[0].common.csi.push(csi);
88
+ if (csi && !audioReceiverStream.common.csi.includes(csi)) {
89
+ audioReceiverStream.common.csi.push(csi);
73
90
  }
74
- audioSender.common.common.direction = statsResults[mediaType].direction;
75
- audioSender.common.transportType = statsResults.connectionType.local.transport[0];
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].meanRemoteJitter) * 1000 || 0;
79
- audioSender.common.meanRemoteJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
80
- audioSender.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
81
- audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;
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[mediaType][sendrecvType].availableOutgoingBitrate || 0;
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 totalpacketsLostForaMin = statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;
87
- audioSender.common.remoteLossRate = totalpacketsLostForaMin > 0 ? totalpacketsLostForaMin * 100 / audioSender.common.rtpPackets : 0; // This is the packets sent with in last min || 0;
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
- // @ts-ignore
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[mediaType][sendrecvType].totalBytesSent - lastBytesSent;
97
- audioSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
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 getVideoReceiverMqa = function getVideoReceiverMqa(_ref3) {
104
- var _lastMqaDataSent$medi14, _lastMqaDataSent$medi15, _lastMqaDataSent$medi16, _lastMqaDataSent$medi17, _lastMqaDataSent$medi18, _lastMqaDataSent$medi19, _lastMqaDataSent$medi20, _lastMqaDataSent$medi21;
105
- var videoReceiver = _ref3.videoReceiver,
106
- statsResults = _ref3.statsResults,
107
- lastMqaDataSent = _ref3.lastMqaDataSent,
108
- mediaType = _ref3.mediaType;
109
- var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
110
- var lastPacketsReceived = ((_lastMqaDataSent$medi14 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi14 === void 0 ? void 0 : _lastMqaDataSent$medi14[sendrecvType].totalPacketsReceived) || 0;
111
- var lastPacketsLost = ((_lastMqaDataSent$medi15 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi15 === void 0 ? void 0 : _lastMqaDataSent$medi15[sendrecvType].totalPacketsLost) || 0;
112
- var lastBytesReceived = ((_lastMqaDataSent$medi16 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi16 === void 0 ? void 0 : _lastMqaDataSent$medi16[sendrecvType].totalBytesReceived) || 0;
113
- var lastFramesReceived = ((_lastMqaDataSent$medi17 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi17 === void 0 ? void 0 : _lastMqaDataSent$medi17[sendrecvType].framesReceived) || 0;
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 && !videoReceiver.streams[0].common.csi.includes(csi)) {
120
- videoReceiver.streams[0].common.csi.push(csi);
172
+ if (csi && !audioSenderStream.common.csi.includes(csi)) {
173
+ audioSenderStream.common.csi.push(csi);
121
174
  }
122
- videoReceiver.common.common.direction = statsResults[mediaType].direction;
123
- videoReceiver.common.transportType = statsResults.connectionType.remote.transport[0];
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 = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
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
- // Hope by hop are numbers and not percentage so we compare on what we sent the last min
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
- videoReceiver.common.mediaHopByHopLost = totalPacketLoss;
132
- videoReceiver.common.rtpHopByHopLost = totalPacketLoss;
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.maxRemoteJitter =
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 = statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;
148
- videoReceiver.streams[0].common.receivedBitrate = totalBytesReceivedInaMin ? totalBytesReceivedInaMin * 8 / 60 : 0;
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 getVideoSenderMqa = function getVideoSenderMqa(_ref4) {
165
- var _lastMqaDataSent$medi22, _lastMqaDataSent$medi23, _lastMqaDataSent$medi24, _lastMqaDataSent$medi25, _lastMqaDataSent$medi26, _lastMqaDataSent$medi27;
166
- var videoSender = _ref4.videoSender,
167
- statsResults = _ref4.statsResults,
168
- lastMqaDataSent = _ref4.lastMqaDataSent,
169
- mediaType = _ref4.mediaType;
170
- var sendrecvType = _constants.STATS.SEND_DIRECTION;
171
- var lastPacketsSent = ((_lastMqaDataSent$medi22 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi22 === void 0 ? void 0 : _lastMqaDataSent$medi22[sendrecvType].totalPacketsSent) || 0;
172
- var lastPacketsLost = ((_lastMqaDataSent$medi23 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi23 === void 0 ? void 0 : _lastMqaDataSent$medi23[sendrecvType].totalPacketsLostOnReceiver) || 0;
173
- var lastBytesSent = ((_lastMqaDataSent$medi24 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi24 === void 0 ? void 0 : _lastMqaDataSent$medi24[sendrecvType].totalBytesSent) || 0;
174
- var lastKeyFramesEncoded = ((_lastMqaDataSent$medi25 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi25 === void 0 ? void 0 : _lastMqaDataSent$medi25[sendrecvType].totalKeyFramesEncoded) || 0;
175
- var lastFirCount = ((_lastMqaDataSent$medi26 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi26 === void 0 ? void 0 : _lastMqaDataSent$medi26[sendrecvType].totalFirCount) || 0;
176
- var lastFramesSent = ((_lastMqaDataSent$medi27 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi27 === void 0 ? void 0 : _lastMqaDataSent$medi27[sendrecvType].framesSent) || 0;
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 && !videoSender.streams[0].common.csi.includes(csi)) {
179
- videoSender.streams[0].common.csi.push(csi);
246
+ if (csi && !videoReceiverStream.common.csi.includes(csi)) {
247
+ videoReceiverStream.common.csi.push(csi);
180
248
  }
181
- videoSender.common.common.direction = statsResults[mediaType].direction;
182
- videoSender.common.transportType = statsResults.connectionType.local.transport[0];
249
+ videoReceiverStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
250
+ var totalPacketLoss = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
183
251
 
184
- // @ts-ignore
185
- videoSender.common.maxRemoteJitter =
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
- videoSender.common.meanRemoteJitter = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;
189
- videoSender.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
190
- videoSender.common.availableBitrate = statsResults[mediaType][sendrecvType].availableOutgoingBitrate || 0;
191
- // Calculate based on how much packets lost of received compated to how to the client sent
192
-
193
- var totalpacketsLostForaMin = statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;
194
- videoSender.common.remoteLossRate = totalpacketsLostForaMin > 0 ? totalpacketsLostForaMin * 100 / (videoSender.common.rtpPackets + totalpacketsLostForaMin) : 0; // This is the packets sent with in last min || 0;
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)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
199
- videoSender.common.meanRoundTripTime = (0, _mean2.default)(statsResults[mediaType][sendrecvType].meanRoundTripTime) * 1000 || 0;
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
- videoSender.streams[0].common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
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
- videoSender.streams[0].common.transmittedBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
206
- videoSender.common.rtpBitrate = videoSender.streams[0].common.transmittedBitrate;
207
- videoSender.streams[0].transmittedKeyFrames = statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastKeyFramesEncoded || 0;
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.resolutions[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);
212
- videoSender.streams[0].common.transmittedFrameRate = totalFrameSentInaMin ? totalFrameSentInaMin * 100 / 60 : 0;
213
- videoSender.streams[0].transmittedHeight = statsResults.resolutions[mediaType][sendrecvType].height || 0;
214
- videoSender.streams[0].transmittedWidth = statsResults.resolutions[mediaType][sendrecvType].width || 0;
215
- videoSender.streams[0].transmittedFrameSize = videoSender.streams[0].transmittedHeight * videoSender.streams[0].transmittedWidth / 256;
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.getVideoSenderMqa = getVideoSenderMqa;
357
+ exports.getVideoSenderStreamMqa = getVideoSenderStreamMqa;
218
358
  //# sourceMappingURL=mqaUtil.js.map