@webex/plugin-meetings 3.0.0-beta.146 → 3.0.0-beta.147

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/common/errors/webex-errors.js +3 -2
  4. package/dist/common/errors/webex-errors.js.map +1 -1
  5. package/dist/config.js +1 -7
  6. package/dist/config.js.map +1 -1
  7. package/dist/constants.js +7 -15
  8. package/dist/constants.js.map +1 -1
  9. package/dist/index.js +6 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/media/index.js +5 -56
  12. package/dist/media/index.js.map +1 -1
  13. package/dist/media/properties.js +15 -93
  14. package/dist/media/properties.js.map +1 -1
  15. package/dist/meeting/index.js +1092 -1865
  16. package/dist/meeting/index.js.map +1 -1
  17. package/dist/meeting/muteState.js +88 -184
  18. package/dist/meeting/muteState.js.map +1 -1
  19. package/dist/meeting/util.js +1 -23
  20. package/dist/meeting/util.js.map +1 -1
  21. package/dist/meetings/index.js +1 -2
  22. package/dist/meetings/index.js.map +1 -1
  23. package/dist/reconnection-manager/index.js +153 -134
  24. package/dist/reconnection-manager/index.js.map +1 -1
  25. package/dist/roap/index.js +8 -7
  26. package/dist/roap/index.js.map +1 -1
  27. package/dist/types/common/errors/webex-errors.d.ts +1 -1
  28. package/dist/types/config.d.ts +0 -6
  29. package/dist/types/constants.d.ts +1 -18
  30. package/dist/types/index.d.ts +1 -1
  31. package/dist/types/media/properties.d.ts +16 -38
  32. package/dist/types/meeting/index.d.ts +90 -353
  33. package/dist/types/meeting/muteState.d.ts +36 -38
  34. package/dist/types/meeting/util.d.ts +2 -4
  35. package/package.json +19 -19
  36. package/src/common/errors/webex-errors.ts +6 -2
  37. package/src/config.ts +0 -6
  38. package/src/constants.ts +1 -14
  39. package/src/index.ts +1 -0
  40. package/src/media/index.ts +10 -53
  41. package/src/media/properties.ts +32 -92
  42. package/src/meeting/index.ts +530 -1566
  43. package/src/meeting/muteState.ts +87 -178
  44. package/src/meeting/util.ts +3 -24
  45. package/src/meetings/index.ts +0 -1
  46. package/src/reconnection-manager/index.ts +4 -9
  47. package/src/roap/index.ts +13 -14
  48. package/test/integration/spec/converged-space-meetings.js +59 -3
  49. package/test/integration/spec/journey.js +330 -256
  50. package/test/integration/spec/space-meeting.js +75 -3
  51. package/test/unit/spec/meeting/index.js +767 -1344
  52. package/test/unit/spec/meeting/muteState.js +238 -394
  53. package/test/unit/spec/meeting/utils.js +2 -9
  54. package/test/unit/spec/multistream/receiveSlot.ts +1 -1
  55. package/test/unit/spec/roap/index.ts +2 -2
  56. package/test/utils/integrationTestUtils.js +5 -23
