@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.21

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 (365) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +116 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/index.js +226 -0
  8. package/dist/breakouts/index.js.map +1 -0
  9. package/dist/common/browser-detection.js +1 -20
  10. package/dist/common/browser-detection.js.map +1 -1
  11. package/dist/common/collection.js +5 -20
  12. package/dist/common/collection.js.map +1 -1
  13. package/dist/common/config.js +0 -7
  14. package/dist/common/config.js.map +1 -1
  15. package/dist/common/errors/captcha-error.js +10 -24
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.js +11 -24
  18. package/dist/common/errors/intent-to-join.js.map +1 -1
  19. package/dist/common/errors/join-meeting.js +12 -25
  20. package/dist/common/errors/join-meeting.js.map +1 -1
  21. package/dist/common/errors/media.js +10 -24
  22. package/dist/common/errors/media.js.map +1 -1
  23. package/dist/common/errors/parameter.js +5 -33
  24. package/dist/common/errors/parameter.js.map +1 -1
  25. package/dist/common/errors/password-error.js +10 -24
  26. package/dist/common/errors/password-error.js.map +1 -1
  27. package/dist/common/errors/permission.js +9 -23
  28. package/dist/common/errors/permission.js.map +1 -1
  29. package/dist/common/errors/reconnection-in-progress.js +0 -17
  30. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  31. package/dist/common/errors/reconnection.js +10 -24
  32. package/dist/common/errors/reconnection.js.map +1 -1
  33. package/dist/common/errors/stats.js +10 -24
  34. package/dist/common/errors/stats.js.map +1 -1
  35. package/dist/common/errors/webex-errors.js +6 -41
  36. package/dist/common/errors/webex-errors.js.map +1 -1
  37. package/dist/common/errors/webex-meetings-error.js +5 -25
  38. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  39. package/dist/common/events/events-scope.js +0 -22
  40. package/dist/common/events/events-scope.js.map +1 -1
  41. package/dist/common/events/events.js +0 -23
  42. package/dist/common/events/events.js.map +1 -1
  43. package/dist/common/events/trigger-proxy.js +0 -12
  44. package/dist/common/events/trigger-proxy.js.map +1 -1
  45. package/dist/common/events/util.js +0 -15
  46. package/dist/common/events/util.js.map +1 -1
  47. package/dist/common/logs/logger-config.js +0 -4
  48. package/dist/common/logs/logger-config.js.map +1 -1
  49. package/dist/common/logs/logger-proxy.js +1 -8
  50. package/dist/common/logs/logger-proxy.js.map +1 -1
  51. package/dist/common/logs/request.js +37 -60
  52. package/dist/common/logs/request.js.map +1 -1
  53. package/dist/common/queue.js +4 -14
  54. package/dist/common/queue.js.map +1 -1
  55. package/dist/config.js +6 -6
  56. package/dist/config.js.map +1 -1
  57. package/dist/constants.js +88 -46
  58. package/dist/constants.js.map +1 -1
  59. package/dist/index.js +4 -18
  60. package/dist/index.js.map +1 -1
  61. package/dist/locus-info/controlsUtils.js +12 -29
  62. package/dist/locus-info/controlsUtils.js.map +1 -1
  63. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  64. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  65. package/dist/locus-info/fullState.js +0 -15
  66. package/dist/locus-info/fullState.js.map +1 -1
  67. package/dist/locus-info/hostUtils.js +4 -12
  68. package/dist/locus-info/hostUtils.js.map +1 -1
  69. package/dist/locus-info/index.js +184 -190
  70. package/dist/locus-info/index.js.map +1 -1
  71. package/dist/locus-info/infoUtils.js +3 -37
  72. package/dist/locus-info/infoUtils.js.map +1 -1
  73. package/dist/locus-info/mediaSharesUtils.js +12 -38
  74. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  75. package/dist/locus-info/parser.js +92 -118
  76. package/dist/locus-info/parser.js.map +1 -1
  77. package/dist/locus-info/selfUtils.js +34 -91
  78. package/dist/locus-info/selfUtils.js.map +1 -1
  79. package/dist/media/index.js +67 -111
  80. package/dist/media/index.js.map +1 -1
  81. package/dist/media/properties.js +80 -114
  82. package/dist/media/properties.js.map +1 -1
  83. package/dist/media/util.js +2 -9
  84. package/dist/media/util.js.map +1 -1
  85. package/dist/mediaQualityMetrics/config.js +10 -12
  86. package/dist/mediaQualityMetrics/config.js.map +1 -1
  87. package/dist/meeting/effectsState.js +125 -190
  88. package/dist/meeting/effectsState.js.map +1 -1
  89. package/dist/meeting/in-meeting-actions.js +5 -14
  90. package/dist/meeting/in-meeting-actions.js.map +1 -1
  91. package/dist/meeting/index.js +1692 -1925
  92. package/dist/meeting/index.js.map +1 -1
  93. package/dist/meeting/muteState.js +36 -77
  94. package/dist/meeting/muteState.js.map +1 -1
  95. package/dist/meeting/request.js +224 -230
  96. package/dist/meeting/request.js.map +1 -1
  97. package/dist/meeting/request.type.js +7 -0
  98. package/dist/meeting/request.type.js.map +1 -0
  99. package/dist/meeting/state.js +21 -31
  100. package/dist/meeting/state.js.map +1 -1
  101. package/dist/meeting/util.js +43 -215
  102. package/dist/meeting/util.js.map +1 -1
  103. package/dist/meeting-info/collection.js +6 -25
  104. package/dist/meeting-info/collection.js.map +1 -1
  105. package/dist/meeting-info/index.js +14 -32
  106. package/dist/meeting-info/index.js.map +1 -1
  107. package/dist/meeting-info/meeting-info-v2.js +193 -268
  108. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  109. package/dist/meeting-info/request.js +3 -15
  110. package/dist/meeting-info/request.js.map +1 -1
  111. package/dist/meeting-info/util.js +98 -183
  112. package/dist/meeting-info/util.js.map +1 -1
  113. package/dist/meeting-info/utilv2.js +137 -228
  114. package/dist/meeting-info/utilv2.js.map +1 -1
  115. package/dist/meetings/collection.js +5 -20
  116. package/dist/meetings/collection.js.map +1 -1
  117. package/dist/meetings/index.js +490 -560
  118. package/dist/meetings/index.js.map +1 -1
  119. package/dist/meetings/request.js +24 -41
  120. package/dist/meetings/request.js.map +1 -1
  121. package/dist/meetings/util.js +99 -155
  122. package/dist/meetings/util.js.map +1 -1
  123. package/dist/member/index.js +78 -86
  124. package/dist/member/index.js.map +1 -1
  125. package/dist/member/util.js +31 -68
  126. package/dist/member/util.js.map +1 -1
  127. package/dist/members/collection.js +3 -12
  128. package/dist/members/collection.js.map +1 -1
  129. package/dist/members/index.js +93 -200
  130. package/dist/members/index.js.map +1 -1
  131. package/dist/members/request.js +16 -39
  132. package/dist/members/request.js.map +1 -1
  133. package/dist/members/util.js +9 -38
  134. package/dist/members/util.js.map +1 -1
  135. package/dist/metrics/config.js +0 -2
  136. package/dist/metrics/config.js.map +1 -1
  137. package/dist/metrics/constants.js +1 -2
  138. package/dist/metrics/constants.js.map +1 -1
  139. package/dist/metrics/index.js +55 -135
  140. package/dist/metrics/index.js.map +1 -1
  141. package/dist/multistream/mediaRequestManager.js +57 -32
  142. package/dist/multistream/mediaRequestManager.js.map +1 -1
  143. package/dist/multistream/multistreamMedia.js +15 -21
  144. package/dist/multistream/multistreamMedia.js.map +1 -1
  145. package/dist/multistream/receiveSlot.js +10 -50
  146. package/dist/multistream/receiveSlot.js.map +1 -1
  147. package/dist/multistream/receiveSlotManager.js +45 -82
  148. package/dist/multistream/receiveSlotManager.js.map +1 -1
  149. package/dist/multistream/remoteMedia.js +18 -58
  150. package/dist/multistream/remoteMedia.js.map +1 -1
  151. package/dist/multistream/remoteMediaGroup.js +6 -40
  152. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  153. package/dist/multistream/remoteMediaManager.js +362 -416
  154. package/dist/multistream/remoteMediaManager.js.map +1 -1
  155. package/dist/networkQualityMonitor/index.js +36 -57
  156. package/dist/networkQualityMonitor/index.js.map +1 -1
  157. package/dist/personal-meeting-room/index.js +21 -45
  158. package/dist/personal-meeting-room/index.js.map +1 -1
  159. package/dist/personal-meeting-room/request.js +1 -31
  160. package/dist/personal-meeting-room/request.js.map +1 -1
  161. package/dist/personal-meeting-room/util.js +0 -13
  162. package/dist/personal-meeting-room/util.js.map +1 -1
  163. package/dist/reachability/index.js +138 -182
  164. package/dist/reachability/index.js.map +1 -1
  165. package/dist/reachability/request.js +3 -18
  166. package/dist/reachability/request.js.map +1 -1
  167. package/dist/reactions/constants.js +13 -0
  168. package/dist/reactions/constants.js.map +1 -0
  169. package/dist/reactions/reactions.js +109 -0
  170. package/dist/reactions/reactions.js.map +1 -0
  171. package/dist/reactions/reactions.type.js +36 -0
  172. package/dist/reactions/reactions.type.js.map +1 -0
  173. package/dist/reconnection-manager/index.js +322 -455
  174. package/dist/reconnection-manager/index.js.map +1 -1
  175. package/dist/recording-controller/enums.js +17 -0
  176. package/dist/recording-controller/enums.js.map +1 -0
  177. package/dist/recording-controller/index.js +343 -0
  178. package/dist/recording-controller/index.js.map +1 -0
  179. package/dist/recording-controller/util.js +63 -0
  180. package/dist/recording-controller/util.js.map +1 -0
  181. package/dist/roap/index.js +39 -64
  182. package/dist/roap/index.js.map +1 -1
  183. package/dist/roap/request.js +94 -113
  184. package/dist/roap/request.js.map +1 -1
  185. package/dist/roap/turnDiscovery.js +85 -94
  186. package/dist/roap/turnDiscovery.js.map +1 -1
  187. package/dist/statsAnalyzer/global.js +0 -2
  188. package/dist/statsAnalyzer/global.js.map +1 -1
  189. package/dist/statsAnalyzer/index.js +85 -175
  190. package/dist/statsAnalyzer/index.js.map +1 -1
  191. package/dist/statsAnalyzer/mqaUtil.js +72 -53
  192. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  193. package/dist/transcription/index.js +22 -47
  194. package/dist/transcription/index.js.map +1 -1
  195. package/internal-README.md +7 -6
  196. package/package.json +25 -20
  197. package/src/breakouts/README.md +190 -0
  198. package/src/breakouts/breakout.ts +110 -0
  199. package/src/breakouts/collection.ts +19 -0
  200. package/src/breakouts/index.ts +225 -0
  201. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  202. package/src/common/collection.ts +9 -7
  203. package/src/common/{config.js → config.ts} +1 -1
  204. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  205. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  206. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  207. package/src/common/errors/{media.js → media.ts} +11 -7
  208. package/src/common/errors/parameter.ts +11 -7
  209. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  210. package/src/common/errors/{permission.js → permission.ts} +10 -6
  211. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  212. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  213. package/src/common/errors/{stats.js → stats.ts} +11 -7
  214. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  215. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  216. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  217. package/src/common/events/{events.js → events.ts} +5 -1
  218. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  219. package/src/common/events/{util.js → util.ts} +2 -3
  220. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  221. package/src/common/logs/logger-proxy.ts +44 -0
  222. package/src/common/logs/{request.js → request.ts} +22 -9
  223. package/src/common/queue.ts +1 -2
  224. package/src/{config.js → config.ts} +17 -12
  225. package/src/constants.ts +40 -1
  226. package/src/index.js +2 -1
  227. package/src/locus-info/controlsUtils.ts +114 -0
  228. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  229. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  230. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  231. package/src/locus-info/{index.js → index.ts} +148 -64
  232. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  233. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  234. package/src/locus-info/{parser.js → parser.ts} +67 -79
  235. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  236. package/src/media/{index.js → index.ts} +181 -131
  237. package/src/media/{properties.js → properties.ts} +47 -28
  238. package/src/media/{util.js → util.ts} +2 -2
  239. package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
  240. package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
  241. package/src/meeting/in-meeting-actions.ts +15 -3
  242. package/src/meeting/{index.js → index.ts} +2263 -1427
  243. package/src/meeting/{muteState.js → muteState.ts} +78 -42
  244. package/src/meeting/{request.js → request.ts} +292 -142
  245. package/src/meeting/request.type.ts +13 -0
  246. package/src/meeting/{state.js → state.ts} +50 -35
  247. package/src/meeting/{util.js → util.ts} +112 -115
  248. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  249. package/src/meeting-info/{index.js → index.ts} +42 -36
  250. package/src/meeting-info/meeting-info-v2.ts +273 -0
  251. package/src/meeting-info/{request.js → request.ts} +14 -4
  252. package/src/meeting-info/{util.js → util.ts} +60 -51
  253. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  254. package/src/meetings/{collection.js → collection.ts} +6 -3
  255. package/src/meetings/index.ts +1159 -0
  256. package/src/meetings/{request.js → request.ts} +32 -25
  257. package/src/meetings/{util.js → util.ts} +34 -32
  258. package/src/member/{index.js → index.ts} +102 -56
  259. package/src/member/{util.js → util.ts} +52 -25
  260. package/src/members/{collection.js → collection.ts} +2 -2
  261. package/src/members/{index.js → index.ts} +219 -142
  262. package/src/members/{request.js → request.ts} +60 -16
  263. package/src/members/{util.js → util.ts} +50 -48
  264. package/src/metrics/{config.js → config.ts} +254 -83
  265. package/src/metrics/{constants.js → constants.ts} +0 -2
  266. package/src/metrics/{index.js → index.ts} +106 -74
  267. package/src/multistream/mediaRequestManager.ts +81 -15
  268. package/src/multistream/multistreamMedia.ts +5 -0
  269. package/src/multistream/receiveSlot.ts +18 -12
  270. package/src/multistream/receiveSlotManager.ts +23 -21
  271. package/src/multistream/remoteMedia.ts +15 -5
  272. package/src/multistream/remoteMediaGroup.ts +4 -3
  273. package/src/multistream/remoteMediaManager.ts +153 -37
  274. package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
  275. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  276. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  277. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  278. package/src/reachability/{index.js → index.ts} +99 -83
  279. package/src/reachability/request.ts +39 -33
  280. package/src/reactions/constants.ts +4 -0
  281. package/src/reactions/reactions.ts +104 -0
  282. package/src/reactions/reactions.type.ts +62 -0
  283. package/src/reconnection-manager/{index.js → index.ts} +195 -102
  284. package/src/recording-controller/enums.ts +8 -0
  285. package/src/recording-controller/index.ts +315 -0
  286. package/src/recording-controller/util.ts +58 -0
  287. package/src/roap/{index.js → index.ts} +73 -56
  288. package/src/roap/request.ts +157 -0
  289. package/src/roap/turnDiscovery.ts +77 -37
  290. package/src/statsAnalyzer/{global.js → global.ts} +30 -33
  291. package/src/statsAnalyzer/{index.js → index.ts} +468 -192
  292. package/src/statsAnalyzer/mqaUtil.ts +290 -0
  293. package/src/transcription/{index.js → index.ts} +46 -39
  294. package/test/integration/spec/journey.js +664 -463
  295. package/test/integration/spec/space-meeting.js +320 -206
  296. package/test/integration/spec/transcription.js +7 -8
  297. package/test/unit/spec/breakouts/breakout.ts +119 -0
  298. package/test/unit/spec/breakouts/collection.ts +15 -0
  299. package/test/unit/spec/breakouts/index.ts +293 -0
  300. package/test/unit/spec/common/browser-detection.js +9 -28
  301. package/test/unit/spec/fixture/locus.js +92 -90
  302. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  303. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  304. package/test/unit/spec/locus-info/index.js +104 -2
  305. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  306. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  307. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  308. package/test/unit/spec/locus-info/parser.js +3 -9
  309. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  310. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  311. package/test/unit/spec/media/index.ts +31 -47
  312. package/test/unit/spec/media/properties.ts +9 -9
  313. package/test/unit/spec/meeting/effectsState.js +39 -45
  314. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
  315. package/test/unit/spec/meeting/index.js +2017 -742
  316. package/test/unit/spec/meeting/muteState.js +42 -33
  317. package/test/unit/spec/meeting/request.js +115 -44
  318. package/test/unit/spec/meeting/utils.js +104 -171
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  320. package/test/unit/spec/meeting-info/request.js +7 -9
  321. package/test/unit/spec/meeting-info/util.js +11 -12
  322. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  323. package/test/unit/spec/meetings/collection.js +1 -1
  324. package/test/unit/spec/meetings/index.js +439 -257
  325. package/test/unit/spec/meetings/utils.js +14 -12
  326. package/test/unit/spec/member/index.js +0 -1
  327. package/test/unit/spec/member/util.js +31 -7
  328. package/test/unit/spec/members/index.js +104 -54
  329. package/test/unit/spec/members/request.js +29 -20
  330. package/test/unit/spec/members/utils.js +8 -5
  331. package/test/unit/spec/metrics/index.js +16 -21
  332. package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
  333. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  334. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  335. package/test/unit/spec/multistream/remoteMedia.ts +10 -2
  336. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  337. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  338. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  339. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  340. package/test/unit/spec/reachability/index.ts +58 -26
  341. package/test/unit/spec/reconnection-manager/index.js +102 -9
  342. package/test/unit/spec/recording-controller/index.js +231 -0
  343. package/test/unit/spec/recording-controller/util.js +102 -0
  344. package/test/unit/spec/roap/index.ts +2 -1
  345. package/test/unit/spec/roap/request.ts +114 -0
  346. package/test/unit/spec/roap/turnDiscovery.ts +64 -45
  347. package/test/unit/spec/stats-analyzer/index.js +27 -22
  348. package/test/utils/cmr.js +44 -42
  349. package/test/utils/testUtils.js +83 -74
  350. package/test/utils/webex-config.js +18 -18
  351. package/test/utils/webex-test-users.js +54 -50
  352. package/tsconfig.json +6 -0
  353. package/dist/media/internal-media-core-wrapper.js +0 -22
  354. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  355. package/dist/peer-connection-manager/util.js +0 -124
  356. package/dist/peer-connection-manager/util.js.map +0 -1
  357. package/src/common/logs/logger-proxy.js +0 -33
  358. package/src/locus-info/controlsUtils.js +0 -102
  359. package/src/media/internal-media-core-wrapper.ts +0 -9
  360. package/src/meeting-info/meeting-info-v2.js +0 -255
  361. package/src/meetings/index.js +0 -1015
  362. package/src/peer-connection-manager/util.ts +0 -117
  363. package/src/roap/request.js +0 -127
  364. package/src/statsAnalyzer/mqaUtil.js +0 -173
  365. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
