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