@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
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {ConnectionState, Event} from '@webex/internal-media-core';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
MEETINGS,
|
|
5
|
-
PC_BAIL_TIMEOUT,
|
|
6
|
-
QUALITY_LEVELS
|
|
7
|
-
} from '../constants';
|
|
3
|
+
import {MEETINGS, PC_BAIL_TIMEOUT, QUALITY_LEVELS} from '../constants';
|
|
8
4
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
9
5
|
|
|
10
6
|
/**
|
|
11
7
|
* @class MediaProperties
|
|
12
8
|
*/
|
|
13
9
|
export default class MediaProperties {
|
|
10
|
+
audioTrack: any;
|
|
11
|
+
localQualityLevel: any;
|
|
12
|
+
mediaDirection: any;
|
|
13
|
+
mediaSettings: any;
|
|
14
|
+
webrtcMediaConnection: any;
|
|
15
|
+
remoteAudioTrack: any;
|
|
16
|
+
remoteQualityLevel: any;
|
|
17
|
+
remoteShare: any;
|
|
18
|
+
remoteVideoTrack: any;
|
|
19
|
+
shareTrack: any;
|
|
20
|
+
videoDeviceId: any;
|
|
21
|
+
videoTrack: any;
|
|
14
22
|
namespace = MEETINGS;
|
|
15
23
|
|
|
16
24
|
/**
|
|
17
25
|
* @param {Object} [options] -- to auto construct
|
|
18
26
|
* @returns {MediaProperties}
|
|
19
27
|
*/
|
|
20
|
-
constructor(options = {}) {
|
|
28
|
+
constructor(options: any = {}) {
|
|
21
29
|
this.webrtcMediaConnection = null;
|
|
22
30
|
this.mediaDirection = options.mediaDirection;
|
|
23
31
|
this.videoTrack = options.videoTrack;
|
|
@@ -81,7 +89,7 @@ export default class MediaProperties {
|
|
|
81
89
|
* @param {MediaTrack} remoteAudioTrack MediaTrack to save
|
|
82
90
|
* @returns {void}
|
|
83
91
|
*/
|
|
84
|
-
setRemoteAudioTrack(remoteAudioTrack) {
|
|
92
|
+
setRemoteAudioTrack(remoteAudioTrack: any) {
|
|
85
93
|
this.remoteAudioTrack = remoteAudioTrack;
|
|
86
94
|
}
|
|
87
95
|
|
|
@@ -90,7 +98,7 @@ export default class MediaProperties {
|
|
|
90
98
|
* @param {MediaTrack} remoteVideoTrack MediaTrack to save
|
|
91
99
|
* @returns {void}
|
|
92
100
|
*/
|
|
93
|
-
setRemoteVideoTrack(remoteVideoTrack) {
|
|
101
|
+
setRemoteVideoTrack(remoteVideoTrack: any) {
|
|
94
102
|
this.remoteVideoTrack = remoteVideoTrack;
|
|
95
103
|
}
|
|
96
104
|
|
|
@@ -99,7 +107,7 @@ export default class MediaProperties {
|
|
|
99
107
|
* @param {string} deviceId Preferred video input device
|
|
100
108
|
* @returns {void}
|
|
101
109
|
*/
|
|
102
|
-
setVideoDeviceId(deviceId) {
|
|
110
|
+
setVideoDeviceId(deviceId: string) {
|
|
103
111
|
this.videoDeviceId = deviceId;
|
|
104
112
|
}
|
|
105
113
|
|
|
@@ -125,7 +133,9 @@ export default class MediaProperties {
|
|
|
125
133
|
* @returns {void}
|
|
126
134
|
*/
|
|
127
135
|
unsetRemoteStream() {
|
|
128
|
-
LoggerProxy.logger.warn(
|
|
136
|
+
LoggerProxy.logger.warn(
|
|
137
|
+
'Media:properties#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3 (use unsetRemoteTracks instead)'
|
|
138
|
+
);
|
|
129
139
|
// unsets audio and video only
|
|
130
140
|
this.unsetRemoteMedia();
|
|
131
141
|
}
|
|
@@ -154,7 +164,9 @@ export default class MediaProperties {
|
|
|
154
164
|
* @returns {void}
|
|
155
165
|
*/
|
|
156
166
|
unsetRemoteStreams() {
|
|
157
|
-
LoggerProxy.logger.warn(
|
|
167
|
+
LoggerProxy.logger.warn(
|
|
168
|
+
'Media:properties#unsetRemoteStreams --> [DEPRECATION WARNING]: unsetRemoteStreams has been deprecated after v1.89.3 (use unsetRemoteTracks instead)'
|
|
169
|
+
);
|
|
158
170
|
this.unsetRemoteStream();
|
|
159
171
|
this.unsetRemoteShare();
|
|
160
172
|
}
|
|
@@ -179,7 +191,9 @@ export default class MediaProperties {
|
|
|
179
191
|
* @returns {void}
|
|
180
192
|
*/
|
|
181
193
|
unsetMediaStreams() {
|
|
182
|
-
LoggerProxy.logger.warn(
|
|
194
|
+
LoggerProxy.logger.warn(
|
|
195
|
+
'Media:properties#unsetMediaStreams --> [DEPRECATION WARNING]: unsetMediaStreams has been deprecated after v1.89.3 (use unsetMediaTracks instead)'
|
|
196
|
+
);
|
|
183
197
|
this.unsetLocalVideoTrack();
|
|
184
198
|
this.unsetRemoteStream();
|
|
185
199
|
}
|
|
@@ -199,33 +213,34 @@ export default class MediaProperties {
|
|
|
199
213
|
* @returns {Promise<void>}
|
|
200
214
|
*/
|
|
201
215
|
waitForMediaConnectionConnected() {
|
|
202
|
-
const isConnected = () =>
|
|
203
|
-
this.webrtcMediaConnection.getConnectionState() ===
|
|
204
|
-
);
|
|
216
|
+
const isConnected = () =>
|
|
217
|
+
this.webrtcMediaConnection.getConnectionState() === ConnectionState.Connected;
|
|
205
218
|
|
|
206
219
|
if (isConnected()) {
|
|
207
220
|
return Promise.resolve();
|
|
208
221
|
}
|
|
209
222
|
|
|
210
|
-
return new Promise((resolve, reject) => {
|
|
223
|
+
return new Promise<void>((resolve, reject) => {
|
|
211
224
|
let timer;
|
|
212
225
|
|
|
213
226
|
const connectionStateListener = () => {
|
|
214
|
-
LoggerProxy.logger.log(
|
|
227
|
+
LoggerProxy.logger.log(
|
|
228
|
+
`Media:properties#waitForMediaConnectionConnected --> connection state: ${this.webrtcMediaConnection.getConnectionState()}`
|
|
229
|
+
);
|
|
215
230
|
|
|
216
231
|
if (isConnected()) {
|
|
217
232
|
clearTimeout(timer);
|
|
218
|
-
this.webrtcMediaConnection.off(
|
|
233
|
+
this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);
|
|
219
234
|
resolve();
|
|
220
235
|
}
|
|
221
236
|
};
|
|
222
237
|
|
|
223
238
|
timer = setTimeout(() => {
|
|
224
|
-
this.webrtcMediaConnection.off(
|
|
239
|
+
this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);
|
|
225
240
|
reject();
|
|
226
241
|
}, PC_BAIL_TIMEOUT);
|
|
227
242
|
|
|
228
|
-
this.webrtcMediaConnection.on(
|
|
243
|
+
this.webrtcMediaConnection.on(Event.CONNECTION_STATE_CHANGED, connectionStateListener);
|
|
229
244
|
});
|
|
230
245
|
}
|
|
231
246
|
|
|
@@ -245,9 +260,10 @@ export default class MediaProperties {
|
|
|
245
260
|
const statsResult = await this.webrtcMediaConnection.getStats();
|
|
246
261
|
|
|
247
262
|
statsResult.forEach((report) => allStatsReports.push(report));
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
|
|
263
|
+
} catch (error) {
|
|
264
|
+
LoggerProxy.logger.warn(
|
|
265
|
+
`Media:properties#getCurrentConnectionType --> getStats() failed: ${error}`
|
|
266
|
+
);
|
|
251
267
|
}
|
|
252
268
|
|
|
253
269
|
const successfulCandidatePairs = allStatsReports.filter(
|
|
@@ -258,10 +274,14 @@ export default class MediaProperties {
|
|
|
258
274
|
|
|
259
275
|
// all of the successful pairs should have the same connection type, so just return the type for the first one
|
|
260
276
|
successfulCandidatePairs.some((pair) => {
|
|
261
|
-
const localCandidate = allStatsReports.find(
|
|
277
|
+
const localCandidate = allStatsReports.find(
|
|
278
|
+
(report) => report.type === 'local-candidate' && report.id === pair.localCandidateId
|
|
279
|
+
);
|
|
262
280
|
|
|
263
281
|
if (localCandidate === undefined) {
|
|
264
|
-
LoggerProxy.logger.warn(
|
|
282
|
+
LoggerProxy.logger.warn(
|
|
283
|
+
`Media:properties#getCurrentConnectionType --> failed to find local candidate "${pair.localCandidateId}" in getStats() results`
|
|
284
|
+
);
|
|
265
285
|
|
|
266
286
|
return false;
|
|
267
287
|
}
|
|
@@ -270,8 +290,7 @@ export default class MediaProperties {
|
|
|
270
290
|
|
|
271
291
|
if (localCandidate.relayProtocol) {
|
|
272
292
|
connectionType = `TURN-${localCandidate.relayProtocol.toUpperCase()}`;
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
293
|
+
} else {
|
|
275
294
|
connectionType = localCandidate.protocol?.toUpperCase(); // it will be UDP or TCP
|
|
276
295
|
}
|
|
277
296
|
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
4
4
|
|
|
5
|
-
const MediaUtil = {};
|
|
5
|
+
const MediaUtil: any = {};
|
|
6
6
|
|
|
7
7
|
MediaUtil.createMediaStream = (tracks) => {
|
|
8
8
|
if (!tracks) {
|
|
9
|
-
LoggerProxy.logger.error(
|
|
9
|
+
LoggerProxy.logger.error("Media:util#createMediaStream --> Tracks don't exist");
|
|
10
10
|
}
|
|
11
11
|
const filtredTracks = tracks.filter((element) => !!element);
|
|
12
12
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
export default {
|
|
3
2
|
intervals: [
|
|
4
3
|
{
|
|
@@ -10,7 +9,7 @@ export default {
|
|
|
10
9
|
isMain: true,
|
|
11
10
|
mariFecEnabled: false,
|
|
12
11
|
mariQosEnabled: false,
|
|
13
|
-
multistreamEnabled: false
|
|
12
|
+
multistreamEnabled: false,
|
|
14
13
|
},
|
|
15
14
|
dtlsBitrate: 0,
|
|
16
15
|
dtlsPackets: 0,
|
|
@@ -30,7 +29,7 @@ export default {
|
|
|
30
29
|
srtpUnprotectErrors: 0,
|
|
31
30
|
stunBitrate: 0,
|
|
32
31
|
stunPackets: 0,
|
|
33
|
-
transportType: 'UDP'
|
|
32
|
+
transportType: 'UDP',
|
|
34
33
|
},
|
|
35
34
|
streams: [
|
|
36
35
|
{
|
|
@@ -50,11 +49,11 @@ export default {
|
|
|
50
49
|
maxRtpJitter: 0,
|
|
51
50
|
meanRtpJitter: 0,
|
|
52
51
|
rtpPackets: 0,
|
|
53
|
-
ssci: 0
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
}
|
|
52
|
+
ssci: 0,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
58
57
|
],
|
|
59
58
|
audioTransmit: [
|
|
60
59
|
{
|
|
@@ -65,7 +64,7 @@ export default {
|
|
|
65
64
|
isMain: true,
|
|
66
65
|
mariFecEnabled: false,
|
|
67
66
|
mariQosEnabled: false,
|
|
68
|
-
multistreamEnabled: false
|
|
67
|
+
multistreamEnabled: false,
|
|
69
68
|
},
|
|
70
69
|
dtlsBitrate: 0,
|
|
71
70
|
dtlsPackets: 0,
|
|
@@ -85,7 +84,7 @@ export default {
|
|
|
85
84
|
rtxPackets: 0,
|
|
86
85
|
stunBitrate: 0,
|
|
87
86
|
stunPackets: 0,
|
|
88
|
-
transportType: 'UDP'
|
|
87
|
+
transportType: 'UDP',
|
|
89
88
|
},
|
|
90
89
|
streams: [
|
|
91
90
|
{
|
|
@@ -96,11 +95,11 @@ export default {
|
|
|
96
95
|
rtpPackets: 0,
|
|
97
96
|
ssci: 0,
|
|
98
97
|
transmittedBitrate: 0,
|
|
99
|
-
transmittedFrameRate: 0
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
]
|
|
103
|
-
}
|
|
98
|
+
transmittedFrameRate: 0,
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
},
|
|
104
103
|
],
|
|
105
104
|
intervalMetadata: {
|
|
106
105
|
peerReflexiveIP: '0.0.0.0',
|
|
@@ -108,7 +107,7 @@ export default {
|
|
|
108
107
|
processAverageCPU: 0,
|
|
109
108
|
processMaximumCPU: 0,
|
|
110
109
|
systemAverageCPU: 0,
|
|
111
|
-
systemMaximumCPU: 0
|
|
110
|
+
systemMaximumCPU: 0,
|
|
112
111
|
},
|
|
113
112
|
intervalNumber: 0,
|
|
114
113
|
videoReceive: [
|
|
@@ -119,7 +118,7 @@ export default {
|
|
|
119
118
|
isMain: true, // Not avaliable
|
|
120
119
|
mariFecEnabled: true, // Not avaliable
|
|
121
120
|
mariQosEnabled: true, // Not avaliable
|
|
122
|
-
multistreamEnabled: true// Not avaliable
|
|
121
|
+
multistreamEnabled: true, // Not avaliable
|
|
123
122
|
},
|
|
124
123
|
dtlsBitrate: 0, // Not avaliable
|
|
125
124
|
dtlsPackets: 0, // Not avaliable
|
|
@@ -139,7 +138,7 @@ export default {
|
|
|
139
138
|
srtpUnprotectErrors: 0, // Not avaliable
|
|
140
139
|
stunBitrate: 0, // Not avaliable
|
|
141
140
|
stunPackets: 0, // Not avaliable
|
|
142
|
-
transportType: 'UDP'
|
|
141
|
+
transportType: 'UDP',
|
|
143
142
|
},
|
|
144
143
|
streams: [
|
|
145
144
|
{
|
|
@@ -158,7 +157,7 @@ export default {
|
|
|
158
157
|
rtpEndToEndLost: 0,
|
|
159
158
|
rtpJitter: 0,
|
|
160
159
|
rtpPackets: 0,
|
|
161
|
-
ssci: 0// Not avaliable
|
|
160
|
+
ssci: 0, // Not avaliable
|
|
162
161
|
},
|
|
163
162
|
h264CodecProfile: 'BP',
|
|
164
163
|
isActiveSpeaker: true,
|
|
@@ -171,9 +170,9 @@ export default {
|
|
|
171
170
|
receivedKeyFramesUnknown: 0,
|
|
172
171
|
receivedWidth: 0,
|
|
173
172
|
requestedFrameSize: 0,
|
|
174
|
-
requestedKeyFrames: 0
|
|
175
|
-
}
|
|
176
|
-
]
|
|
173
|
+
requestedKeyFrames: 0,
|
|
174
|
+
},
|
|
175
|
+
],
|
|
177
176
|
},
|
|
178
177
|
{
|
|
179
178
|
common: {
|
|
@@ -182,7 +181,7 @@ export default {
|
|
|
182
181
|
isMain: false, // Not avaliable
|
|
183
182
|
mariFecEnabled: true, // Not avaliable
|
|
184
183
|
mariQosEnabled: true, // Not avaliable
|
|
185
|
-
multistreamEnabled: true// Not avaliable
|
|
184
|
+
multistreamEnabled: true, // Not avaliable
|
|
186
185
|
},
|
|
187
186
|
dtlsBitrate: 0, // Not avaliable
|
|
188
187
|
dtlsPackets: 0, // Not avaliable
|
|
@@ -202,7 +201,7 @@ export default {
|
|
|
202
201
|
srtpUnprotectErrors: 0, // Not avaliable
|
|
203
202
|
stunBitrate: 0, // Not avaliable
|
|
204
203
|
stunPackets: 0, // Not avaliable
|
|
205
|
-
transportType: 'UDP'
|
|
204
|
+
transportType: 'UDP',
|
|
206
205
|
},
|
|
207
206
|
streams: [
|
|
208
207
|
{
|
|
@@ -221,7 +220,7 @@ export default {
|
|
|
221
220
|
rtpEndToEndLost: 0,
|
|
222
221
|
rtpJitter: 0,
|
|
223
222
|
rtpPackets: 0,
|
|
224
|
-
ssci: 0// Not avaliable
|
|
223
|
+
ssci: 0, // Not avaliable
|
|
225
224
|
},
|
|
226
225
|
h264CodecProfile: 'BP',
|
|
227
226
|
isActiveSpeaker: true,
|
|
@@ -234,10 +233,10 @@ export default {
|
|
|
234
233
|
receivedKeyFramesUnknown: 0,
|
|
235
234
|
receivedWidth: 0,
|
|
236
235
|
requestedFrameSize: 0,
|
|
237
|
-
requestedKeyFrames: 0
|
|
238
|
-
}
|
|
239
|
-
]
|
|
240
|
-
}
|
|
236
|
+
requestedKeyFrames: 0,
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
},
|
|
241
240
|
],
|
|
242
241
|
videoTransmit: [
|
|
243
242
|
{
|
|
@@ -248,7 +247,7 @@ export default {
|
|
|
248
247
|
isMain: true,
|
|
249
248
|
mariFecEnabled: false, // Not avaliable
|
|
250
249
|
mariQosEnabled: false, // Not avaliable
|
|
251
|
-
multistreamEnabled: false// Not avaliable
|
|
250
|
+
multistreamEnabled: false, // Not avaliable
|
|
252
251
|
},
|
|
253
252
|
dtlsBitrate: 0, // Not avaliable
|
|
254
253
|
dtlsPackets: 0, // Not avaliable
|
|
@@ -268,7 +267,7 @@ export default {
|
|
|
268
267
|
rtxPackets: 0, // Dont have access to it
|
|
269
268
|
stunBitrate: 0, // Dont have access to it
|
|
270
269
|
stunPackets: 0, // Dont have access to it
|
|
271
|
-
transportType: 'UDP' // TODO: need to calculate
|
|
270
|
+
transportType: 'UDP', // TODO: need to calculate
|
|
272
271
|
},
|
|
273
272
|
streams: [
|
|
274
273
|
{
|
|
@@ -280,7 +279,7 @@ export default {
|
|
|
280
279
|
rtpPackets: 0, // same as rtp packets
|
|
281
280
|
ssci: 0,
|
|
282
281
|
transmittedBitrate: 0, // TODO: get in the candidate pair
|
|
283
|
-
transmittedFrameRate: 0 // TODO: from track info
|
|
282
|
+
transmittedFrameRate: 0, // TODO: from track info
|
|
284
283
|
},
|
|
285
284
|
h264CodecProfile: 'BP', // TODO: from localSDP
|
|
286
285
|
isAvatar: false, // Not Avaliable
|
|
@@ -304,11 +303,12 @@ export default {
|
|
|
304
303
|
transmittedKeyFramesSceneChange: 0, // Not Avaliable
|
|
305
304
|
transmittedKeyFramesStartup: 0, // Not Avaliable
|
|
306
305
|
transmittedKeyFramesUnknown: 0, // Not Avaliable
|
|
307
|
-
transmittedWidth: 0
|
|
308
|
-
}
|
|
309
|
-
]
|
|
306
|
+
transmittedWidth: 0,
|
|
307
|
+
},
|
|
308
|
+
],
|
|
310
309
|
},
|
|
311
|
-
{
|
|
310
|
+
{
|
|
311
|
+
// sceen sharing
|
|
312
312
|
common: {
|
|
313
313
|
availableBitrate: 0, // Not avaliable currently hardcoded
|
|
314
314
|
common: {
|
|
@@ -316,7 +316,7 @@ export default {
|
|
|
316
316
|
isMain: false,
|
|
317
317
|
mariFecEnabled: false, // Not avaliable
|
|
318
318
|
mariQosEnabled: false, // Not avaliable
|
|
319
|
-
multistreamEnabled: false// Not avaliable
|
|
319
|
+
multistreamEnabled: false, // Not avaliable
|
|
320
320
|
},
|
|
321
321
|
dtlsBitrate: 0, // Not avaliable
|
|
322
322
|
dtlsPackets: 0, // Not avaliable
|
|
@@ -336,7 +336,7 @@ export default {
|
|
|
336
336
|
rtxPackets: 0, // Dont have access to it
|
|
337
337
|
stunBitrate: 0, // Dont have access to it
|
|
338
338
|
stunPackets: 0, // Dont have access to it
|
|
339
|
-
transportType: 'UDP' // TODO: need to calculate
|
|
339
|
+
transportType: 'UDP', // TODO: need to calculate
|
|
340
340
|
},
|
|
341
341
|
streams: [
|
|
342
342
|
{
|
|
@@ -348,7 +348,7 @@ export default {
|
|
|
348
348
|
rtpPackets: 0, // same as rtp packets
|
|
349
349
|
ssci: 0,
|
|
350
350
|
transmittedBitrate: 0, // TODO: get in the candidate pair
|
|
351
|
-
transmittedFrameRate: 0 // TODO: from track info
|
|
351
|
+
transmittedFrameRate: 0, // TODO: from track info
|
|
352
352
|
},
|
|
353
353
|
h264CodecProfile: 'BP', // TODO: from localSDP
|
|
354
354
|
isAvatar: false, // Not Avaliable
|
|
@@ -372,11 +372,11 @@ export default {
|
|
|
372
372
|
transmittedKeyFramesSceneChange: 0, // Not Avaliable
|
|
373
373
|
transmittedKeyFramesStartup: 0, // Not Avaliable
|
|
374
374
|
transmittedKeyFramesUnknown: 0, // Not Avaliable
|
|
375
|
-
transmittedWidth: 0
|
|
376
|
-
}
|
|
377
|
-
]
|
|
378
|
-
}
|
|
379
|
-
]
|
|
380
|
-
}
|
|
381
|
-
]
|
|
375
|
+
transmittedWidth: 0,
|
|
376
|
+
},
|
|
377
|
+
],
|
|
378
|
+
},
|
|
379
|
+
],
|
|
380
|
+
},
|
|
381
|
+
],
|
|
382
382
|
};
|
|
@@ -7,22 +7,29 @@ import MediaUtil from '../media/util';
|
|
|
7
7
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
8
8
|
import {BNR_STATUS} from '../constants';
|
|
9
9
|
|
|
10
|
-
const createEffectsState = (type) => {
|
|
11
|
-
LoggerProxy.logger.info(
|
|
10
|
+
const createEffectsState = (type: any) => {
|
|
11
|
+
LoggerProxy.logger.info(
|
|
12
|
+
`Meeting:effectState#createEffectsState --> creating effectsState for effect ${type}`
|
|
13
|
+
);
|
|
12
14
|
|
|
13
15
|
return new EffectsState(type);
|
|
14
16
|
};
|
|
15
17
|
|
|
16
18
|
/* The purpose of this class is to manage the effects state(for eg., BNR).
|
|
17
|
-
*/
|
|
19
|
+
*/
|
|
18
20
|
class EffectsState {
|
|
19
|
-
|
|
21
|
+
effectType: any;
|
|
22
|
+
pendingPromiseReject: any;
|
|
23
|
+
pendingPromiseResolve: any;
|
|
24
|
+
state: any;
|
|
25
|
+
|
|
26
|
+
constructor(type: any) {
|
|
20
27
|
this.effectType = type;
|
|
21
28
|
this.state = {
|
|
22
29
|
bnr: {
|
|
23
|
-
enabled: BNR_STATUS.NOT_ENABLED
|
|
30
|
+
enabled: BNR_STATUS.NOT_ENABLED,
|
|
24
31
|
},
|
|
25
|
-
callToWebrtcBNRInProgress: false
|
|
32
|
+
callToWebrtcBNRInProgress: false,
|
|
26
33
|
};
|
|
27
34
|
// these 2 hold the resolve, reject methods for the promise we returned to the client in last handleClientRequest() call
|
|
28
35
|
this.pendingPromiseResolve = null;
|
|
@@ -35,7 +42,7 @@ class EffectsState {
|
|
|
35
42
|
* @param {Object} [meeting] the meeting object
|
|
36
43
|
* @returns {Promise}
|
|
37
44
|
*/
|
|
38
|
-
async handleClientRequest(isEnable, meeting) {
|
|
45
|
+
async handleClientRequest(isEnable?: boolean, meeting?: object) {
|
|
39
46
|
return new Promise((resolve, reject) => {
|
|
40
47
|
if (this.pendingPromiseResolve) {
|
|
41
48
|
// resolve the last promise we returned to the client as the client has issued a new request that has superseded the previous one
|
|
@@ -56,7 +63,7 @@ class EffectsState {
|
|
|
56
63
|
* @public
|
|
57
64
|
* @memberof Meeting
|
|
58
65
|
*/
|
|
59
|
-
isBnrEnabled() {
|
|
66
|
+
public isBnrEnabled() {
|
|
60
67
|
return this.state.bnr.enabled === BNR_STATUS.ENABLED;
|
|
61
68
|
}
|
|
62
69
|
|
|
@@ -83,7 +90,7 @@ class EffectsState {
|
|
|
83
90
|
* @public
|
|
84
91
|
* @memberof EffectsState
|
|
85
92
|
*/
|
|
86
|
-
async enableBNR(meeting) {
|
|
93
|
+
public async enableBNR(meeting: any) {
|
|
87
94
|
LoggerProxy.logger.info('Meeting:effectState#enableBNR. Enable BNR called');
|
|
88
95
|
|
|
89
96
|
if (this.isBnrEnabled()) {
|
|
@@ -93,7 +100,9 @@ class EffectsState {
|
|
|
93
100
|
}
|
|
94
101
|
|
|
95
102
|
if (this.state.callToWebrtcBNRInProgress) {
|
|
96
|
-
LoggerProxy.logger.warn(
|
|
103
|
+
LoggerProxy.logger.warn(
|
|
104
|
+
'Meeting:effectState#enableBNR. Call to WebRTC in progress, we need to wait for it to complete'
|
|
105
|
+
);
|
|
97
106
|
|
|
98
107
|
return this.resolvePromise();
|
|
99
108
|
}
|
|
@@ -105,32 +114,30 @@ class EffectsState {
|
|
|
105
114
|
this.state.callToWebrtcBNRInProgress = true;
|
|
106
115
|
const audioStream = MediaUtil.createMediaStream([meeting.mediaProperties.audioTrack]);
|
|
107
116
|
|
|
108
|
-
LoggerProxy.logger.info(
|
|
117
|
+
LoggerProxy.logger.info(
|
|
118
|
+
'Meeting:effectState#enableBNR. MediaStream created from meeting & sent to updateAudio'
|
|
119
|
+
);
|
|
109
120
|
await meeting.updateAudio({
|
|
110
121
|
sendAudio: true,
|
|
111
122
|
receiveAudio: meeting.mediaProperties.mediaDirection.receiveAudio,
|
|
112
|
-
stream: audioStream
|
|
123
|
+
stream: audioStream,
|
|
113
124
|
});
|
|
114
125
|
|
|
115
|
-
LoggerProxy.logger.info(
|
|
126
|
+
LoggerProxy.logger.info(
|
|
127
|
+
'Meeting:effectState#enableBNR. Updated meeting audio with bnr enabled track'
|
|
128
|
+
);
|
|
116
129
|
bnr.enabled = BNR_STATUS.ENABLED;
|
|
117
130
|
this.state.callToWebrtcBNRInProgress = false;
|
|
118
|
-
Metrics.sendBehavioralMetric(
|
|
119
|
-
|
|
120
|
-
);
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
131
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ENABLE_BNR_SUCCESS);
|
|
132
|
+
} catch (error) {
|
|
123
133
|
bnr.enabled = BNR_STATUS.NOT_ENABLED;
|
|
124
134
|
this.state.callToWebrtcBNRInProgress = false;
|
|
125
135
|
LoggerProxy.logger.error('Meeting:index#enableBNR.', error);
|
|
126
136
|
|
|
127
|
-
Metrics.sendBehavioralMetric(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
stack: error.stack
|
|
132
|
-
}
|
|
133
|
-
);
|
|
137
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ENABLE_BNR_FAILURE, {
|
|
138
|
+
reason: error.message,
|
|
139
|
+
stack: error.stack,
|
|
140
|
+
});
|
|
134
141
|
this.rejectPromise(error);
|
|
135
142
|
|
|
136
143
|
throw error;
|
|
@@ -146,14 +153,16 @@ class EffectsState {
|
|
|
146
153
|
* @public
|
|
147
154
|
* @memberof EffectsState
|
|
148
155
|
*/
|
|
149
|
-
async disableBNR(meeting) {
|
|
156
|
+
public async disableBNR(meeting: any) {
|
|
150
157
|
LoggerProxy.logger.info('Meeting:effectState#disableBNR. Disable BNR called');
|
|
151
158
|
|
|
152
159
|
const {bnr} = this.state;
|
|
153
160
|
|
|
154
161
|
try {
|
|
155
162
|
if (this.state.callToWebrtcBNRInProgress) {
|
|
156
|
-
LoggerProxy.logger.info(
|
|
163
|
+
LoggerProxy.logger.info(
|
|
164
|
+
'Meeting:effectState#disableBNR. Call to WebRTC in progress, we need to wait for it to complete'
|
|
165
|
+
);
|
|
157
166
|
|
|
158
167
|
return this.resolvePromise();
|
|
159
168
|
}
|
|
@@ -161,38 +170,35 @@ class EffectsState {
|
|
|
161
170
|
bnr.enabled = BNR_STATUS.SHOULD_DISABLE;
|
|
162
171
|
this.state.callToWebrtcBNRInProgress = true;
|
|
163
172
|
|
|
173
|
+
// @ts-ignore - disableBNR does not expect an argument
|
|
164
174
|
const audioTrack = WebRTCMedia.Effects.BNR.disableBNR(meeting.mediaProperties.audioTrack);
|
|
165
175
|
|
|
166
176
|
const audioStream = MediaUtil.createMediaStream([audioTrack]);
|
|
167
177
|
|
|
168
|
-
LoggerProxy.logger.info(
|
|
178
|
+
LoggerProxy.logger.info(
|
|
179
|
+
'Meeting:effectState#disableBNR. Raw media track obtained from WebRTC & sent to updateAudio'
|
|
180
|
+
);
|
|
169
181
|
|
|
170
182
|
await meeting.updateAudio({
|
|
171
183
|
sendAudio: true,
|
|
172
184
|
receiveAudio: meeting.mediaProperties.mediaDirection.receiveAudio,
|
|
173
|
-
stream: audioStream
|
|
185
|
+
stream: audioStream,
|
|
174
186
|
});
|
|
175
187
|
|
|
176
188
|
bnr.enabled = BNR_STATUS.NOT_ENABLED;
|
|
177
189
|
|
|
178
190
|
this.state.callToWebrtcBNRInProgress = false;
|
|
179
191
|
|
|
180
|
-
Metrics.sendBehavioralMetric(
|
|
181
|
-
|
|
182
|
-
);
|
|
183
|
-
}
|
|
184
|
-
catch (error) {
|
|
192
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.DISABLE_BNR_SUCCESS);
|
|
193
|
+
} catch (error) {
|
|
185
194
|
bnr.enabled = BNR_STATUS.ENABLED;
|
|
186
195
|
this.state.callToWebrtcBNRInProgress = false;
|
|
187
196
|
LoggerProxy.logger.error(`Meeting:index#disableBNR. ${error}`);
|
|
188
197
|
|
|
189
|
-
Metrics.sendBehavioralMetric(
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
stack: error.stack
|
|
194
|
-
}
|
|
195
|
-
);
|
|
198
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.DISABLE_BNR_FAILURE, {
|
|
199
|
+
reason: error.message,
|
|
200
|
+
stack: error.stack,
|
|
201
|
+
});
|
|
196
202
|
this.rejectPromise(error);
|
|
197
203
|
|
|
198
204
|
throw error;
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
MEETINGS
|
|
7
|
-
} from '../constants';
|
|
5
|
+
import {MEETINGS} from '../constants';
|
|
8
6
|
|
|
9
7
|
/**
|
|
10
8
|
* IInMeetingActions
|
|
@@ -33,6 +31,8 @@ interface IInMeetingActions {
|
|
|
33
31
|
isRealTimeTranslationEnabled?: boolean;
|
|
34
32
|
canSelectSpokenLanguages?: boolean;
|
|
35
33
|
waitingForOthersToJoin?: boolean;
|
|
34
|
+
canEnableReactions?: boolean;
|
|
35
|
+
canSendReactions?: boolean;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
/**
|
|
@@ -85,6 +85,10 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
85
85
|
|
|
86
86
|
waitingForOthersToJoin = null;
|
|
87
87
|
|
|
88
|
+
canEnableReactions = null;
|
|
89
|
+
|
|
90
|
+
canSendReactions = null;
|
|
91
|
+
|
|
88
92
|
/**
|
|
89
93
|
* Returns all meeting action options
|
|
90
94
|
* @returns {Object}
|
|
@@ -112,8 +116,16 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
112
116
|
isRealTimeTranslationEnabled: this.isRealTimeTranslationEnabled,
|
|
113
117
|
canSelectSpokenLanguages: this.canSelectSpokenLanguages,
|
|
114
118
|
waitingForOthersToJoin: this.waitingForOthersToJoin,
|
|
119
|
+
canEnableReactions: this.canEnableReactions,
|
|
120
|
+
canSendReactions: this.canSendReactions,
|
|
115
121
|
});
|
|
116
122
|
|
|
123
|
+
/**
|
|
124
|
+
*
|
|
125
|
+
* @param actions
|
|
126
|
+
* @returns
|
|
127
|
+
*/
|
|
128
|
+
|
|
117
129
|
set = (actions: Partial<IInMeetingActions>) => {
|
|
118
130
|
const old = this.get();
|
|
119
131
|
|