@@ -1,55 +1,31 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
4
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
5
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
6
  _Object$defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
-
13
9
  exports.StatsAnalyzer = exports.EVENTS = void 0;
14
-
15
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
16
-
17
11
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
18
-
19
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
20
-
21
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
22
-
23
14
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
24
-
25
15
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
26
-
27
16
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
28
-
29
17
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
30
-
31
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
32
-
33
19
  var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
34
-
35
20
  var _internalMediaCore = require("@webex/internal-media-core");
36
-
37
21
  var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
38
-
39
22
  var _constants = require("../constants");
40
-
41
23
  var _config = _interopRequireDefault(require("../mediaQualityMetrics/config"));
42
-
43
24
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
44
-
45
25
  var _global = _interopRequireDefault(require("./global"));
46
-
47
26
  var _mqaUtil = require("./mqaUtil");
48
-
49
27
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
50
-
51
28
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
52
-
53
29
  var EVENTS = {
54
30
  MEDIA_QUALITY: 'MEDIA_QUALITY',
55
31
  LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
@@ -57,6 +33,7 @@ var EVENTS = {
57
33
  REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
58
34
  REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED'
59
35
  };
36
+
60
37
  /**
61
38
  * Stats Analyzer class that will emit events based on detected quality
62
39
  *
@@ -64,14 +41,10 @@ var EVENTS = {
64
41
  * @class StatsAnalyzer
65
42
  * @extends {EventsScope}
66
43
  */
67
-
68
44
  exports.EVENTS = EVENTS;
69
-
70
45
  var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
71
46
  (0, _inherits2.default)(StatsAnalyzer, _EventsScope);
72
-
73
47
  var _super = _createSuper(StatsAnalyzer);
74
-
75
48
  /**
76
49
  * Creates a new instance of StatsAnalyzer
77
50
  * @constructor
@@ -82,36 +55,46 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
82
55
  */
83
56
  function StatsAnalyzer(config) {
84
57
  var _this;
85
-
86
58
  var networkQualityMonitor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
87
59
  var statsResults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _global.default;
88
60
  (0, _classCallCheck2.default)(this, StatsAnalyzer);
89
61
  _this = _super.call(this);
62
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "config", void 0);
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "correlationId", void 0);
64
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lastEmittedStartStopEvent", void 0);
65
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lastMqaDataSent", void 0);
66
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lastStatsResults", void 0);
67
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "localMQEStats", void 0);
68
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingMediaStatus", void 0);
69
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mqaInterval", void 0);
70
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mqaSentCount", void 0);
71
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "networkQualityMonitor", void 0);
72
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaConnection", void 0);
73
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsInterval", void 0);
74
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsResults", void 0);
75
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsStarted", void 0);
90
76
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
91
77
  if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
