@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.20
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/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/breakouts/breakout.js +116 -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/index.js +226 -0
- package/dist/breakouts/index.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 +6 -41
- 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 +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +88 -46
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -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 +184 -190
- 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 +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +34 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +67 -111
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +80 -114
- 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 +10 -12
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +125 -190
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1692 -1925
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +36 -77
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +224 -230
- 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 +43 -215
- 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 +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +193 -268
- 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 +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +5 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +490 -560
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +24 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +99 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +78 -86
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +31 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +3 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +93 -200
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +16 -39
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +9 -38
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +0 -2
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +55 -135
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +57 -32
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/multistreamMedia.js +15 -21
- package/dist/multistream/multistreamMedia.js.map +1 -1
- package/dist/multistream/receiveSlot.js +10 -50
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +45 -82
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +18 -58
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +362 -416
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +36 -57
- 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 +138 -182
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +3 -18
- 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 +322 -455
- 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 +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +39 -64
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +94 -113
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +85 -94
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +85 -175
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +72 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +25 -20
- package/src/breakouts/README.md +190 -0
- package/src/breakouts/breakout.ts +110 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/index.ts +225 -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-in-progress.js → reconnection-in-progress.ts} +0 -0
- 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} +8 -7
- 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 +1 -2
- package/src/{config.js → config.ts} +17 -12
- package/src/constants.ts +40 -1
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +114 -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} +148 -64
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
- package/src/media/{index.js → index.ts} +181 -131
- package/src/media/{properties.js → properties.ts} +47 -28
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
- package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
- package/src/meeting/in-meeting-actions.ts +15 -3
- package/src/meeting/{index.js → index.ts} +2263 -1427
- package/src/meeting/{muteState.js → muteState.ts} +78 -42
- package/src/meeting/{request.js → request.ts} +292 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +112 -115
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +273 -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} +65 -58
- package/src/meetings/{collection.js → collection.ts} +6 -3
- package/src/meetings/index.ts +1159 -0
- package/src/meetings/{request.js → request.ts} +32 -25
- package/src/meetings/{util.js → util.ts} +34 -32
- package/src/member/{index.js → index.ts} +102 -56
- package/src/member/{util.js → util.ts} +52 -25
- package/src/members/{collection.js → collection.ts} +2 -2
- package/src/members/{index.js → index.ts} +219 -142
- package/src/members/{request.js → request.ts} +60 -16
- package/src/members/{util.js → util.ts} +50 -48
- package/src/metrics/{config.js → config.ts} +254 -83
- package/src/metrics/{constants.js → constants.ts} +0 -2
- package/src/metrics/{index.js → index.ts} +106 -74
- package/src/multistream/mediaRequestManager.ts +81 -15
- package/src/multistream/multistreamMedia.ts +5 -0
- package/src/multistream/receiveSlot.ts +18 -12
- package/src/multistream/receiveSlotManager.ts +23 -21
- package/src/multistream/remoteMedia.ts +15 -5
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +153 -37
- package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
- 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} +99 -83
- package/src/reachability/request.ts +39 -33
- 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} +195 -102
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/{index.js → index.ts} +73 -56
- package/src/roap/request.ts +157 -0
- package/src/roap/turnDiscovery.ts +77 -37
- package/src/statsAnalyzer/{global.js → global.ts} +30 -33
- package/src/statsAnalyzer/{index.js → index.ts} +468 -192
- package/src/statsAnalyzer/mqaUtil.ts +290 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/journey.js +664 -463
- package/test/integration/spec/space-meeting.js +320 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/breakouts/breakout.ts +119 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/index.ts +293 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +25 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +104 -2
- 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/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +97 -103
- package/test/unit/spec/locus-info/selfUtils.js +105 -12
- package/test/unit/spec/media/index.ts +31 -47
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/effectsState.js +39 -45
- package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
- package/test/unit/spec/meeting/index.js +2017 -742
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +115 -44
- package/test/unit/spec/meeting/utils.js +104 -171
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- 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 +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +439 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +31 -7
- package/test/unit/spec/members/index.js +104 -54
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
- package/test/unit/spec/multistream/receiveSlot.ts +6 -6
- package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
- package/test/unit/spec/multistream/remoteMedia.ts +10 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +58 -26
- package/test/unit/spec/reconnection-manager/index.js +102 -9
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +2 -1
- package/test/unit/spec/roap/request.ts +114 -0
- package/test/unit/spec/roap/turnDiscovery.ts +64 -45
- package/test/unit/spec/stats-analyzer/index.js +27 -22
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +54 -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/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/locus-info/controlsUtils.js +0 -102
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -1015
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
|
@@ -3,19 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/* globals navigator */
|
|
5
5
|
|
|
6
|
+
import {RoapMediaConnection, MultistreamRoapMediaConnection} from '@webex/internal-media-core';
|
|
6
7
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
7
|
-
import {
|
|
8
|
-
AUDIO_INPUT,
|
|
9
|
-
VIDEO_INPUT,
|
|
10
|
-
MEDIA_TRACK_CONSTRAINT,
|
|
11
|
-
} from '../constants';
|
|
8
|
+
import {AUDIO_INPUT, VIDEO_INPUT, MEDIA_TRACK_CONSTRAINT} from '../constants';
|
|
12
9
|
import Config from '../config';
|
|
13
10
|
import StaticConfig from '../common/config';
|
|
14
11
|
import MediaError from '../common/errors/media';
|
|
15
12
|
import BrowserDetection from '../common/browser-detection';
|
|
16
13
|
|
|
17
|
-
import {RoapMediaConnection, MultistreamRoapMediaConnection} from './internal-media-core-wrapper';
|
|
18
|
-
|
|
19
14
|
const {isBrowser} = BrowserDetection();
|
|
20
15
|
|
|
21
16
|
/**
|
|
@@ -46,7 +41,7 @@ const {isBrowser} = BrowserDetection();
|
|
|
46
41
|
* Handles the quirks of each browser.
|
|
47
42
|
* Extends and enhances adapter.js, i.e., the "media" file from the web client.
|
|
48
43
|
*/
|
|
49
|
-
const Media = {};
|
|
44
|
+
const Media: any = {};
|
|
50
45
|
|
|
51
46
|
/**
|
|
52
47
|
* @param {boolean} enabled
|
|
@@ -54,7 +49,7 @@ const Media = {};
|
|
|
54
49
|
* @returns {Boolean}
|
|
55
50
|
* @public
|
|
56
51
|
*/
|
|
57
|
-
Media.setLocalTrack = (enabled, track) => {
|
|
52
|
+
Media.setLocalTrack = (enabled: boolean, track: MediaStreamTrack) => {
|
|
58
53
|
if (track) {
|
|
59
54
|
track.enabled = enabled;
|
|
60
55
|
|
|
@@ -71,16 +66,16 @@ Media.setLocalTrack = (enabled, track) => {
|
|
|
71
66
|
* @param {Boolean} videoMuted
|
|
72
67
|
* @returns {Array} medias
|
|
73
68
|
*/
|
|
74
|
-
Media.generateLocalMedias = (mediaId, audioMuted, videoMuted) => {
|
|
69
|
+
Media.generateLocalMedias = (mediaId: string, audioMuted: boolean, videoMuted: boolean) => {
|
|
75
70
|
if (mediaId) {
|
|
76
71
|
return [
|
|
77
72
|
{
|
|
78
73
|
localSdp: JSON.stringify({
|
|
79
74
|
audioMuted,
|
|
80
|
-
videoMuted
|
|
75
|
+
videoMuted,
|
|
81
76
|
}),
|
|
82
|
-
mediaId
|
|
83
|
-
}
|
|
77
|
+
mediaId,
|
|
78
|
+
},
|
|
84
79
|
];
|
|
85
80
|
}
|
|
86
81
|
|
|
@@ -93,10 +88,8 @@ Media.generateLocalMedias = (mediaId, audioMuted, videoMuted) => {
|
|
|
93
88
|
* @param {Object} config SDK Configuration for meetings plugin
|
|
94
89
|
* @returns {Promise}
|
|
95
90
|
*/
|
|
96
|
-
Media.getLocalMedia = (options, config) => {
|
|
97
|
-
const {
|
|
98
|
-
sendAudio, sendVideo, sendShare, sharePreferences, isSharing
|
|
99
|
-
} = options;
|
|
91
|
+
Media.getLocalMedia = (options: any, config: object) => {
|
|
92
|
+
const {sendAudio, sendVideo, sendShare, sharePreferences, isSharing} = options;
|
|
100
93
|
|
|
101
94
|
if (sendAudio || sendVideo) {
|
|
102
95
|
return Media.getMedia(sendAudio, sendVideo, config);
|
|
@@ -107,7 +100,7 @@ Media.getLocalMedia = (options, config) => {
|
|
|
107
100
|
{
|
|
108
101
|
sendAudio: false,
|
|
109
102
|
sendShare: true,
|
|
110
|
-
sharePreferences
|
|
103
|
+
sharePreferences,
|
|
111
104
|
},
|
|
112
105
|
config
|
|
113
106
|
);
|
|
@@ -118,29 +111,43 @@ Media.getLocalMedia = (options, config) => {
|
|
|
118
111
|
|
|
119
112
|
/**
|
|
120
113
|
* creates a webrtc media connection with provided tracks and mediaDirection configuration
|
|
121
|
-
*
|
|
122
|
-
*
|
|
114
|
+
*
|
|
115
|
+
* @param {boolean} isMultistream
|
|
116
|
+
* @param {string} debugId string useful for debugging (will appear in media connection logs)
|
|
123
117
|
* @param {Object} options
|
|
124
|
-
* @param {
|
|
118
|
+
* @param {Object} [options.mediaProperties] only applicable to non-multistream connections, contains mediaDirection and local tracks:
|
|
119
|
+
* audioTrack, videoTrack and shareTrack
|
|
125
120
|
* @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections
|
|
126
121
|
* @param {boolean} [options.enableRtx] applicable only to non-multistream connections
|
|
127
122
|
* @param {boolean} [options.enableExtmap] applicable only to non-multistream connections
|
|
128
123
|
* @param {Object} [options.turnServerInfo]
|
|
129
124
|
* @returns {RoapMediaConnection}
|
|
130
125
|
*/
|
|
131
|
-
Media.createMediaConnection = (
|
|
132
|
-
isMultistream,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
126
|
+
Media.createMediaConnection = (
|
|
127
|
+
isMultistream: boolean,
|
|
128
|
+
debugId: string,
|
|
129
|
+
options: {
|
|
130
|
+
mediaProperties?: {
|
|
131
|
+
mediaDirection?: {
|
|
132
|
+
receiveAudio: boolean;
|
|
133
|
+
receiveVideo: boolean;
|
|
134
|
+
receiveShare: boolean;
|
|
135
|
+
};
|
|
136
|
+
audioTrack?: MediaStreamTrack;
|
|
137
|
+
videoTrack?: MediaStreamTrack;
|
|
138
|
+
shareTrack?: MediaStreamTrack;
|
|
139
|
+
};
|
|
140
|
+
remoteQualityLevel?: 'LOW' | 'MEDIUM' | 'HIGH';
|
|
141
|
+
enableRtx?: boolean;
|
|
142
|
+
enableExtmap?: boolean;
|
|
143
|
+
turnServerInfo?: {
|
|
144
|
+
url: string;
|
|
145
|
+
username: string;
|
|
146
|
+
password: string;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
) => {
|
|
150
|
+
const {mediaProperties, remoteQualityLevel, enableRtx, enableExtmap, turnServerInfo} = options;
|
|
144
151
|
|
|
145
152
|
const iceServers = [];
|
|
146
153
|
|
|
@@ -148,45 +155,58 @@ Media.createMediaConnection = (mediaProperties, {
|
|
|
148
155
|
iceServers.push({
|
|
149
156
|
urls: turnServerInfo.url,
|
|
150
157
|
username: turnServerInfo.username || '',
|
|
151
|
-
credential: turnServerInfo.password || ''
|
|
158
|
+
credential: turnServerInfo.password || '',
|
|
152
159
|
});
|
|
153
160
|
}
|
|
154
161
|
|
|
155
162
|
if (isMultistream) {
|
|
156
|
-
return new MultistreamRoapMediaConnection(
|
|
157
|
-
|
|
158
|
-
|
|
163
|
+
return new MultistreamRoapMediaConnection(
|
|
164
|
+
{
|
|
165
|
+
iceServers,
|
|
166
|
+
},
|
|
167
|
+
debugId
|
|
168
|
+
);
|
|
159
169
|
}
|
|
160
170
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
+
if (!mediaProperties) {
|
|
172
|
+
throw new Error('mediaProperties have to be provided for non-multistream media connections');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const {mediaDirection, audioTrack, videoTrack, shareTrack} = mediaProperties;
|
|
176
|
+
|
|
177
|
+
return new RoapMediaConnection(
|
|
178
|
+
{
|
|
179
|
+
iceServers,
|
|
180
|
+
skipInactiveTransceivers: false,
|
|
181
|
+
requireH264: true,
|
|
182
|
+
sdpMunging: {
|
|
183
|
+
convertPort9to0: false,
|
|
184
|
+
addContentSlides: true,
|
|
185
|
+
bandwidthLimits: {
|
|
186
|
+
audio: StaticConfig.meetings.bandwidth.audio,
|
|
187
|
+
video: StaticConfig.meetings.bandwidth.video,
|
|
188
|
+
},
|
|
189
|
+
startBitrate: StaticConfig.meetings.bandwidth.startBitrate,
|
|
190
|
+
periodicKeyframes: 20, // it's always been hardcoded in SDK so for now keeping it that way
|
|
191
|
+
disableExtmap: !enableExtmap,
|
|
192
|
+
disableRtx: !enableRtx, // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP
|
|
171
193
|
},
|
|
172
|
-
startBitrate: StaticConfig.meetings.bandwidth.startBitrate,
|
|
173
|
-
periodicKeyframes: 20, // it's always been hardcoded in SDK so for now keeping it that way
|
|
174
|
-
disableExtmap: !enableExtmap,
|
|
175
|
-
disableRtx: !enableRtx, // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP
|
|
176
|
-
}
|
|
177
|
-
}, {
|
|
178
|
-
send: {
|
|
179
|
-
audio: audioTrack,
|
|
180
|
-
video: videoTrack,
|
|
181
|
-
screenShareVideo: shareTrack
|
|
182
194
|
},
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
195
|
+
{
|
|
196
|
+
send: {
|
|
197
|
+
audio: audioTrack,
|
|
198
|
+
video: videoTrack,
|
|
199
|
+
screenShareVideo: shareTrack,
|
|
200
|
+
},
|
|
201
|
+
receive: {
|
|
202
|
+
audio: mediaDirection.receiveAudio,
|
|
203
|
+
video: mediaDirection.receiveVideo,
|
|
204
|
+
screenShareVideo: mediaDirection.receiveShare,
|
|
205
|
+
remoteQualityLevel,
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
debugId
|
|
209
|
+
);
|
|
190
210
|
};
|
|
191
211
|
|
|
192
212
|
/**
|
|
@@ -201,7 +221,17 @@ Media.createMediaConnection = (mediaProperties, {
|
|
|
201
221
|
* @param {Object} config SDK Configuration for meetings plugin
|
|
202
222
|
* @returns {Promise.<MediaStream>}
|
|
203
223
|
*/
|
|
204
|
-
Media.getDisplayMedia = (
|
|
224
|
+
Media.getDisplayMedia = (
|
|
225
|
+
options: {
|
|
226
|
+
sendAudio: boolean;
|
|
227
|
+
sendShare: boolean;
|
|
228
|
+
sharePreferences: {
|
|
229
|
+
shareConstraints: MediaTrackConstraints;
|
|
230
|
+
highFrameRate: any;
|
|
231
|
+
};
|
|
232
|
+
},
|
|
233
|
+
config: any = {}
|
|
234
|
+
) => {
|
|
205
235
|
// SDK screen share resolution settings from Webex.init
|
|
206
236
|
const customResolution = config.screenResolution || {};
|
|
207
237
|
// user defined screen share frame rate
|
|
@@ -210,38 +240,31 @@ Media.getDisplayMedia = (options, config = {}) => {
|
|
|
210
240
|
const hasSharePreferences = options.sharePreferences;
|
|
211
241
|
const hasCustomConstraints = hasSharePreferences && hasSharePreferences.shareConstraints;
|
|
212
242
|
const hasHighFrameRate = hasSharePreferences && hasSharePreferences.highFrameRate;
|
|
213
|
-
const {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
screenFrameRate,
|
|
218
|
-
aspectRatio
|
|
219
|
-
} = Config.meetings;
|
|
220
|
-
|
|
221
|
-
let shareConstraints = {
|
|
243
|
+
const {screenResolution, resolution, videoShareFrameRate, screenFrameRate, aspectRatio} =
|
|
244
|
+
Config.meetings;
|
|
245
|
+
|
|
246
|
+
let shareConstraints: any = {
|
|
222
247
|
cursor: MEDIA_TRACK_CONSTRAINT.CURSOR.AWLAYS,
|
|
223
|
-
aspectRatio
|
|
248
|
+
aspectRatio,
|
|
224
249
|
};
|
|
225
250
|
|
|
226
251
|
if (hasCustomConstraints) {
|
|
227
252
|
shareConstraints = hasSharePreferences.shareConstraints;
|
|
228
|
-
}
|
|
229
|
-
else if (hasHighFrameRate) {
|
|
253
|
+
} else if (hasHighFrameRate) {
|
|
230
254
|
shareConstraints = {
|
|
231
255
|
...shareConstraints,
|
|
232
256
|
frameRate: videoShareFrameRate,
|
|
233
257
|
height: resolution.idealHeight,
|
|
234
258
|
width: resolution.idealWidth,
|
|
235
|
-
...config.resolution
|
|
259
|
+
...config.resolution,
|
|
236
260
|
};
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
261
|
+
} else {
|
|
239
262
|
shareConstraints = {
|
|
240
263
|
...shareConstraints,
|
|
241
264
|
frameRate: customShareFrameRate || screenFrameRate,
|
|
242
265
|
height: customResolution.idealHeight || screenResolution.idealHeight,
|
|
243
266
|
width: customResolution.idealWidth || screenResolution.idealWidth,
|
|
244
|
-
...config.screenResolution
|
|
267
|
+
...config.screenResolution,
|
|
245
268
|
};
|
|
246
269
|
}
|
|
247
270
|
|
|
@@ -252,15 +275,14 @@ Media.getDisplayMedia = (options, config = {}) => {
|
|
|
252
275
|
// to have higher quality, and for developers to control the values
|
|
253
276
|
// eventually we may have to add the same functionality to chrome, OR conversely, get to with firefox
|
|
254
277
|
|
|
255
|
-
|
|
256
278
|
if (isBrowser('firefox')) {
|
|
257
|
-
const mediaConfig = {
|
|
279
|
+
const mediaConfig: any = {
|
|
258
280
|
audio: options.sendAudio,
|
|
259
|
-
video: options.sendShare
|
|
281
|
+
video: options.sendShare,
|
|
260
282
|
};
|
|
261
283
|
|
|
262
|
-
|
|
263
|
-
|
|
284
|
+
return navigator.mediaDevices
|
|
285
|
+
.getDisplayMedia({audio: options.sendAudio, video: mediaConfig})
|
|
264
286
|
.then((stream) => {
|
|
265
287
|
if (options.sendShare && stream.getVideoTracks().length > 0) {
|
|
266
288
|
// Firefox has a bug with the spec where changing in the height and width only happens
|
|
@@ -269,12 +291,11 @@ Media.getDisplayMedia = (options, config = {}) => {
|
|
|
269
291
|
stream.getVideoTracks()[0].applyConstraints(shareConstraints);
|
|
270
292
|
}
|
|
271
293
|
|
|
272
|
-
|
|
273
294
|
return stream;
|
|
274
295
|
});
|
|
275
296
|
}
|
|
276
297
|
|
|
277
|
-
const getDisplayMediaParams = {video: options.sendShare ? shareConstraints : false};
|
|
298
|
+
const getDisplayMediaParams: any = {video: options.sendShare ? shareConstraints : false};
|
|
278
299
|
|
|
279
300
|
// safari doesn't support sending screen share audio
|
|
280
301
|
// https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia
|
|
@@ -292,37 +313,39 @@ Media.getDisplayMedia = (options, config = {}) => {
|
|
|
292
313
|
* @param {Object} config SDK Configuration for meetings plugin
|
|
293
314
|
* @returns {Object} {streams}
|
|
294
315
|
*/
|
|
295
|
-
Media.getMedia = (audio, video, config) => {
|
|
316
|
+
Media.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {
|
|
296
317
|
const defaultWidth = {ideal: config.resolution.idealWidth, max: config.resolution.maxWidth};
|
|
297
318
|
const defaultHeight = {ideal: config.resolution.idealHeight, max: config.resolution.maxHeight};
|
|
298
319
|
const mediaConfig = {
|
|
299
320
|
audio,
|
|
300
321
|
// TODO: Remove temporary workaround once Firefox fixes low constraint issues
|
|
301
322
|
// eslint-disable-next-line no-nested-ternary
|
|
302
|
-
video: video
|
|
303
|
-
isBrowser('firefox') && video.width && video.width.max === 320
|
|
304
|
-
{
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
323
|
+
video: video
|
|
324
|
+
? isBrowser('firefox') && video.width && video.width.max === 320
|
|
325
|
+
? {
|
|
326
|
+
deviceId: video.deviceId ? video.deviceId : undefined,
|
|
327
|
+
width: 320,
|
|
328
|
+
height: 180,
|
|
329
|
+
frameRate: video.frameRate ? video.frameRate : undefined,
|
|
330
|
+
facingMode: video.facingMode ? video.facingMode : undefined,
|
|
331
|
+
}
|
|
332
|
+
: {
|
|
333
|
+
deviceId: video.deviceId ? video.deviceId : undefined,
|
|
334
|
+
width: video.width ? video.width : defaultWidth,
|
|
335
|
+
height: video.height ? video.height : defaultHeight,
|
|
336
|
+
frameRate: video.frameRate ? video.frameRate : undefined,
|
|
337
|
+
facingMode: video.facingMode ? video.facingMode : undefined,
|
|
338
|
+
}
|
|
339
|
+
: false,
|
|
340
|
+
fake: process.env.NODE_ENV === 'test', // Special case to get fake media for Firefox browser for testing
|
|
316
341
|
};
|
|
317
342
|
|
|
318
|
-
return navigator.mediaDevices
|
|
319
|
-
.getUserMedia
|
|
320
|
-
.catch((err) => {
|
|
321
|
-
const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';
|
|
343
|
+
return navigator.mediaDevices.getUserMedia(mediaConfig).catch((err) => {
|
|
344
|
+
const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';
|
|
322
345
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
346
|
+
LoggerProxy.logger.error(`${logPath} failed - ${err} (${err.constraint})`);
|
|
347
|
+
throw err;
|
|
348
|
+
});
|
|
326
349
|
};
|
|
327
350
|
|
|
328
351
|
/**
|
|
@@ -337,24 +360,24 @@ Media.getMedia = (audio, video, config) => {
|
|
|
337
360
|
* sendVideo: true/false
|
|
338
361
|
*}
|
|
339
362
|
*/
|
|
340
|
-
Media.getSupportedDevice = ({sendAudio, sendVideo}) =>
|
|
363
|
+
Media.getSupportedDevice = ({sendAudio, sendVideo}: {sendAudio: boolean; sendVideo: boolean}) =>
|
|
341
364
|
Promise.resolve().then(() => {
|
|
342
365
|
if (!navigator.mediaDevices || navigator.mediaDevices.enumerateDevices === undefined) {
|
|
343
366
|
return {
|
|
344
367
|
sendAudio: false,
|
|
345
|
-
sendVideo: false
|
|
368
|
+
sendVideo: false,
|
|
346
369
|
};
|
|
347
370
|
}
|
|
348
371
|
|
|
349
372
|
return navigator.mediaDevices.enumerateDevices().then((devices) => {
|
|
350
373
|
const supported = {
|
|
351
374
|
audio: devices.filter((device) => device.kind === AUDIO_INPUT).length > 0,
|
|
352
|
-
video: devices.filter((device) => device.kind === VIDEO_INPUT).length > 0
|
|
375
|
+
video: devices.filter((device) => device.kind === VIDEO_INPUT).length > 0,
|
|
353
376
|
};
|
|
354
377
|
|
|
355
378
|
return {
|
|
356
379
|
sendAudio: supported.audio && sendAudio,
|
|
357
|
-
sendVideo: supported.video && sendVideo
|
|
380
|
+
sendVideo: supported.video && sendVideo,
|
|
358
381
|
};
|
|
359
382
|
});
|
|
360
383
|
});
|
|
@@ -384,7 +407,7 @@ Media.toggleStream = () => {};
|
|
|
384
407
|
* @param {MediaTrack} track A media stream
|
|
385
408
|
* @returns {null}
|
|
386
409
|
*/
|
|
387
|
-
Media.stopTracks = (track) => {
|
|
410
|
+
Media.stopTracks = (track: any) => {
|
|
388
411
|
if (!track) {
|
|
389
412
|
return Promise.resolve();
|
|
390
413
|
}
|
|
@@ -393,9 +416,10 @@ Media.stopTracks = (track) => {
|
|
|
393
416
|
if (track && track.stop) {
|
|
394
417
|
try {
|
|
395
418
|
track.stop();
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
|
|
419
|
+
} catch (e) {
|
|
420
|
+
LoggerProxy.logger.error(
|
|
421
|
+
`Media:index#stopTracks --> Unable to stop the track with state ${track.readyState}, error: ${e}`
|
|
422
|
+
);
|
|
399
423
|
}
|
|
400
424
|
}
|
|
401
425
|
});
|
|
@@ -408,8 +432,10 @@ Media.stopTracks = (track) => {
|
|
|
408
432
|
* @returns {null}
|
|
409
433
|
* @deprecated after v1.89.3
|
|
410
434
|
*/
|
|
411
|
-
Media.stopStream = (stream) => {
|
|
412
|
-
LoggerProxy.logger.warn(
|
|
435
|
+
Media.stopStream = (stream: any) => {
|
|
436
|
+
LoggerProxy.logger.warn(
|
|
437
|
+
'Media:index#stopStream --> [DEPRECATION WARNING]: stopStream has been deprecated after v1.89.3'
|
|
438
|
+
);
|
|
413
439
|
if (!stream) {
|
|
414
440
|
return Promise.resolve();
|
|
415
441
|
}
|
|
@@ -424,8 +450,7 @@ Media.stopStream = (stream) => {
|
|
|
424
450
|
stream.getTracks().forEach((track) => {
|
|
425
451
|
track.stop();
|
|
426
452
|
});
|
|
427
|
-
}
|
|
428
|
-
else if (stream.stop) {
|
|
453
|
+
} else if (stream.stop) {
|
|
429
454
|
stream.stop();
|
|
430
455
|
}
|
|
431
456
|
});
|
|
@@ -447,13 +472,38 @@ Media.stopStream = (stream) => {
|
|
|
447
472
|
* @param {Object} config SDK Config
|
|
448
473
|
* @returns {Array} [localStream, shareStream]
|
|
449
474
|
*/
|
|
450
|
-
Media.getUserMedia = (
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
475
|
+
Media.getUserMedia = (
|
|
476
|
+
mediaSetting: {
|
|
477
|
+
sendAudio: object;
|
|
478
|
+
sendVideo: object;
|
|
479
|
+
sendShare: object;
|
|
480
|
+
isSharing: object;
|
|
481
|
+
},
|
|
482
|
+
audioVideo: {
|
|
483
|
+
audio: object;
|
|
484
|
+
video: object;
|
|
485
|
+
},
|
|
486
|
+
sharePreferences: {
|
|
487
|
+
shareConstraints: object;
|
|
488
|
+
highFrameRate: boolean;
|
|
489
|
+
},
|
|
490
|
+
config: object
|
|
491
|
+
) =>
|
|
492
|
+
Media.getLocalMedia(
|
|
493
|
+
{
|
|
494
|
+
sendAudio: mediaSetting.sendAudio ? audioVideo.audio || mediaSetting.sendAudio : false,
|
|
495
|
+
sendVideo: mediaSetting.sendVideo ? audioVideo.video || mediaSetting.sendVideo : false,
|
|
496
|
+
},
|
|
497
|
+
config
|
|
498
|
+
).then((localStream) =>
|
|
499
|
+
Media.getLocalMedia(
|
|
500
|
+
{
|
|
501
|
+
sendShare: mediaSetting.sendShare,
|
|
502
|
+
isSharing: mediaSetting.isSharing,
|
|
503
|
+
sharePreferences,
|
|
504
|
+
},
|
|
505
|
+
config
|
|
506
|
+
).then((shareStream) => [localStream, shareStream])
|
|
507
|
+
);
|
|
458
508
|
|
|
459
509
|
export default Media;
|