@@ -4,6 +4,7 @@ import { LocalTrack, LocalCameraTrack, LocalDisplayTrack, LocalMicrophoneTrack,
4
4
  import { StatsAnalyzer } from '../statsAnalyzer';
5
5
  import NetworkQualityMonitor from '../networkQualityMonitor';
6
6
  import Roap from '../roap/index';
7
+ import { type BundlePolicy } from '../media';
7
8
  import MediaProperties from '../media/properties';
8
9
  import ReconnectionManager from '../reconnection-manager';
9
10
  import MeetingRequest from './request';
@@ -11,19 +12,34 @@ import Members from '../members/index';
11
12
  import Transcription from '../transcription';
12
13
  import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
13
14
  import { MediaRequestManager } from '../multistream/mediaRequestManager';
14
- import { RemoteMediaManager } from '../multistream/remoteMediaManager';
15
+ import { Configuration as RemoteMediaManagerConfiguration, RemoteMediaManager } from '../multistream/remoteMediaManager';
15
16
  import { ReactionServerType, SkinToneType } from '../reactions/reactions.type';
16
17
  import InMeetingActions from './in-meeting-actions';
17
18
  import RecordingController from '../recording-controller';
18
19
  import ControlsOptionsManager from '../controls-options-manager';
19
20
  import { LocusMediaRequest } from './locusMediaRequest';
20
21
  import { AnnotationInfo } from '../annotation/annotation.types';
22
+ export type LocalTracks = {
23
+ microphone?: LocalMicrophoneTrack;
24
+ camera?: LocalCameraTrack;
25
+ screenShare?: {
26
+ audio?: LocalTrack;
27
+ video?: LocalDisplayTrack;
28
+ };
29
+ annotationInfo?: AnnotationInfo;
30
+ };
31
+ export type AddMediaOptions = {
32
+ localTracks?: LocalTracks;
33
+ audioEnabled?: boolean;
34
+ videoEnabled?: boolean;
35
+ receiveShare?: boolean;
36
+ remoteMediaManagerConfig?: RemoteMediaManagerConfiguration;
37
+ bundlePolicy?: BundlePolicy;
38
+ };
21
39
  export declare const MEDIA_UPDATE_TYPE: {
22
- ALL: string;
23
- AUDIO: string;
24
- VIDEO: string;
25
- SHARE: string;
40
+ TRANSCODED_MEDIA_CONNECTION: string;
26
41
  LAMBDA: string;
42
+ UPDATE_MEDIA: string;
27
43
  };
28
44
  /**
29
45
  * MediaDirection
@@ -36,15 +52,6 @@ export declare const MEDIA_UPDATE_TYPE: {
36
52
  * @property {boolean} receiveShare
37
53
  * @property {boolean} isSharing
38
54
  */
39
- /**
40
- * AudioVideo
41
- * @typedef {Object} AudioVideo
42
- * @property {Object} audio
43
- * @property {String} audio.deviceId
44
- * @property {Object} video
45
- * @property {String} video.deviceId
46
- * @property {String} video.localVideoQuality // [240p, 360p, 480p, 720p, 1080p]
47
- */
48
55
  /**
49
56
  * SharePreferences
50
57
  * @typedef {Object} SharePreferences
@@ -58,19 +65,11 @@ export declare const MEDIA_UPDATE_TYPE: {
58
65
  * @property {String} [pin]
59
66
  * @property {Boolean} [moderator]
60
67
  * @property {String|Object} [meetingQuality]
61
- * @property {String} [meetingQuality.local]
62
68
  * @property {String} [meetingQuality.remote]
63
69
  * @property {Boolean} [rejoin]
64
70
  * @property {Boolean} [enableMultistream]
65
71
  * @property {String} [correlationId]
66
72
  */
67
- /**
68
- * SendOptions
69
- * @typedef {Object} SendOptions
70
- * @property {Boolean} sendAudio
71
- * @property {Boolean} sendVideo
72
- * @property {Boolean} sendShare
73
- */
74
73
  /**
75
74
  * Recording
76
75
  * @typedef {Object} Recording
@@ -380,6 +379,7 @@ export default class Meeting extends StatelessWebexPlugin {
380
379
  state: any;
381
380
  localAudioTrackMuteStateHandler: (event: TrackMuteEvent) => void;
382
381
  localVideoTrackMuteStateHandler: (event: TrackMuteEvent) => void;
382
+ underlyingLocalTrackChangeHandler: () => void;
383
383
  roles: any[];
384
384
  environment: string;
385
385
  namespace: string;
@@ -730,48 +730,6 @@ export default class Meeting extends StatelessWebexPlugin {
730
730
  * @memberof Meeting
731
731
  */
732
732
  getMembers(): Members;
733
- /**
734
- * Truthy when a meeting has an audio connection established
735
- * @returns {Boolean} true if meeting audio is connected otherwise false
736
- * @public
737
- * @memberof Meeting
738
- */
739
- isAudioConnected(): boolean;
740
- /**
741
- * Convenience function to tell whether a meeting is muted
742
- * @returns {Boolean} if meeting audio muted or not
743
- * @public
744
- * @memberof Meeting
745
- */
746
- isAudioMuted(): any;
747
- /**
748
- * Convenience function to tell if the end user last changed the audio state
749
- * @returns {Boolean} if audio was manipulated by the end user
750
- * @public
751
- * @memberof Meeting
752
- */
753
- isAudioSelf(): any;
754
- /**
755
- * Truthy when a meeting has a video connection established
756
- * @returns {Boolean} true if meeting video connected otherwise false
757
- * @public
758
- * @memberof Meeting
759
- */
760
- isVideoConnected(): boolean;
761
- /**
762
- * Convenience function to tell whether video is muted
763
- * @returns {Boolean} if meeting video is muted or not
764
- * @public
765
- * @memberof Meeting
766
- */
767
- isVideoMuted(): any;
768
- /**
769
- * Convenience function to tell whether the end user changed the video state
770
- * @returns {Boolean} if meeting video is muted or not
771
- * @public
772
- * @memberof Meeting
773
- */
774
- isVideoSelf(): any;
775
733
  /**
776
734
  * Sets the meeting info on the class instance
777
735
  * @param {Object} meetingInfo
@@ -830,15 +788,6 @@ export default class Meeting extends StatelessWebexPlugin {
830
788
  * @memberof Meeting
831
789
  */
832
790
  uploadLogs(options?: object): void;
833
- /**
834
- * Removes remote audio and video stream on the class instance and triggers an event
835
- * to developers
836
- * @returns {undefined}
837
- * @public
838
- * @memberof Meeting
839
- * @deprecated after v1.89.3
840
- */
841
- unsetRemoteStream(): void;
842
791
  /**
843
792
  * Removes remote audio, video and share tracks from class instance's mediaProperties
844
793
  * @returns {undefined}
@@ -861,76 +810,30 @@ export default class Meeting extends StatelessWebexPlugin {
861
810
  */
862
811
  closeRemoteTracks(): Promise<[any, any, any]>;
863
812
  /**
864
- * Emits the 'media:ready' event with a local stream that consists of 1 local audio and 1 local video track
865
- * @returns {undefined}
866
- * @private
867
- * @memberof Meeting
868
- */
869
- private sendLocalMediaReadyEvent;
870
- /**
871
- * Sets the local audio track on the class and emits an event to the developer
872
- * @param {MediaStreamTrack} rawAudioTrack
873
- * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
874
- * @returns {undefined}
875
- * @private
876
- * @memberof Meeting
813
+ * Stores the reference to a new microphone track, sets up the required event listeners
814
+ * on it, cleans up previous track, etc.
815
+ *
816
+ * @param {LocalMicrophoneTrack | null} localTrack local microphone track
817
+ * @returns {Promise<void>}
877
818
  */
878
819
  private setLocalAudioTrack;
879
820
  /**
880
- * Sets the local video track on the class and emits an event to the developer
881
- * @param {MediaStreamTrack} rawVideoTrack
882
- * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
883
- * @returns {undefined}
884
- * @private
885
- * @memberof Meeting
821
+ * Stores the reference to a new camera track, sets up the required event listeners
822
+ * on it, cleans up previous track, etc.
823
+ *
824
+ * @param {LocalCameraTrack | null} localTrack local camera track
825
+ * @returns {Promise<void>}
886
826
  */
887
827
  private setLocalVideoTrack;
888
828
  /**
889
- * Sets the local media stream on the class and emits an event to the developer
890
- * @param {Stream} localStream the local media stream
891
- * @returns {undefined}
892
- * @public
893
- * @memberof Meeting
894
- */
895
- setLocalTracks(localStream: any): void;
896
- /**
897
- * Sets the local media stream on the class and emits an event to the developer
898
- * @param {MediaStreamTrack} rawLocalShareTrack the local share media track
899
- * @returns {undefined}
900
- * @public
901
- * @memberof Meeting
902
- */
903
- setLocalShareTrack(rawLocalShareTrack: MediaStreamTrack | null): void;
904
- /**
905
- * Closes the local stream from the class and emits an event to the developer
906
- * @returns {undefined}
907
- * @event media:stopped
908
- * @public
909
- * @memberof Meeting
910
- */
911
- closeLocalStream(): any;
912
- /**
913
- * Closes the local stream from the class and emits an event to the developer
914
- * @returns {undefined}
915
- * @event media:stopped
916
- * @public
917
- * @memberof Meeting
918
- */
919
- closeLocalShare(): any;
920
- /**
921
- * Removes the local stream from the class and emits an event to the developer
922
- * @returns {undefined}
923
- * @public
924
- * @memberof Meeting
925
- */
926
- unsetLocalVideoTrack(): void;
927
- /**
928
- * Removes the local share from the class and emits an event to the developer
929
- * @returns {undefined}
930
- * @public
931
- * @memberof Meeting
829
+ * Stores the reference to a new screen share track, sets up the required event listeners
830
+ * on it, cleans up previous track, etc.
831
+ * It also sends the floor grant/release request.
832
+ *
833
+ * @param {LocalDisplayTrack | undefined} localDisplayTrack local camera track
834
+ * @returns {Promise<void>}
932
835
  */
933
- unsetLocalShareTrack(): void;
836
+ private setLocalShareTrack;
934
837
  /**
935
838
  * sets up listner for mercury event
936
839
  * @returns {undefined}
@@ -963,63 +866,25 @@ export default class Meeting extends StatelessWebexPlugin {
963
866
  * @memberof Meeting
964
867
  */
965
868
  private setCorrelationId;
966
- /**
967
- * Mute the audio for a meeting
968
- * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set
969
- * @public
970
- * @memberof Meeting
971
- */
972
- muteAudio(): any;
973
- /**
974
- * Unmute meeting audio
975
- * @returns {Promise} resolves data from muting audio {mute, self} or rejects if there is no audio set
976
- * @public
977
- * @memberof Meeting
978
- */
979
- unmuteAudio(): any;
980
- /**
981
- * Mute the video for a meeting
982
- * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
983
- * @public
984
- * @memberof Meeting
985
- */
986
- muteVideo(): any;
987
- /**
988
- * Unmute meeting video
989
- * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
990
- * @public
991
- * @memberof Meeting
992
- */
993
- unmuteVideo(): any;
994
869
  /**
995
870
  * Shorthand function to join AND set up media
996
871
  * @param {Object} options - options to join with media
997
872
  * @param {JoinOptions} [options.joinOptions] - see #join()
998
- * @param {MediaDirection} options.mediaSettings - see #addMedia()
999
- * @param {AudioVideo} [options.audioVideoOptions] - see #getMediaStreams()
1000
- * @returns {Promise} -- {join: see join(), media: see addMedia(), local: see getMediaStreams()}
873
+ * @param {MediaDirection} [options.mediaOptions] - see #addMedia()
874
+ * @returns {Promise} -- {join: see join(), media: see addMedia()}
1001
875
  * @public
1002
876
  * @memberof Meeting
1003
877
  * @example
1004
878
  * joinWithMedia({
1005
879
  * joinOptions: {resourceId: 'resourceId' },
1006
- * mediaSettings: {
1007
- * sendAudio: true,
1008
- * sendVideo: true,
1009
- * sendShare: false,
1010
- * receiveVideo:true,
1011
- * receiveAudio: true,
1012
- * receiveShare: true
1013
- * }
1014
- * audioVideoOptions: {
1015
- * audio: 'audioDeviceId',
1016
- * video: 'videoDeviceId'
1017
- * }})
880
+ * mediaOptions: {
881
+ * localTracks: { microphone: microphoneTrack, camera: cameraTrack }
882
+ * }
883
+ * })
1018
884
  */
1019
885
  joinWithMedia(options?: {
1020
886
  joinOptions?: any;
1021
- mediaSettings: any;
1022
- audioVideoOptions?: any;
887
+ mediaOptions?: AddMediaOptions;
1023
888
  }): any;
1024
889
  /**
1025
890
  * Initiates the reconnection of the media in the meeting
@@ -1148,38 +1013,6 @@ export default class Meeting extends StatelessWebexPlugin {
1148
1013
  * @memberof Meeting
1149
1014
  */
1150
1015
  moveFrom(resourceId: string): any;
1151
- /**
1152
- * Get local media streams based on options passed
1153
- *
1154
- * NOTE: this method can only be used with transcoded meetings, not with multistream meetings
1155
- *
1156
- * @param {MediaDirection} mediaDirection A configurable options object for joining a meeting
1157
- * @param {AudioVideo} [audioVideo] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1158
- * @param {SharePreferences} [sharePreferences] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1159
- * @returns {Promise} see #Media.getUserMedia
1160
- * @public
1161
- * @todo should be static, or moved so can be called outside of a meeting
1162
- * @memberof Meeting
1163
- */
1164
- getMediaStreams: (mediaDirection: any, audioVideo?: any, sharePreferences?: any) => any;
1165
- /**
1166
- * Checks if the machine has at least one audio or video device
1167
- * @param {Object} options
1168
- * @param {Boolean} options.sendAudio
1169
- * @param {Boolean} options.sendVideo
1170
- * @returns {Object}
1171
- * @memberof Meetings
1172
- */
1173
- getSupportedDevices: ({ sendAudio, sendVideo, }: {
1174
- sendAudio: boolean;
1175
- sendVideo: boolean;
1176
- }) => any;
1177
- /**
1178
- * Get the devices from the Media module
1179
- * @returns {Promise} resolves to an array of DeviceInfo
1180
- * @memberof Meetings
1181
- */
1182
- getDevices: () => any;
1183
1016
  /**
1184
1017
  * Handles ROAP_FAILURE event from the webrtc media connection
1185
1018
  *
@@ -1197,13 +1030,13 @@ export default class Meeting extends StatelessWebexPlugin {
1197
1030
  setupStatsAnalyzerEventHandlers: () => void;
1198
1031
  getMediaConnectionDebugId(): string;
1199
1032
  /**
1200
- * Creates a webrtc media connection
1033
+ * Creates a webrtc media connection and publishes tracks to it
1201
1034
  *
1202
1035
  * @param {Object} turnServerInfo TURN server information
1203
1036
  * @param {BundlePolicy} [bundlePolicy] Bundle policy settings
1204
1037
  * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
1205
1038
  */
1206
- createMediaConnection(turnServerInfo: any, bundlePolicy: any): any;
1039
+ private createMediaConnection;
1207
1040
  /**
1208
1041
  * Listens for an event emitted by eventEmitter and emits it from the meeting object
1209
1042
  *
@@ -1215,19 +1048,14 @@ export default class Meeting extends StatelessWebexPlugin {
1215
1048
  */
1216
1049
  forwardEvent(eventEmitter: any, eventTypeToForward: any, meetingEventType: any): void;
1217
1050
  /**
1218
- * Specify joining via audio (option: pstn), video, screenshare
1219
- * @param {Object} options A configurable options object for joining a meeting
1220
- * @param {Object} options.resourceId pass the deviceId
1221
- * @param {MediaDirection} options.mediaSettings pass media options
1222
- * @param {MediaStream} options.localStream
1223
- * @param {MediaStream} options.localShare
1224
- * @param {BundlePolicy} options.bundlePolicy bundle policy for multistream meetings
1225
- * @param {RemoteMediaManagerConfig} options.remoteMediaManagerConfig only applies if multistream is enabled
1051
+ * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
1052
+ *
1053
+ * @param {AddMediaOptions} options
1226
1054
  * @returns {Promise}
1227
1055
  * @public
1228
1056
  * @memberof Meeting
1229
1057
  */
1230
- addMedia(options?: any): Promise<any>;
1058
+ addMedia(options?: AddMediaOptions): Promise<any>;
1231
1059
  /**
1232
1060
  * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1233
1061
  * @returns {Boolean}
@@ -1258,94 +1086,25 @@ export default class Meeting extends StatelessWebexPlugin {
1258
1086
  */
1259
1087
  processNextQueuedMediaUpdate: () => void;
1260
1088
  /**
1261
- * A confluence of updateAudio, updateVideo, and updateShare
1262
- * this function re-establishes all of the media streams with new options
1263
- * @param {Object} options
1264
- * @param {MediaStream} options.localStream
1265
- * @param {MediaStream} options.localShare
1266
- * @param {MediaDirection} options.mediaSettings
1267
- * @returns {Promise}
1268
- * @public
1269
- * @memberof Meeting
1270
- */
1271
- updateMedia(options?: {
1272
- localStream?: MediaStream;
1273
- localShare?: MediaStream;
1274
- mediaSettings?: any;
1275
- }): any;
1276
- /**
1277
- * Update the main audio track with new parameters
1278
- *
1279
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1280
- *
1281
- * @param {Object} options
1282
- * @param {boolean} options.sendAudio
1283
- * @param {boolean} options.receiveAudio
1284
- * @param {MediaStream} options.stream Stream that contains the audio track to update
1285
- * @returns {Promise}
1286
- * @public
1287
- * @memberof Meeting
1288
- */
1289
- updateAudio(options: {
1290
- sendAudio: boolean;
1291
- receiveAudio: boolean;
1292
- stream: MediaStream;
1293
- }): Promise<unknown>;
1294
- /**
1295
- * Update the main video track with new parameters
1296
- *
1297
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1089
+ * Updates the media connection - it allows to enable/disable all audio/video/share in the meeting.
1090
+ * This does not affect the published tracks, so for example if a microphone track is published and
1091
+ * updateMedia({audioEnabled: false}) is called, the audio will not be sent or received anymore,
1092
+ * but the track's "published" state is not changed and when updateMedia({audioEnabled: true}) is called,
1093
+ * the sending of the audio from the same track will resume.
1298
1094
  *
1299
1095
  * @param {Object} options
1300
- * @param {boolean} options.sendVideo
1301
- * @param {boolean} options.receiveVideo
1302
- * @param {MediaStream} options.stream Stream that contains the video track to update
1096
+ * @param {boolean} options.audioEnabled [optional] enables/disables receiving and sending of main audio in the meeting
1097
+ * @param {boolean} options.videoEnabled [optional] enables/disables receiving and sending of main video in the meeting
1098
+ * @param {boolean} options.shareEnabled [optional] enables/disables receiving and sending of screen share in the meeting
1303
1099
  * @returns {Promise}
1304
1100
  * @public
1305
1101
  * @memberof Meeting
1306
1102
  */
1307
- updateVideo(options: {
1308
- sendVideo: boolean;
1309
- receiveVideo: boolean;
1310
- stream: MediaStream;
1311
- }): Promise<unknown>;
1312
- /**
1313
- * Internal function when stopping a share stream, cleanup
1314
- * @param {boolean} sendShare
1315
- * @param {boolean} previousShareStatus
1316
- * @returns {Promise}
1317
- * @private
1318
- * @memberof Meeting
1319
- */
1320
- private checkForStopShare;
1321
- /**
1322
- * Update the share streams, can be used to start sharing
1323
- *
1324
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1325
- *
1326
- * @param {Object} options
1327
- * @param {boolean} options.sendShare
1328
- * @param {boolean} options.receiveShare
1329
- * @returns {Promise}
1330
- * @public
1331
- * @memberof Meeting
1332
- */
1333
- updateShare(options: {
1334
- sendShare?: boolean;
1103
+ updateMedia(options: {
1104
+ audioEnabled?: boolean;
1105
+ videoEnabled?: boolean;
1335
1106
  receiveShare?: boolean;
1336
- stream?: any;
1337
- skipSignalingCheck?: boolean;
1338
- }): Promise<unknown>;
1339
- /**
1340
- * Do all the attach media pre set up before executing the actual attach
1341
- * @param {MediaStream} localStream
1342
- * @param {MediaStream} localShare
1343
- * @param {MediaDirection} mediaSettings
1344
- * @returns {undefined}
1345
- * @private
1346
- * @memberof Meeting
1347
- */
1348
- private preMedia;
1107
+ }): Promise<void>;
1349
1108
  /**
1350
1109
  * Acknowledge the meeting, outgoing or incoming
1351
1110
  * @param {String} type
@@ -1403,12 +1162,12 @@ export default class Meeting extends StatelessWebexPlugin {
1403
1162
  */
1404
1163
  private requestScreenShareFloor;
1405
1164
  /**
1406
- * Stops the screen share
1407
- * @returns {Promise} see #updateShare
1408
- * @public
1409
- * @memberof Meeting
1165
+ * Requests screen share floor if such request is pending.
1166
+ * It should be called whenever meeting state changes to JOINED
1167
+ *
1168
+ * @returns {void}
1410
1169
  */
1411
- stopShare(options?: {}): Promise<unknown>;
1170
+ private requestScreenShareFloorIfPending;
1412
1171
  /**
1413
1172
  * Sends a request to Locus to release the screen share floor.
1414
1173
  * @returns {Promise} see #meetingRequest.changeMeetingFloor
@@ -1524,45 +1283,12 @@ export default class Meeting extends StatelessWebexPlugin {
1524
1283
  height: number;
1525
1284
  };
1526
1285
  }): any;
1527
- /**
1528
- * Sets the quality of the local video stream
1529
- * @param {String} level {LOW|MEDIUM|HIGH}
1530
- * @returns {Promise<MediaStream>} localStream
1531
- */
1532
- setLocalVideoQuality(level: string): any;
1533
1286
  /**
1534
1287
  * Sets the quality level of the remote incoming media
1535
1288
  * @param {String} level {LOW|MEDIUM|HIGH}
1536
1289
  * @returns {Promise}
1537
1290
  */
1538
- setRemoteQualityLevel(level: string): any;
1539
- /**
1540
- * This is deprecated, please use setLocalVideoQuality for setting local and setRemoteQualityLevel for remote
1541
- * @param {String} level {LOW|MEDIUM|HIGH}
1542
- * @returns {Promise}
1543
- * @deprecated After FHD support
1544
- */
1545
- setMeetingQuality(level: string): any;
1546
- /**
1547
- *
1548
- * NOTE: this method can only be used with transcoded meetings, for multistream use publishTrack()
1549
- *
1550
- * @param {Object} options parameter
1551
- * @param {Boolean} options.sendAudio send audio from the display share
1552
- * @param {Boolean} options.sendShare send video from the display share
1553
- * @param {Object} options.sharePreferences
1554
- * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video
1555
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}
1556
- * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
1557
- * @returns {Promise}
1558
- */
1559
- shareScreen(options?: {
1560
- sendAudio: boolean;
1561
- sendShare: boolean;
1562
- sharePreferences: {
1563
- shareConstraints: MediaTrackConstraints;
1564
- };
1565
- }): any;
1291
+ setRemoteQualityLevel(level: string): Promise<void>;
1566
1292
  /**
1567
1293
  * Functionality for when a share is ended.
1568
1294
  * @private
@@ -1740,21 +1466,32 @@ export default class Meeting extends StatelessWebexPlugin {
1740
1466
  * @returns {Promise}
1741
1467
  */
1742
1468
  enableMusicMode(shouldEnableMusicMode: boolean): Promise<void>;
1469
+ /** Updates the tracks being sent on the transcoded media connection
1470
+ *
1471
+ * @returns {Promise<void>}
1472
+ */
1473
+ private updateTranscodedMediaConnection;
1474
+ /**
1475
+ * Publishes a track.
1476
+ *
1477
+ * @param {LocalTrack} track to publish
1478
+ * @returns {Promise}
1479
+ */
1480
+ private publishTrack;
1481
+ /**
1482
+ * Un-publishes a track.
1483
+ *
1484
+ * @param {LocalTrack} track to unpublish
1485
+ * @returns {Promise}
1486
+ */
1487
+ private unpublishTrack;
1743
1488
  /**
1744
1489
  * Publishes specified local tracks in the meeting
1745
1490
  *
1746
1491
  * @param {Object} tracks
1747
1492
  * @returns {Promise}
1748
1493
  */
1749
- publishTracks(tracks: {
1750
- microphone?: LocalMicrophoneTrack;
1751
- camera?: LocalCameraTrack;
1752
- screenShare: {
1753
- audio?: LocalTrack;
1754
- video?: LocalDisplayTrack;
1755
- };
1756
- annotationInfo?: AnnotationInfo;
1757
- }): Promise<void>;
1494
+ publishTracks(tracks: LocalTracks): Promise<void>;
1758
1495
  /**
1759
1496
  * Un-publishes specified local tracks in the meeting
1760
1497
  *