92
78
  throw new Error("Unsupported mediaType: ".concat(mediaType));
93
- } // eslint-disable-next-line no-param-reassign
94
-
95
-
96
- if (previousValue === undefined) previousValue = 0; // eslint-disable-next-line no-param-reassign
79
+ }
97
80
 
81
+ // eslint-disable-next-line no-param-reassign
82
+ if (previousValue === undefined) previousValue = 0;
83
+ // eslint-disable-next-line no-param-reassign
98
84
  if (currentValue === undefined) currentValue = 0;
99
85
  var lastEmittedEvent = isLocal ? _this.lastEmittedStartStopEvent[mediaType].local : _this.lastEmittedStartStopEvent[mediaType].remote;
100
86
  var newEvent;
101
-
102
87
  if (currentValue - previousValue > 0) {
103
88
  newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;
104
89
  } else if (currentValue === previousValue && currentValue > 0) {
105
90
  newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;
106
91
  }
107
-
108
92
  if (newEvent && lastEmittedEvent !== newEvent) {
109
93
  if (isLocal) {
110
94
  _this.lastEmittedStartStopEvent[mediaType].local = newEvent;
111
95
  } else {
112
96
  _this.lastEmittedStartStopEvent[mediaType].remote = newEvent;
113
97
  }
114
-
115
98
  _this.emit({
116
99
  file: 'statsAnalyzer/index',
117
100
  function: 'compareLastStatsResult'
@@ -124,7 +107,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
124
107
  if (!result || !result.id) {
125
108
  return;
126
109
  }
127
-
128
110
  var RemoteCandidateType = {};
129
111
  var RemoteTransport = {};
130
112
  var RemoteIpAddress = {};
@@ -132,31 +114,24 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
132
114
  if (!result.id) return;
133
115
  var sendRecvType = isSender ? _constants.STATS.SEND_DIRECTION : _constants.STATS.RECEIVE_DIRECTION;
134
116
  var ipType = isRemote ? _constants.STATS.REMOTE : _constants.STATS.LOCAL;
135
-
136
117
  if (!RemoteCandidateType[result.id]) {
137
118
  RemoteCandidateType[result.id] = [];
138
119
  }
139
-
140
120
  if (!RemoteTransport[result.id]) {
141
121
  RemoteTransport[result.id] = [];
142
122
  }
143
-
144
123
  if (!RemoteIpAddress[result.id]) {
145
124
  RemoteIpAddress[result.id] = [];
146
125
  }
147
-
148
126
  if (!RemoteNetworkType[result.id]) {
149
127
  RemoteNetworkType[result.id] = [];
150
128
  }
151
-
152
129
  if (result.candidateType && RemoteCandidateType[result.id].indexOf(result.candidateType) === -1) {
153
130
  RemoteCandidateType[result.id].push(result.candidateType);
154
131
  }
155
-
156
132
  if (result.protocol && RemoteTransport[result.id].indexOf(result.protocol) === -1) {
157
133
  RemoteTransport[result.id].push(result.protocol.toUpperCase());
158
134
  }
159
-
160
135
  if (result.ip && RemoteIpAddress[result.id].indexOf("".concat(result.ip, ":").concat(result.portNumber)) === -1) {
161
136
  RemoteIpAddress[result.id].push("".concat(result.ip)); // TODO: Add ports
162
137
  }
@@ -164,7 +139,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
164
139
  if (result.networkType && RemoteNetworkType[result.id].indexOf(result.networkType) === -1) {
165
140
  RemoteNetworkType[result.id].push(result.networkType);
166
141
  }
167
-
168
142
  _this.statsResults.internal.candidates[result.id] = {
169
143
  candidateType: RemoteCandidateType[result.id],
170
144
  ipAddress: RemoteIpAddress[result.id],
@@ -273,11 +247,11 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
273
247
  };
274
248
  return _this;
275
249
  }
276
-
277
250
  (0, _createClass2.default)(StatsAnalyzer, [{
278
251
  key: "populateResults",
279
252
  value: function populateResults(lastMqa) {
280
253
  // Audio
254
+
281
255
  this.localMQEStats.audio.RX.packetsLost.push(lastMqa.audioReceive[0].common.mediaHopByHopLost);
282
256
  this.localMQEStats.audio.RX.jitter.push(lastMqa.audioReceive[0].streams[0].common.rtpJitter);
283
257
  this.localMQEStats.audio.RX.latency.push(lastMqa.audioReceive[0].common.roundTripTime);
@@ -285,7 +259,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
285
259
  this.localMQEStats.audio.TX.packetsLost.push(lastMqa.audioTransmit[0].common.remoteLossRate);
286
260
  this.localMQEStats.audio.TX.jitter.push(lastMqa.audioTransmit[0].common.remoteJitter);
287
261
  this.localMQEStats.audio.TX.latency.push(lastMqa.audioTransmit[0].common.roundTripTime);
288
- this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate); // Video
262
+ this.localMQEStats.audio.TX.bitRate.push(lastMqa.audioTransmit[0].streams[0].common.transmittedBitrate);
263
+
264
+ // Video
289
265
 
290
266
  this.localMQEStats.video.RX.packetsLost.push(lastMqa.videoReceive[0].common.mediaHopByHopLost);
291
267
  this.localMQEStats.video.RX.jitter.push(lastMqa.videoReceive[0].streams[0].common.rtpJitter);
@@ -312,15 +288,18 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
312
288
  this.statsResults.audio.send.meanRemoteJitter = [];
313
289
  this.statsResults.video.send.meanRemoteJitter = [];
314
290
  this.statsResults.share.send.meanRemoteJitter = [];
315
- this.statsResults.audio.recv.meanRtpJitter = []; // TODO: currently no values are present
291
+ this.statsResults.audio.recv.meanRtpJitter = [];
316
292
 
293
+ // TODO: currently no values are present
317
294
  this.statsResults.video.recv.meanRtpJitter = [];
318
- this.statsResults.share.recv.meanRtpJitter = []; // Reset the roundTripTime
295
+ this.statsResults.share.recv.meanRtpJitter = [];
319
296
 
297
+ // Reset the roundTripTime
320
298
  this.statsResults.audio.send.meanRoundTripTime = [];
321
299
  this.statsResults.video.send.meanRoundTripTime = [];
322
300
  this.statsResults.share.send.meanRoundTripTime = [];
323
301
  }
302
+
324
303
  /**
325
304
  * sets mediaStatus status for analyzing metrics
326
305
  *
@@ -329,12 +308,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
329
308
  * @memberof StatsAnalyzer
330
309
  * @returns {void}
331
310
  */
332
-
333
311
  }, {
334
312
  key: "updateMediaStatus",
335
313
  value: function updateMediaStatus(status) {
336
314
  this.meetingMediaStatus = status;
337
315
  }
316
+
338
317
  /**
339
318
  * captures MQA data from media connection
340
319
  *
@@ -342,7 +321,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
342
321
  * @memberof StatsAnalyzer
343
322
  * @returns {void}
344
323
  */
345
-
346
324
  }, {
347
325
  key: "sendMqaData",
348
326
  value: function sendMqaData() {
@@ -371,7 +349,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
371
349
  videoSender: videoSender,
372
350
  statsResults: this.statsResults,
373
351
  lastMqaDataSent: this.lastMqaDataSent
374
- }); // Capture mqa for share scenario
352
+ });
353
+
354
+ // Capture mqa for share scenario
375
355
 
376
356
  (0, _mqaUtil.getVideoSenderMqa)({
377
357
  videoSender: shareSender,
@@ -385,29 +365,29 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
385
365
  lastMqaDataSent: this.lastMqaDataSent,
386
366
  isShareStream: true
387
367
  });
388
- _config.default.intervals[0].intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress[0]; // Adding peripheral information
368
+ _config.default.intervals[0].intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress[0];
389
369
 
370
+ // Adding peripheral information
390
371
  _config.default.intervals[0].intervalMetadata.peripherals = [];
391
-
392
372
  _config.default.intervals[0].intervalMetadata.peripherals.push({
393
373
  information: _constants._UNKNOWN_,
394
374
  name: _constants.MEDIA_DEVICES.SPEAKER
395
375
  });
396
-
397
376
  _config.default.intervals[0].intervalMetadata.peripherals.push({
398
377
  information: this.statsResults[_constants.STATS.AUDIO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel || _constants._UNKNOWN_,
399
378
  name: _constants.MEDIA_DEVICES.MICROPHONE
400
379
  });
401
-
402
380
  _config.default.intervals[0].intervalMetadata.peripherals.push({
403
381
  information: this.statsResults[_constants.STATS.VIDEO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel || _constants._UNKNOWN_,
404
382
  name: _constants.MEDIA_DEVICES.CAMERA
405
383
  });
406
384
 
385
+ // @ts-ignore
407
386
  _config.default.networkType = this.statsResults.connectionType.local.networkType;
408
387
  this.mqaSentCount += 1;
409
- _config.default.intervals[0].intervalNumber = this.mqaSentCount; // DO Deep copy, for some reason it takes the reference all the time rather then old value set
388
+ _config.default.intervals[0].intervalNumber = this.mqaSentCount;
410
389
 
390
+ // DO Deep copy, for some reason it takes the reference all the time rather then old value set
411
391
  this.lastMqaDataSent = (0, _cloneDeep2.default)(this.statsResults);
412
392
  this.populateResults(_config.default.intervals[0]);
413
393
  this.resetStatsResults();
@@ -416,55 +396,54 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
416
396
  function: 'sendMqaData'
417
397
  }, EVENTS.MEDIA_QUALITY, {
418
398
  data: _config.default.intervals[0],
399
+ // @ts-ignore
419
400
  networkType: _config.default.networkType
420
401
  });
421
402
  }
