@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,76 +1,76 @@
|
|
|
1
|
+
/* eslint-disable valid-jsdoc */
|
|
1
2
|
/* eslint-disable import/prefer-default-export */
|
|
2
|
-
import {
|
|
3
|
-
|
|
3
|
+
import {MediaType, ReceiveSlot as WcmeReceiveSlot} from '@webex/internal-media-core';
|
|
4
4
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
5
|
-
import Meeting from '../meeting';
|
|
6
5
|
|
|
7
|
-
import {
|
|
6
|
+
import {FindMemberIdCallback, ReceiveSlot} from './receiveSlot';
|
|
7
|
+
|
|
8
|
+
export type CreateSlotCallback = (mediaType: MediaType) => Promise<WcmeReceiveSlot>;
|
|
9
|
+
|
|
10
|
+
export type {CSI, FindMemberIdCallback} from './receiveSlot';
|
|
8
11
|
|
|
9
12
|
/**
|
|
10
13
|
* Manages all receive slots used by a meeting. WMCE receive slots cannot be ever deleted,
|
|
11
14
|
* so this manager has a pool in order to re-use the slots that were released earlier.
|
|
12
15
|
*/
|
|
13
16
|
export class ReceiveSlotManager {
|
|
14
|
-
private allocatedSlots: {[key in
|
|
17
|
+
private allocatedSlots: {[key in MediaType]: ReceiveSlot[]};
|
|
15
18
|
|
|
16
|
-
private freeSlots: {[key in
|
|
19
|
+
private freeSlots: {[key in MediaType]: ReceiveSlot[]};
|
|
17
20
|
|
|
18
|
-
private
|
|
21
|
+
private createSlotCallback: CreateSlotCallback;
|
|
22
|
+
|
|
23
|
+
private findMemberIdByCsiCallback: FindMemberIdCallback;
|
|
19
24
|
|
|
20
25
|
/**
|
|
21
26
|
* Constructor
|
|
22
27
|
* @param {Meeting} meeting
|
|
23
28
|
*/
|
|
24
|
-
constructor(
|
|
29
|
+
constructor(
|
|
30
|
+
createSlotCallback: CreateSlotCallback,
|
|
31
|
+
findMemberIdByCsiCallback: FindMemberIdCallback
|
|
32
|
+
) {
|
|
25
33
|
this.allocatedSlots = {
|
|
26
|
-
[
|
|
27
|
-
[
|
|
28
|
-
[
|
|
29
|
-
[
|
|
34
|
+
[MediaType.AudioMain]: [],
|
|
35
|
+
[MediaType.VideoMain]: [],
|
|
36
|
+
[MediaType.AudioSlides]: [],
|
|
37
|
+
[MediaType.VideoSlides]: [],
|
|
30
38
|
};
|
|
31
39
|
this.freeSlots = {
|
|
32
|
-
[
|
|
33
|
-
[
|
|
34
|
-
[
|
|
35
|
-
[
|
|
40
|
+
[MediaType.AudioMain]: [],
|
|
41
|
+
[MediaType.VideoMain]: [],
|
|
42
|
+
[MediaType.AudioSlides]: [],
|
|
43
|
+
[MediaType.VideoSlides]: [],
|
|
36
44
|
};
|
|
37
|
-
this.
|
|
45
|
+
this.createSlotCallback = createSlotCallback;
|
|
46
|
+
this.findMemberIdByCsiCallback = findMemberIdByCsiCallback;
|
|
38
47
|
}
|
|
39
48
|
|
|
40
49
|
/**
|
|
41
50
|
* Creates a new receive slot or returns one from the existing pool of free slots
|
|
42
51
|
*
|
|
43
|
-
* @param {
|
|
52
|
+
* @param {MediaType} mediaType
|
|
44
53
|
* @returns {Promise<ReceiveSlot>}
|
|
45
54
|
*/
|
|
46
|
-
async allocateSlot(mediaType:
|
|
47
|
-
if (!this.meeting?.mediaProperties?.webrtcMediaConnection) {
|
|
48
|
-
return Promise.reject(new Error('Webrtc media connection is missing'));
|
|
49
|
-
}
|
|
50
|
-
|
|
55
|
+
async allocateSlot(mediaType: MediaType): Promise<ReceiveSlot> {
|
|
51
56
|
// try to use one of the free ones
|
|
52
57
|
const availableSlot = this.freeSlots[mediaType].pop();
|
|
53
58
|
|
|
54
59
|
if (availableSlot) {
|
|
55
60
|
this.allocatedSlots[mediaType].push(availableSlot);
|
|
56
61
|
|
|
57
|
-
LoggerProxy.logger.log(
|
|
62
|
+
LoggerProxy.logger.log(`${mediaType}: receive slot re-used: ${availableSlot.id}`);
|
|
58
63
|
|
|
59
64
|
return availableSlot;
|
|
60
65
|
}
|
|
61
66
|
|
|
62
67
|
// we have to create a new one
|
|
63
|
-
const wcmeReceiveSlot =
|
|
64
|
-
await this.meeting.mediaProperties.webrtcMediaConnection.createReceiveSlot(mediaType);
|
|
68
|
+
const wcmeReceiveSlot = await this.createSlotCallback(mediaType);
|
|
65
69
|
|
|
66
|
-
const receiveSlot = new ReceiveSlot(
|
|
67
|
-
mediaType,
|
|
68
|
-
wcmeReceiveSlot,
|
|
69
|
-
(csi: CSI) => this.meeting.members.findMemberByCsi(csi)?.id
|
|
70
|
-
);
|
|
70
|
+
const receiveSlot = new ReceiveSlot(mediaType, wcmeReceiveSlot, this.findMemberIdByCsiCallback);
|
|
71
71
|
|
|
72
72
|
this.allocatedSlots[mediaType].push(receiveSlot);
|
|
73
|
-
LoggerProxy.logger.log(
|
|
73
|
+
LoggerProxy.logger.log(`${mediaType}: new receive slot allocated: ${receiveSlot.id}`);
|
|
74
74
|
|
|
75
75
|
return receiveSlot;
|
|
76
76
|
}
|
|
@@ -87,10 +87,10 @@ export class ReceiveSlotManager {
|
|
|
87
87
|
if (idx >= 0) {
|
|
88
88
|
this.allocatedSlots[slot.mediaType].splice(idx, 1);
|
|
89
89
|
this.freeSlots[slot.mediaType].push(slot);
|
|
90
|
-
LoggerProxy.logger.log(
|
|
90
|
+
LoggerProxy.logger.log(`${slot.mediaType}: receive slot released: ${slot.id}`);
|
|
91
91
|
} else {
|
|
92
92
|
LoggerProxy.logger.warn(
|
|
93
|
-
|
|
93
|
+
`ReceiveSlotManager#releaseSlot --> trying to release a ${slot.mediaType}} slot that is not managed by this ReceiveSlotManager`
|
|
94
94
|
);
|
|
95
95
|
}
|
|
96
96
|
}
|
|
@@ -100,16 +100,16 @@ export class ReceiveSlotManager {
|
|
|
100
100
|
*/
|
|
101
101
|
reset() {
|
|
102
102
|
this.allocatedSlots = {
|
|
103
|
-
[
|
|
104
|
-
[
|
|
105
|
-
[
|
|
106
|
-
[
|
|
103
|
+
[MediaType.AudioMain]: [],
|
|
104
|
+
[MediaType.VideoMain]: [],
|
|
105
|
+
[MediaType.AudioSlides]: [],
|
|
106
|
+
[MediaType.VideoSlides]: [],
|
|
107
107
|
};
|
|
108
108
|
this.freeSlots = {
|
|
109
|
-
[
|
|
110
|
-
[
|
|
111
|
-
[
|
|
112
|
-
[
|
|
109
|
+
[MediaType.AudioMain]: [],
|
|
110
|
+
[MediaType.VideoMain]: [],
|
|
111
|
+
[MediaType.AudioSlides]: [],
|
|
112
|
+
[MediaType.VideoSlides]: [],
|
|
113
113
|
};
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -139,4 +139,28 @@ export class ReceiveSlotManager {
|
|
|
139
139
|
numFreeSlots,
|
|
140
140
|
};
|
|
141
141
|
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Tries to find the member id on all allocated receive slots
|
|
145
|
+
* This function should be called when new members are added to the meeting.
|
|
146
|
+
*/
|
|
147
|
+
updateMemberIds() {
|
|
148
|
+
Object.keys(this.allocatedSlots).forEach((key) => {
|
|
149
|
+
this.allocatedSlots[key].forEach((slot: ReceiveSlot) => {
|
|
150
|
+
slot.findMemberId();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Find a receive slot by a ssrc.
|
|
157
|
+
*
|
|
158
|
+
* @param ssrc - The ssrc of the receive slot to find.
|
|
159
|
+
* @returns - The receive slot with this ssrc, undefined if not found.
|
|
160
|
+
*/
|
|
161
|
+
findReceiveSlotBySsrc(ssrc: number): ReceiveSlot | undefined {
|
|
162
|
+
return Object.values(this.allocatedSlots)
|
|
163
|
+
.flat()
|
|
164
|
+
.find((r) => ssrc && r.wcmeReceiveSlot?.id?.ssrc === ssrc);
|
|
165
|
+
}
|
|
142
166
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable valid-jsdoc */
|
|
2
|
+
import {MediaType, StreamState} from '@webex/internal-media-core';
|
|
2
3
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
3
4
|
import EventsScope from '../common/events/events-scope';
|
|
4
5
|
|
|
@@ -7,6 +8,7 @@ import {CSI, ReceiveSlot, ReceiveSlotEvents} from './receiveSlot';
|
|
|
7
8
|
|
|
8
9
|
export const RemoteMediaEvents = {
|
|
9
10
|
SourceUpdate: ReceiveSlotEvents.SourceUpdate,
|
|
11
|
+
Stopped: 'stopped',
|
|
10
12
|
};
|
|
11
13
|
|
|
12
14
|
export type RemoteVideoResolution =
|
|
@@ -55,7 +57,7 @@ export function getMaxFs(paneSize: RemoteVideoResolution): number {
|
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
type Options = {
|
|
58
|
-
resolution?: RemoteVideoResolution; // applies only to groups of type
|
|
60
|
+
resolution?: RemoteVideoResolution; // applies only to groups of type MediaType.VideoMain and MediaType.VideoSlides
|
|
59
61
|
};
|
|
60
62
|
|
|
61
63
|
export type RemoteMediaId = string;
|
|
@@ -100,6 +102,31 @@ export class RemoteMedia extends EventsScope {
|
|
|
100
102
|
this.id = `RM${remoteMediaCounter}-${this.receiveSlot.id}`;
|
|
101
103
|
}
|
|
102
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Supply the width and height of the video element
|
|
107
|
+
* to restrict the requested resolution to this size
|
|
108
|
+
* @param width width of the video element
|
|
109
|
+
* @param height height of the video element
|
|
110
|
+
*/
|
|
111
|
+
public setSizeHint(width, height) {
|
|
112
|
+
// only base on height for now
|
|
113
|
+
let fs: number;
|
|
114
|
+
|
|
115
|
+
if (height < 135) {
|
|
116
|
+
fs = 60;
|
|
117
|
+
} else if (height < 270) {
|
|
118
|
+
fs = 240;
|
|
119
|
+
} else if (height < 540) {
|
|
120
|
+
fs = 920;
|
|
121
|
+
} else if (height <= 720) {
|
|
122
|
+
fs = 3600;
|
|
123
|
+
} else {
|
|
124
|
+
fs = 8192;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
this.receiveSlot?.setMaxFs(fs);
|
|
128
|
+
}
|
|
129
|
+
|
|
103
130
|
/**
|
|
104
131
|
* Invalidates the remote media by clearing the reference to a receive slot and
|
|
105
132
|
* cancelling the media request.
|
|
@@ -108,10 +135,18 @@ export class RemoteMedia extends EventsScope {
|
|
|
108
135
|
* @param {boolean} commit - whether to commit the cancellation of the media request
|
|
109
136
|
* @internal
|
|
110
137
|
*/
|
|
111
|
-
public stop(commit
|
|
138
|
+
public stop(commit = true) {
|
|
112
139
|
this.cancelMediaRequest(commit);
|
|
113
140
|
this.receiveSlot?.removeAllListeners();
|
|
114
141
|
this.receiveSlot = undefined;
|
|
142
|
+
this.emit(
|
|
143
|
+
{
|
|
144
|
+
file: 'multistream/remoteMedia',
|
|
145
|
+
function: 'stop',
|
|
146
|
+
},
|
|
147
|
+
RemoteMediaEvents.Stopped,
|
|
148
|
+
{}
|
|
149
|
+
);
|
|
115
150
|
}
|
|
116
151
|
|
|
117
152
|
/**
|
|
@@ -164,7 +199,7 @@ export class RemoteMedia extends EventsScope {
|
|
|
164
199
|
private setupEventListeners() {
|
|
165
200
|
if (this.receiveSlot) {
|
|
166
201
|
const scope = {
|
|
167
|
-
file: '
|
|
202
|
+
file: 'multistream/remoteMedia',
|
|
168
203
|
function: 'setupEventListeners',
|
|
169
204
|
};
|
|
170
205
|
|
|
@@ -177,7 +212,7 @@ export class RemoteMedia extends EventsScope {
|
|
|
177
212
|
/**
|
|
178
213
|
* Getter for mediaType
|
|
179
214
|
*/
|
|
180
|
-
public get mediaType() {
|
|
215
|
+
public get mediaType(): MediaType {
|
|
181
216
|
return this.receiveSlot?.mediaType;
|
|
182
217
|
}
|
|
183
218
|
|
|
@@ -198,7 +233,7 @@ export class RemoteMedia extends EventsScope {
|
|
|
198
233
|
/**
|
|
199
234
|
* Getter for source state
|
|
200
235
|
*/
|
|
201
|
-
public get sourceState() {
|
|
236
|
+
public get sourceState(): StreamState {
|
|
202
237
|
return this.receiveSlot?.sourceState;
|
|
203
238
|
}
|
|
204
239
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable valid-jsdoc */
|
|
2
2
|
/* eslint-disable require-jsdoc */
|
|
3
3
|
/* eslint-disable import/prefer-default-export */
|
|
4
|
+
import {forEach} from 'lodash';
|
|
4
5
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
5
6
|
|
|
6
7
|
import {getMaxFs, RemoteMedia, RemoteVideoResolution} from './remoteMedia';
|
|
@@ -8,8 +9,8 @@ import {MediaRequestId, MediaRequestManager} from './mediaRequestManager';
|
|
|
8
9
|
import {CSI, ReceiveSlot} from './receiveSlot';
|
|
9
10
|
|
|
10
11
|
type Options = {
|
|
11
|
-
resolution?: RemoteVideoResolution; // applies only to groups of type
|
|
12
|
-
preferLiveVideo?: boolean; // applies only to groups of type
|
|
12
|
+
resolution?: RemoteVideoResolution; // applies only to groups of type MediaType.VideoMain and MediaType.VideoSlides
|
|
13
|
+
preferLiveVideo?: boolean; // applies only to groups of type MediaType.VideoMain and MediaType.VideoSlides
|
|
13
14
|
};
|
|
14
15
|
|
|
15
16
|
export class RemoteMediaGroup {
|
|
@@ -62,9 +63,57 @@ export class RemoteMediaGroup {
|
|
|
62
63
|
// return a shallow copy so that the client cannot modify this.pinnedRemoteMedia array
|
|
63
64
|
return [...this.pinnedRemoteMedia];
|
|
64
65
|
}
|
|
66
|
+
|
|
65
67
|
return [...this.unpinnedRemoteMedia, ...this.pinnedRemoteMedia];
|
|
66
68
|
}
|
|
67
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Sets CSIs for multiple RemoteMedia instances belonging to this RemoteMediaGroup.
|
|
72
|
+
* For each entry in the remoteMediaCsis array:
|
|
73
|
+
* - if csi is specified, the RemoteMedia instance is pinned to that CSI
|
|
74
|
+
* - if csi is undefined, the RemoteMedia instance is unpinned
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
public setActiveSpeakerCsis(
|
|
78
|
+
remoteMediaCsis: {remoteMedia: RemoteMedia; csi?: number}[],
|
|
79
|
+
commit = true
|
|
80
|
+
): void {
|
|
81
|
+
forEach(remoteMediaCsis, ({csi, remoteMedia}) => {
|
|
82
|
+
if (csi) {
|
|
83
|
+
if (!(this.pinnedRemoteMedia.indexOf(remoteMedia) >= 0)) {
|
|
84
|
+
const unpinId = this.unpinnedRemoteMedia.indexOf(remoteMedia);
|
|
85
|
+
if (unpinId >= 0) {
|
|
86
|
+
this.unpinnedRemoteMedia.splice(unpinId, 1);
|
|
87
|
+
this.pinnedRemoteMedia.push(remoteMedia);
|
|
88
|
+
} else {
|
|
89
|
+
throw new Error(
|
|
90
|
+
`failed to pin a remote media object ${remoteMedia.id}, because it is not found in this remote media group`
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
remoteMedia.sendMediaRequest(csi, false);
|
|
95
|
+
} else {
|
|
96
|
+
if (!(this.unpinnedRemoteMedia.indexOf(remoteMedia) >= 0)) {
|
|
97
|
+
const pinId = this.pinnedRemoteMedia.indexOf(remoteMedia);
|
|
98
|
+
if (pinId >= 0) {
|
|
99
|
+
this.pinnedRemoteMedia.splice(pinId, 1);
|
|
100
|
+
this.unpinnedRemoteMedia.push(remoteMedia);
|
|
101
|
+
} else {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`failed to unpin a remote media object ${remoteMedia.id}, because it is not found in this remote media group`
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
remoteMedia.cancelMediaRequest(false);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
this.cancelActiveSpeakerMediaRequest(false);
|
|
111
|
+
this.sendActiveSpeakerMediaRequest(false);
|
|
112
|
+
if (commit) {
|
|
113
|
+
this.mediaRequestManager.commit();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
68
117
|
/**
|
|
69
118
|
* Pins a specific remote media instance to a specfic CSI, so the media will
|
|
70
119
|
* no longer come from active speaker, but from that CSI.
|
|
@@ -150,6 +199,17 @@ export class RemoteMediaGroup {
|
|
|
150
199
|
throw new Error(`remote media object ${remoteMedia.id} not found in the group`);
|
|
151
200
|
}
|
|
152
201
|
|
|
202
|
+
/**
|
|
203
|
+
* setPreferLiveVideo - sets preferLiveVideo to true/false
|
|
204
|
+
* @internal
|
|
205
|
+
*/
|
|
206
|
+
public setPreferLiveVideo(preferLiveVideo: boolean, commit: boolean) {
|
|
207
|
+
if (this.options.preferLiveVideo !== preferLiveVideo) {
|
|
208
|
+
this.options.preferLiveVideo = preferLiveVideo;
|
|
209
|
+
this.sendActiveSpeakerMediaRequest(commit);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
153
213
|
private sendActiveSpeakerMediaRequest(commit: boolean) {
|
|
154
214
|
this.cancelActiveSpeakerMediaRequest(false);
|
|
155
215
|
|
|
@@ -189,7 +249,7 @@ export class RemoteMediaGroup {
|
|
|
189
249
|
* @param{boolean} commit whether to commit the cancellation of media requests
|
|
190
250
|
* @internal
|
|
191
251
|
*/
|
|
192
|
-
public stop(commit
|
|
252
|
+
public stop(commit = true) {
|
|
193
253
|
this.unpinnedRemoteMedia.forEach((remoteMedia) => remoteMedia.stop(false));
|
|
194
254
|
this.pinnedRemoteMedia.forEach((remoteMedia) => remoteMedia.stop(false));
|
|
195
255
|
this.cancelActiveSpeakerMediaRequest(false);
|