403
+
422
404
  /**
423
405
  * updated the media connection when changed
424
406
  *
425
407
  * @private
426
408
  * @memberof StatsAnalyzer
427
- * @param {MC.RoapMediaConnection} mediaConnection
409
+ * @param {RoapMediaConnection} mediaConnection
428
410
  * @returns {void}
429
411
  */
430
-
431
412
  }, {
432
413
  key: "updateMediaConnection",
433
414
  value: function updateMediaConnection(mediaConnection) {
434
415
  this.mediaConnection = mediaConnection;
435
416
  }
417
+
436
418
  /**
437
419
  * Starts the stats analyzer on interval
438
420
  *
439
421
  * @public
440
422
  * @memberof StatsAnalyzer
441
- * @param {MC.RoapMediaConnection} mediaConnection
423
+ * @param {RoapMediaConnection} mediaConnection
442
424
  * @returns {Promise}
443
425
  */
444
-
445
426
  }, {
446
427
  key: "startAnalyzer",
447
428
  value: function startAnalyzer(mediaConnection) {
448
429
  var _this2 = this;
449
-
450
430
  if (!this.statsStarted) {
451
431
  this.statsStarted = true;
452
432
  this.mediaConnection = mediaConnection;
453
433
  return this.getStatsAndParse().then(function () {
454
434
  _this2.statsInterval = setInterval(function () {
455
435
  _this2.getStatsAndParse();
456
- }, _this2.config.analyzerInterval); // Trigger initial fetch
457
-
436
+ }, _this2.config.analyzerInterval);
437
+ // Trigger initial fetch
458
438
  _this2.sendMqaData();
459
-
460
439
  _this2.mqaInterval = setInterval(function () {
461
440
  _this2.sendMqaData();
462
441
  }, _constants.MQA_INTEVAL);
463
442
  });
464
443
  }
465
-
466
444
  return _promise.default.resolve();
467
445
  }
446
+
468
447
  /**
469
448
  * Cleans up the analyzer when done
470
449
  *
@@ -472,35 +451,29 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
472
451
  * @memberof StatsAnalyzer
473
452
  * @returns {void}
474
453
  */
475
-
476
454
  }, {
477
455
  key: "stopAnalyzer",
478
456
  value: function stopAnalyzer() {
479
457
  var _this3 = this;
480
-
481
458
  var sendOneLastMqa = this.mqaInterval && this.statsInterval;
482
-
483
459
  if (this.statsInterval) {
484
460
  clearInterval(this.statsInterval);
485
461
  this.statsInterval = undefined;
486
462
  }
487
-
488
463
  if (this.mqaInterval) {
489
464
  clearInterval(this.mqaInterval);
490
465
  this.mqaInterval = undefined;
491
466
  }
492
-
493
467
  if (sendOneLastMqa) {
494
468
  return this.getStatsAndParse().then(function () {
495
469
  _this3.sendMqaData();
496
-
497
470
  _this3.mediaConnection = null;
498
471
  });
499
472
  }
500
-
501
473
  this.mediaConnection = null;
502
474
  return _promise.default.resolve();
503
475
  }
476
+
504
477
  /**
505
478
  * Parse a single result of get stats
506
479
  *
@@ -511,49 +484,43 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
511
484
  * @returns {void}
512
485
  * @memberof StatsAnalyzer
513
486
  */
514
-
515
487
  }, {
516
488
  key: "parseGetStatsResult",
517
489
  value: function parseGetStatsResult(getStatsResult, type, isSender) {
518
490
  if (!getStatsResult) {
519
491
  return;
520
492
  }
521
-
522
493
  switch (getStatsResult.type) {
523
494
  case 'outbound-rtp':
524
495
  this.processOutboundRTPResult(getStatsResult, type);
525
496
  break;
526
-
527
497
  case 'inbound-rtp':
528
498
  this.processInboundRTPResult(getStatsResult, type);
529
499
  break;
530
-
531
500
  case 'track':
532
501
  this.processTrackResult(getStatsResult, type);
533
502
  break;
534
-
535
503
  case 'remote-inbound-rtp':
536
504
  case 'remote-outbound-rtp':
505
+ // @ts-ignore
537
506
  this.compareSentAndReceived(getStatsResult, type, isSender);
538
507
  break;
539
-
540
508
  case 'remotecandidate':
541
509
  case 'remote-candidate':
542
510
  this.parseCandidate(getStatsResult, type, isSender, true);
543
511
  break;
544
-
545
512
  case 'local-candidate':
546
513
  this.parseCandidate(getStatsResult, type, isSender, false);
547
514
  break;
548
-
549
515
  case 'media-source':
516
+ // @ts-ignore
550
517
  this.parseAudioSource(getStatsResult, type);
551
518
  break;
552
-
553
519
  default:
554
520
  break;
555
521
  }
556
522
  }
523
+
557
524
  /**
558
525
  * Filters the get stats results for types
559
526
  * @private
@@ -562,12 +529,10 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
562
529
  * @param {boolean} isSender
563
530
  * @returns {void}
564
531
  */
565
-
566
532
  }, {
567
533
  key: "filterAndParseGetStatsResults",
568
534
  value: function filterAndParseGetStatsResults(getStatsResults, type, isSender) {
569
535
  var _this4 = this;
570
-
571
536
  var types = _constants.DEFAULT_GET_STATS_FILTER.types;
572
537
  getStatsResults.forEach(function (result) {
573
538
  if (types.includes(result.type)) {
@@ -575,25 +540,25 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
575
540
  }
576
541
  });
577
542
  }
543
+
578
544
  /**
579
545
  * parse the audio
580
546
  * @param {String} result
581
547
  * @param {boolean} type
582
548
  * @returns {void}
583
549
  */
584
-
585
550
  }, {
586
551
  key: "parseAudioSource",
587
552
  value: function parseAudioSource(result, type) {
588
553
  if (!result) {
589
554
  return;
590
555
  }
591
-
592
556
  if (type === _constants.STATS.AUDIO_CORRELATE) {
593
557
  this.statsResults[type].send.audioLevel = result.audioLevel;
594
558
  this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;
595
559
  }
596
560
  }
561
+
597
562
  /**
598
563
  * emits started/stopped events for local/remote media by checking
599
564
  * if given values are increasing or not. The previousValue, currentValue
@@ -608,7 +573,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
608
573
  * @memberof StatsAnalyzer
609
574
  * @returns {void}
610
575
  */
611
-
612
576
  }, {
613
577
  key: "compareLastStatsResult",
614
578
  value:
@@ -625,131 +589,111 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
625
589
  var mediaType = _constants.STATS.AUDIO_CORRELATE;
626
590
  var currentStats = null;
627
591
  var previousStats = null;
628
-
629
592
  if (this.meetingMediaStatus.expected.sendAudio) {
630
593
  currentStats = this.statsResults[mediaType].send;
631
594
  previousStats = this.lastStatsResults[mediaType].send;
632
-
633
595
  if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
634
596
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
635
597
  } else {
636
598
  if (currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
637
599
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Energy present"));
638
600
  }
639
-
640
601
  if (currentStats.audioLevel === 0) {
641
602
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " level is 0 for the user"));
642
603
  }
643
604
  }
644
-
645
605
  this.emitStartStopEvents(mediaType, previousStats.totalPacketsSent, currentStats.totalPacketsSent, true);
646
606
  }
647
-
648
607
  if (this.meetingMediaStatus.expected.receiveAudio) {
649
608
  // compare audio stats received
650
609
  currentStats = this.statsResults[mediaType].recv;
651
610
  previousStats = this.lastStatsResults[mediaType].recv;
652
-
653
611
  if (currentStats.totalPacketsReceived === previousStats.totalPacketsReceived || currentStats.totalPacketsReceived === 0) {
654
612
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets received"));
655
613
  } else if (currentStats.totalSamplesReceived === previousStats.totalSamplesReceived || currentStats.totalSamplesReceived === 0) {
656
614
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " samples received"));
657
615
  }
658
-
659
616
  this.emitStartStopEvents(mediaType, previousStats.totalPacketsReceived, currentStats.totalPacketsReceived, false);
660
617
  }
661
-
662
618
  mediaType = _constants.STATS.VIDEO_CORRELATE;
663
-
664
619
  if (this.meetingMediaStatus.expected.sendVideo) {
665
620
  // compare video stats sent
666
621
  currentStats = this.statsResults[mediaType].send;
667
622
  previousStats = this.lastStatsResults[mediaType].send;
668
-
669
623
  if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
670
624
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
671
625
  } else {
672
626
  if (currentStats.framesEncoded === previousStats.framesEncoded || currentStats.framesEncoded === 0) {
673
627
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames Encoded"));
674
628
  }
675
-
676
629
  if (this.statsResults.resolutions[mediaType].send.framesSent === this.lastStatsResults.resolutions[mediaType].send.framesSent || this.statsResults.resolutions[mediaType].send.framesSent === 0) {
677
630
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " Frames sent"));
678
631
  }
679
632
  }
680
-
681
633
  this.emitStartStopEvents(mediaType, previousStats.framesSent, currentStats.framesSent, true);
682
634
  }
683
-
684
635
  if (this.meetingMediaStatus.expected.receiveVideo) {
685
636
  // compare video stats reveived
637
+
686
638
  currentStats = this.statsResults[mediaType].recv;
687
639
  previousStats = this.lastStatsResults[mediaType].recv;
688
-
689
640
  if (currentStats.totalPacketsReceived === previousStats.totalPacketsReceived || currentStats.totalPacketsReceived === 0) {
690
641
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets received"));
691
642
  } else {
692
643
  if (this.statsResults.resolutions[mediaType].recv.framesReceived === this.lastStatsResults.resolutions[mediaType].recv.framesReceived || this.statsResults.resolutions[mediaType].recv.framesReceived === 0) {
693
644
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames received"));
694
645
  }
695
-
696
646
  if (this.statsResults[mediaType].recv.framesDecoded === this.lastStatsResults[mediaType].recv.framesDecoded || this.statsResults.resolutions[mediaType].send.framesDecoded === 0) {
697
647
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames decoded"));
698
648
  }
699
-
700
649
  if (this.statsResults.resolutions[mediaType].recv.framesDropped - this.lastStatsResults.resolutions[mediaType].recv.framesDropped > 10) {
701
650
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " frames are getting dropped"));
702
651
  }
703
652
  }
704
-
705
653
  this.emitStartStopEvents(mediaType, previousStats.framesDecoded, currentStats.framesDecoded, false);
706
654
  }
707
-
708
655
  mediaType = _constants.STATS.SHARE_CORRELATE;
709
-
710
656
  if (this.meetingMediaStatus.expected.sendShare) {
711
657
  // compare share stats sent
658
+
712
659
  currentStats = this.statsResults[mediaType].send;
713
660
  previousStats = this.lastStatsResults[mediaType].send;
714
-
715
661
  if (currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
716
662
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets sent"));
717
663
  } else {
718
664
  if (currentStats.framesEncoded === previousStats.framesEncoded || currentStats.framesEncoded === 0) {
719
665
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames getting encoded"));
720
666
  }
721
-
722
667
  if (this.statsResults.resolutions[mediaType].send.framesSent === this.lastStatsResults.resolutions[mediaType].send.framesSent || this.statsResults.resolutions[mediaType].send.framesSent === 0) {
723
668
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames sent"));
724
669
  }
725
- } // TODO:need to check receive share value
726
- // compare share stats reveived
727
-
670
+ }
728
671
 
672
+ // TODO:need to check receive share value
673
+ // compare share stats reveived
729
674
  currentStats = this.statsResults[mediaType].recv;
730
675
  previousStats = this.lastStatsResults[mediaType].recv;
731
-
732
676
  if (currentStats.totalPacketsReceived === previousStats.totalPacketsReceived || currentStats.totalPacketsSent === 0) {
733
677
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " RTP packets received"));
734
678
  } else {
735
679
  if (this.statsResults.resolutions[mediaType].recv.framesReceived === this.lastStatsResults.resolutions[mediaType].recv.framesReceived || this.statsResults.resolutions[mediaType].recv.framesReceived === 0) {
736
680
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames received"));
737
681
  }
738
-
739
682
  if (this.statsResults[mediaType].recv.framesDecoded === this.lastStatsResults[mediaType].recv.framesDecoded || this.statsResults.resolutions[mediaType].send.framesDecoded === 0) {
740
683
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No ".concat(mediaType, " frames decoded"));
741
684
  }
742
-
743
685
  if (this.statsResults.resolutions[mediaType].recv.framesDropped - this.lastStatsResults.resolutions[mediaType].recv.framesDropped > 10) {
744
686
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> ".concat(mediaType, " frames are getting dropped"));
745
687
  }
746
- } // we are not calling emitStartStopEvents() for sending or receiving share because sharing is often started and stopped
688
+ }
689
+
690
+ // we are not calling emitStartStopEvents() for sending or receiving share because sharing is often started and stopped
747
691
  // in meetings and this.meetingMediaStatus.expected values can be out of sync with the actual packet flow
748
692
  // so we would send "sharing stopped" events incorrectly
749
-
750
693
  }
751
694
  }
752
695
  }
696
+
753
697
  /**
754
698
  * Does a `getStats` on all the transceivers and parses the results
755
699
  *
@@ -757,53 +701,41 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
757
701
  * @memberof StatsAnalyzer
758
702
  * @returns {Promise}
759
703
  */
760
-
761
704
  }, {
762
705
  key: "getStatsAndParse",
763
706
  value: function getStatsAndParse() {
764
707
  var _this5 = this;
765
-
766
708
  if (!this.mediaConnection) {
767
709
  return _promise.default.resolve();
768
710
  }
769
-
770
- if (this.mediaConnection && this.mediaConnection.getConnectionState() === _internalMediaCore.MediaConnection.ConnectionState.Failed) {
711
+ if (this.mediaConnection && this.mediaConnection.getConnectionState() === _internalMediaCore.ConnectionState.Failed) {
771
712
  _loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> media connection is in failed state');
772
-
773
713
  return _promise.default.resolve();
774
714
  }
775
-
776
715
  _loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Collecting Stats');
777
-
778
716
  return this.mediaConnection.getTransceiverStats().then(function (transceiverStats) {
779
717
  _this5.filterAndParseGetStatsResults(transceiverStats.video.sender, _constants.STATS.VIDEO_CORRELATE, true);
780
-
781
718
  _this5.filterAndParseGetStatsResults(transceiverStats.video.receiver, _constants.STATS.VIDEO_CORRELATE, false);
782
-
783
719
  _this5.filterAndParseGetStatsResults(transceiverStats.audio.sender, _constants.STATS.AUDIO_CORRELATE, true);
784
-
785
720
  _this5.filterAndParseGetStatsResults(transceiverStats.audio.receiver, _constants.STATS.AUDIO_CORRELATE, false);
786
-
787
721
  _this5.filterAndParseGetStatsResults(transceiverStats.screenShareVideo.sender, _constants.STATS.SHARE_CORRELATE, true);
722
+ _this5.filterAndParseGetStatsResults(transceiverStats.screenShareVideo.receiver, _constants.STATS.SHARE_CORRELATE, false);
788
723
 
789
- _this5.filterAndParseGetStatsResults(transceiverStats.screenShareVideo.receiver, _constants.STATS.SHARE_CORRELATE, false); // updates the current direction of media
790
-
791
-
724
+ // updates the current direction of media
792
725
  _this5.statsResults[_constants.STATS.AUDIO_CORRELATE].direction = transceiverStats.audio.currentDirection;
793
726
  _this5.statsResults[_constants.STATS.VIDEO_CORRELATE].direction = transceiverStats.video.currentDirection;
794
727
  _this5.statsResults[_constants.STATS.SHARE_CORRELATE].direction = transceiverStats.screenShareVideo.currentDirection;
795
728
  _this5.statsResults[_constants.STATS.AUDIO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel = transceiverStats.audio.localTrackLabel;
796
729
  _this5.statsResults[_constants.STATS.VIDEO_CORRELATE][_constants.STATS.SEND_DIRECTION].trackLabel = transceiverStats.video.localTrackLabel;
730
+ _this5.compareLastStatsResult();
797
731
 
798
- _this5.compareLastStatsResult(); // Save the last results to compare with the current
732
+ // Save the last results to compare with the current
799
733
  // DO Deep copy, for some reason it takes the reference all the time rather then old value set
800
-
801
-
802
734
  _this5.lastStatsResults = JSON.parse((0, _stringify.default)(_this5.statsResults));
803
-
804
735
  _loggerProxy.default.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats');
805
736
  });
806
737
  }
738
+
807
739
  /**
808
740
  * Processes OutboundRTP stats result and stores
809
741
  * @private
@@ -811,28 +743,22 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
811
743
  * @param {*} type
812
744
  * @returns {void}
813
745
  */
814
-
815
746
  }, {
816
747
  key: "processOutboundRTPResult",
817
748
  value: function processOutboundRTPResult(result, type) {
818
749
  var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
819
750
  var sendrecvType = _constants.STATS.SEND_DIRECTION;
820
-
821
751
  if (result.bytesSent) {
822
752
  var kilobytes = 0;
823
-
824
753
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {
825
754
  this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
826
755
  }
827
-
828
756
  if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {
829
757
  this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
830
758
  }
831
-
832
759
  if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {
833
760
  this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
834
761
  }
835
-
836
762
  var bytes = result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;
837
763
  this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;
838
764
  kilobytes = bytes / 1024;
@@ -841,13 +767,13 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
841
767
  this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;
842
768
  this.statsResults[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded - this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded;
843
769
  this.statsResults.internal[mediaType].outboundRtpId = result.id;
844
-
845
770
  if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {
846
771
  this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
847
772
  }
848
-
849
773
  this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;
850
- this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent; // Data saved to send MQA metrics
774
+ this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;
775
+
776
+ // Data saved to send MQA metrics
851
777
 
852
778
  this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;
853
779
  this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
@@ -865,6 +791,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
865
791
  this.statsResults[mediaType][sendrecvType].retransmittedBytesSent = result.retransmittedBytesSent;
866
792
  }
867
793
  }
794
+
868
795
  /**
869
796
  * Processes InboundRTP stats result and stores
870
797
  * @private
@@ -872,36 +799,28 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
872
799
  * @param {*} type
873
800
  * @returns {void}
874
801
  */
875
-
876
802
  }, {
877
803
  key: "processInboundRTPResult",
878
804
  value: function processInboundRTPResult(result, type) {
879
805
  var mediaType = type || _constants.STATS.AUDIO_CORRELATE;
880
806
  var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
881
-
882
807
  if (result.bytesReceived) {
883
808
  var kilobytes = 0;
884
-
885
809
  if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {
886
810
  this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
887
811
  }
888
-
889
812
  if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {
890
813
  this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;
891
814
  }
892
-
893
815
  if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {
894
816
  this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;
895
817
  }
896
-
897
818
  if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {
898
819
  this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
899
820
  }
900
-
901
821
  if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {
902
822
  this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
903
823
  }
904
-
905
824
  var bytes = result.bytesReceived - this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;
906
825
  this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;
907
826
  kilobytes = bytes / 1024;
@@ -909,34 +828,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
909
828
  this.statsResults[mediaType].bytesReceived = kilobytes.toFixed(1);
910
829
  this.statsResults[mediaType][sendrecvType].pliCount = result.pliCount - this.statsResults.internal[mediaType][sendrecvType].pliCount;
911
830
  this.statsResults[mediaType][sendrecvType].currentPacketsLost = result.packetsLost - this.statsResults.internal[mediaType][sendrecvType].packetsLost;
912
-
913
831
  if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {
914
832
  this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;
915
833
  }
916
-
917
834
  this.statsResults[mediaType][sendrecvType].packetsReceived = result.packetsReceived - this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;
918
835
  this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
919
-
920
836
  if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {
921
837
  _loggerProxy.default.logger.info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for ".concat(mediaType, " "), this.statsResults[mediaType][sendrecvType].packetsReceived);
922
- } // Check the over all packet Lost ratio
923
-
838
+ }
924
839
 
840
+ // Check the over all packet Lost ratio
925
841
  this.statsResults[mediaType][sendrecvType].currentPacketLossRatio = this.statsResults[mediaType][sendrecvType].currentPacketsLost > 0 ? this.statsResults[mediaType][sendrecvType].currentPacketsLost / (this.statsResults[mediaType][sendrecvType].packetsReceived + this.statsResults[mediaType][sendrecvType].currentPacketsLost) : 0;
926
-
927
842
  if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
928
843
  _loggerProxy.default.logger.info('StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver ', this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
929
- } // TODO: check the packet loss value is negative values here
844
+ }
930
845
 
846
+ // TODO: check the packet loss value is negative values here
931
847
 
932
848
  if (result.packetsLost) {
933
849
  this.statsResults[mediaType][sendrecvType].totalPacketsLost = result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;
934
850
  } else {
935
851
  this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;
936
852
  }
853
+ this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
937
854
 
938
- this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp; // From Thin
939
-
855
+ // From Thin
940
856
  this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
941
857
  this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;
942
858
  this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
@@ -947,7 +863,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
947
863
  this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;
948
864
  this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;
949
865
  this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;
950
- this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter); // Audio stats
866
+ this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
867
+
868
+ // Audio stats
951
869
 
952
870
  this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;
953
871
  this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;
@@ -956,6 +874,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
956
874
  this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;
957
875
  }
958
876
  }
877
+
959
878
  /**
960
879
  * Processes remote and local candidate result and stores
961
880
  * @private
@@ -966,7 +885,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
966
885
  *
967
886
  * @returns {void}
968
887
  */
969
-
970
888
  }, {
971
889
  key: "processTrackResult",
972
890
  value:
@@ -983,33 +901,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
983
901
  if (!result || result.type !== 'track') {
984
902
  return;
985
903
  }
986
-
987
904
  if (result.type !== 'track') return;
988
905
  var sendrecvType = result.remoteSource === true ? _constants.STATS.RECEIVE_DIRECTION : _constants.STATS.SEND_DIRECTION;
989
-
990
906
  if (result.frameWidth && result.frameHeight) {
991
907
  this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;
992
908
  this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;
993
909
  this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;
994
910
  this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
995
911
  }
996
-
997
912
  if (sendrecvType === _constants.STATS.RECEIVE_DIRECTION) {
998
913
  this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;
999
914
  this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
1000
915
  this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;
1001
916
  }
1002
-
1003
917
  if (result.trackIdentifier && mediaType !== _constants.STATS.AUDIO_CORRELATE) {
1004
918
  this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier = result.trackIdentifier;
1005
919
  var jitterBufferDelay = result && result.jitterBufferDelay;
1006
920
  var jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;
1007
- this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount; // Used to calculate the jitter
921
+ this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay = jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;
1008
922
 
923
+ // Used to calculate the jitter
1009
924
  this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay = result.jitterBufferDelay;
1010
925
  this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount = result.jitterBufferEmittedCount;
1011
926
  }
1012
927
  }
928
+
1013
929
  /**
1014
930
  *
1015
931
  * @private
@@ -1018,20 +934,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1018
934
  * @returns {void}
1019
935
  * @memberof StatsAnalyzer
1020
936
  */
1021
-
1022
937
  }, {
1023
938
  key: "compareSentAndReceived",
1024
939
  value: function compareSentAndReceived(result, type) {
1025
940
  if (!type) {
1026
941
  return;
1027
942
  }
1028
-
1029
943
  var mediaType = type;
1030
-
1031
944
  if (!this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver) {
1032
945
  this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
1033
946
  }
1034
-
1035
947
  var currentPacketLoss = result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;
1036
948
  this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
1037
949
  this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;
@@ -1040,15 +952,14 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1040
952
  this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);
1041
953
  this.statsResults[mediaType].send.timestamp = result.timestamp;
1042
954
  this.statsResults[mediaType].send.ssrc = result.ssrc;
1043
- this.statsResults[mediaType].send.reportsReceived = result.reportsReceived; // Total packloss ratio on this video section of the call
955
+ this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
1044
956
 
957
+ // Total packloss ratio on this video section of the call
1045
958
  this.statsResults[mediaType].send.overAllPacketLossRatio = this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0 ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver / this.statsResults[mediaType].send.totalPacketsSent : 0;
1046
959
  this.statsResults[mediaType].send.currentPacketLossRatio = this.statsResults[mediaType].send.packetsLostOnReceiver > 0 ? this.statsResults[mediaType].send.packetsLostOnReceiver * 100 / (this.statsResults[mediaType].send.packetsSent + this.statsResults[mediaType].send.packetsLostOnReceiver) : 0;
1047
-
1048
960
  if (this.statsResults[mediaType].send.maxPacketLossRatio < this.statsResults[mediaType].send.currentPacketLossRatio) {
1049
961
  this.statsResults[mediaType].send.maxPacketLossRatio = this.statsResults[mediaType].send.currentPacketLossRatio;
1050
962
  }
1051
-
1052
963
  if (result.type === 'remote-inbound-rtp') {
1053
964
  this.networkQualityMonitor.determineUplinkNetworkQuality({
1054
965
  mediaType: mediaType,
@@ -1060,6 +971,5 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1060
971
  }]);
1061
972
  return StatsAnalyzer;
1062
973
  }(_eventsScope.default);
1063
-
1064
974
  exports.StatsAnalyzer = StatsAnalyzer;
1065
975
  //# sourceMappingURL=index.js.map