@abrar71/lib-jitsi-meet 0.0.0
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/LICENSE +202 -0
- package/README.md +26 -0
- package/dist/esm/JitsiConference.js +3692 -0
- package/dist/esm/JitsiConference.js.map +1 -0
- package/dist/esm/JitsiConferenceErrors.js +126 -0
- package/dist/esm/JitsiConferenceErrors.js.map +1 -0
- package/dist/esm/JitsiConferenceEventManager.js +424 -0
- package/dist/esm/JitsiConferenceEventManager.js.map +1 -0
- package/dist/esm/JitsiConferenceEvents.js +431 -0
- package/dist/esm/JitsiConferenceEvents.js.map +1 -0
- package/dist/esm/JitsiConnection.js +187 -0
- package/dist/esm/JitsiConnection.js.map +1 -0
- package/dist/esm/JitsiConnectionErrors.js +52 -0
- package/dist/esm/JitsiConnectionErrors.js.map +1 -0
- package/dist/esm/JitsiConnectionEvents.js +57 -0
- package/dist/esm/JitsiConnectionEvents.js.map +1 -0
- package/dist/esm/JitsiMediaDevices.js +221 -0
- package/dist/esm/JitsiMediaDevices.js.map +1 -0
- package/dist/esm/JitsiMediaDevicesEvents.js +29 -0
- package/dist/esm/JitsiMediaDevicesEvents.js.map +1 -0
- package/dist/esm/JitsiMeetJS.js +499 -0
- package/dist/esm/JitsiMeetJS.js.map +1 -0
- package/dist/esm/JitsiParticipant.js +323 -0
- package/dist/esm/JitsiParticipant.js.map +1 -0
- package/dist/esm/JitsiTrackError.js +122 -0
- package/dist/esm/JitsiTrackError.js.map +1 -0
- package/dist/esm/JitsiTrackErrors.js +91 -0
- package/dist/esm/JitsiTrackErrors.js.map +1 -0
- package/dist/esm/JitsiTrackEvents.js +60 -0
- package/dist/esm/JitsiTrackEvents.js.map +1 -0
- package/dist/esm/JitsiTranscriptionStatus.js +15 -0
- package/dist/esm/JitsiTranscriptionStatus.js.map +1 -0
- package/dist/esm/modules/RTC/BridgeChannel.js +398 -0
- package/dist/esm/modules/RTC/BridgeChannel.js.map +1 -0
- package/dist/esm/modules/RTC/JitsiLocalTrack.js +896 -0
- package/dist/esm/modules/RTC/JitsiLocalTrack.js.map +1 -0
- package/dist/esm/modules/RTC/JitsiRemoteTrack.js +427 -0
- package/dist/esm/modules/RTC/JitsiRemoteTrack.js.map +1 -0
- package/dist/esm/modules/RTC/JitsiTrack.js +453 -0
- package/dist/esm/modules/RTC/JitsiTrack.js.map +1 -0
- package/dist/esm/modules/RTC/MockClasses.js +388 -0
- package/dist/esm/modules/RTC/MockClasses.js.map +1 -0
- package/dist/esm/modules/RTC/RTC.js +658 -0
- package/dist/esm/modules/RTC/RTC.js.map +1 -0
- package/dist/esm/modules/RTC/RTCUtils.js +762 -0
- package/dist/esm/modules/RTC/RTCUtils.js.map +1 -0
- package/dist/esm/modules/RTC/ScreenObtainer.js +380 -0
- package/dist/esm/modules/RTC/ScreenObtainer.js.map +1 -0
- package/dist/esm/modules/RTC/TPCUtils.js +803 -0
- package/dist/esm/modules/RTC/TPCUtils.js.map +1 -0
- package/dist/esm/modules/RTC/TraceablePeerConnection.js +2223 -0
- package/dist/esm/modules/RTC/TraceablePeerConnection.js.map +1 -0
- package/dist/esm/modules/RTCStats/DefaulLogStorage.js +35 -0
- package/dist/esm/modules/RTCStats/DefaulLogStorage.js.map +1 -0
- package/dist/esm/modules/RTCStats/RTCStats.js +219 -0
- package/dist/esm/modules/RTCStats/RTCStats.js.map +1 -0
- package/dist/esm/modules/RTCStats/RTCStatsEvents.js +92 -0
- package/dist/esm/modules/RTCStats/RTCStatsEvents.js.map +1 -0
- package/dist/esm/modules/RTCStats/interfaces.js +2 -0
- package/dist/esm/modules/RTCStats/interfaces.js.map +1 -0
- package/dist/esm/modules/browser/BrowserCapabilities.js +345 -0
- package/dist/esm/modules/browser/BrowserCapabilities.js.map +1 -0
- package/dist/esm/modules/browser/index.js +3 -0
- package/dist/esm/modules/browser/index.js.map +1 -0
- package/dist/esm/modules/connectivity/ConnectionQuality.js +389 -0
- package/dist/esm/modules/connectivity/ConnectionQuality.js.map +1 -0
- package/dist/esm/modules/connectivity/IceFailedHandling.js +84 -0
- package/dist/esm/modules/connectivity/IceFailedHandling.js.map +1 -0
- package/dist/esm/modules/connectivity/NetworkInfo.js +49 -0
- package/dist/esm/modules/connectivity/NetworkInfo.js.map +1 -0
- package/dist/esm/modules/connectivity/TrackStreamingStatus.js +453 -0
- package/dist/esm/modules/connectivity/TrackStreamingStatus.js.map +1 -0
- package/dist/esm/modules/detection/ActiveDeviceDetector.js +79 -0
- package/dist/esm/modules/detection/ActiveDeviceDetector.js.map +1 -0
- package/dist/esm/modules/detection/DetectionEvents.js +58 -0
- package/dist/esm/modules/detection/DetectionEvents.js.map +1 -0
- package/dist/esm/modules/detection/NoAudioSignalDetection.js +127 -0
- package/dist/esm/modules/detection/NoAudioSignalDetection.js.map +1 -0
- package/dist/esm/modules/detection/P2PDominantSpeakerDetection.js +47 -0
- package/dist/esm/modules/detection/P2PDominantSpeakerDetection.js.map +1 -0
- package/dist/esm/modules/detection/TrackVADEmitter.js +190 -0
- package/dist/esm/modules/detection/TrackVADEmitter.js.map +1 -0
- package/dist/esm/modules/detection/VADAudioAnalyser.js +199 -0
- package/dist/esm/modules/detection/VADAudioAnalyser.js.map +1 -0
- package/dist/esm/modules/detection/VADNoiseDetection.js +168 -0
- package/dist/esm/modules/detection/VADNoiseDetection.js.map +1 -0
- package/dist/esm/modules/detection/VADReportingService.js +203 -0
- package/dist/esm/modules/detection/VADReportingService.js.map +1 -0
- package/dist/esm/modules/detection/VADTalkMutedDetection.js +131 -0
- package/dist/esm/modules/detection/VADTalkMutedDetection.js.map +1 -0
- package/dist/esm/modules/e2ee/Context.js +274 -0
- package/dist/esm/modules/e2ee/Context.js.map +1 -0
- package/dist/esm/modules/e2ee/E2EEContext.js +158 -0
- package/dist/esm/modules/e2ee/E2EEContext.js.map +1 -0
- package/dist/esm/modules/e2ee/E2EEErrors.js +10 -0
- package/dist/esm/modules/e2ee/E2EEErrors.js.map +1 -0
- package/dist/esm/modules/e2ee/E2EEncryption.js +87 -0
- package/dist/esm/modules/e2ee/E2EEncryption.js.map +1 -0
- package/dist/esm/modules/e2ee/ExternallyManagedKeyHandler.js +24 -0
- package/dist/esm/modules/e2ee/ExternallyManagedKeyHandler.js.map +1 -0
- package/dist/esm/modules/e2ee/KeyHandler.js +137 -0
- package/dist/esm/modules/e2ee/KeyHandler.js.map +1 -0
- package/dist/esm/modules/e2ee/ManagedKeyHandler.js +182 -0
- package/dist/esm/modules/e2ee/ManagedKeyHandler.js.map +1 -0
- package/dist/esm/modules/e2ee/OlmAdapter.js +860 -0
- package/dist/esm/modules/e2ee/OlmAdapter.js.map +1 -0
- package/dist/esm/modules/e2ee/SAS.js +128 -0
- package/dist/esm/modules/e2ee/SAS.js.map +1 -0
- package/dist/esm/modules/e2ee/Worker.js +102 -0
- package/dist/esm/modules/e2ee/Worker.js.map +1 -0
- package/dist/esm/modules/e2ee/crypto-utils.js +53 -0
- package/dist/esm/modules/e2ee/crypto-utils.js.map +1 -0
- package/dist/esm/modules/e2ee/utils.js +15 -0
- package/dist/esm/modules/e2ee/utils.js.map +1 -0
- package/dist/esm/modules/e2eping/e2eping.js +314 -0
- package/dist/esm/modules/e2eping/e2eping.js.map +1 -0
- package/dist/esm/modules/flags/FeatureFlags.js +36 -0
- package/dist/esm/modules/flags/FeatureFlags.js.map +1 -0
- package/dist/esm/modules/litemode/LiteModeContext.js +50 -0
- package/dist/esm/modules/litemode/LiteModeContext.js.map +1 -0
- package/dist/esm/modules/proxyconnection/CustomSignalingLayer.js +98 -0
- package/dist/esm/modules/proxyconnection/CustomSignalingLayer.js.map +1 -0
- package/dist/esm/modules/proxyconnection/ProxyConnectionPC.js +348 -0
- package/dist/esm/modules/proxyconnection/ProxyConnectionPC.js.map +1 -0
- package/dist/esm/modules/proxyconnection/ProxyConnectionService.js +279 -0
- package/dist/esm/modules/proxyconnection/ProxyConnectionService.js.map +1 -0
- package/dist/esm/modules/proxyconnection/constants.js +14 -0
- package/dist/esm/modules/proxyconnection/constants.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/CodecSelection.js +222 -0
- package/dist/esm/modules/qualitycontrol/CodecSelection.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/MockClasses.js +120 -0
- package/dist/esm/modules/qualitycontrol/MockClasses.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/QualityController.js +366 -0
- package/dist/esm/modules/qualitycontrol/QualityController.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/ReceiveAudioController.js +73 -0
- package/dist/esm/modules/qualitycontrol/ReceiveAudioController.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/ReceiveVideoController.js +216 -0
- package/dist/esm/modules/qualitycontrol/ReceiveVideoController.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/SendVideoController.js +133 -0
- package/dist/esm/modules/qualitycontrol/SendVideoController.js.map +1 -0
- package/dist/esm/modules/recording/JibriSession.js +279 -0
- package/dist/esm/modules/recording/JibriSession.js.map +1 -0
- package/dist/esm/modules/recording/RecordingManager.js +257 -0
- package/dist/esm/modules/recording/RecordingManager.js.map +1 -0
- package/dist/esm/modules/recording/recordingConstants.js +21 -0
- package/dist/esm/modules/recording/recordingConstants.js.map +1 -0
- package/dist/esm/modules/recording/recordingXMLUtils.js +69 -0
- package/dist/esm/modules/recording/recordingXMLUtils.js.map +1 -0
- package/dist/esm/modules/red/red.js +108 -0
- package/dist/esm/modules/red/red.js.map +1 -0
- package/dist/esm/modules/sdp/LocalSdpMunger.js +143 -0
- package/dist/esm/modules/sdp/LocalSdpMunger.js.map +1 -0
- package/dist/esm/modules/sdp/RtxModifier.js +179 -0
- package/dist/esm/modules/sdp/RtxModifier.js.map +1 -0
- package/dist/esm/modules/sdp/SDP.js +848 -0
- package/dist/esm/modules/sdp/SDP.js.map +1 -0
- package/dist/esm/modules/sdp/SDPDiffer.js +96 -0
- package/dist/esm/modules/sdp/SDPDiffer.js.map +1 -0
- package/dist/esm/modules/sdp/SDPUtil.js +798 -0
- package/dist/esm/modules/sdp/SDPUtil.js.map +1 -0
- package/dist/esm/modules/sdp/SampleSdpStrings.js +589 -0
- package/dist/esm/modules/sdp/SampleSdpStrings.js.map +1 -0
- package/dist/esm/modules/sdp/SdpSimulcast.js +196 -0
- package/dist/esm/modules/sdp/SdpSimulcast.js.map +1 -0
- package/dist/esm/modules/sdp/SdpTransformUtil.js +337 -0
- package/dist/esm/modules/sdp/SdpTransformUtil.js.map +1 -0
- package/dist/esm/modules/sdp/constants.js +2 -0
- package/dist/esm/modules/sdp/constants.js.map +1 -0
- package/dist/esm/modules/settings/Settings.js +95 -0
- package/dist/esm/modules/settings/Settings.js.map +1 -0
- package/dist/esm/modules/statistics/AnalyticsAdapter.js +277 -0
- package/dist/esm/modules/statistics/AnalyticsAdapter.js.map +1 -0
- package/dist/esm/modules/statistics/AvgRTPStatsReporter.js +817 -0
- package/dist/esm/modules/statistics/AvgRTPStatsReporter.js.map +1 -0
- package/dist/esm/modules/statistics/LocalStatsCollector.js +149 -0
- package/dist/esm/modules/statistics/LocalStatsCollector.js.map +1 -0
- package/dist/esm/modules/statistics/PreCallTest.js +15 -0
- package/dist/esm/modules/statistics/PreCallTest.js.map +1 -0
- package/dist/esm/modules/statistics/RTPStatsCollector.js +601 -0
- package/dist/esm/modules/statistics/RTPStatsCollector.js.map +1 -0
- package/dist/esm/modules/statistics/SpeakerStats.js +163 -0
- package/dist/esm/modules/statistics/SpeakerStats.js.map +1 -0
- package/dist/esm/modules/statistics/SpeakerStatsCollector.js +161 -0
- package/dist/esm/modules/statistics/SpeakerStatsCollector.js.map +1 -0
- package/dist/esm/modules/statistics/constants.js +7 -0
- package/dist/esm/modules/statistics/constants.js.map +1 -0
- package/dist/esm/modules/statistics/statistics.js +362 -0
- package/dist/esm/modules/statistics/statistics.js.map +1 -0
- package/dist/esm/modules/util/AsyncQueue.js +102 -0
- package/dist/esm/modules/util/AsyncQueue.js.map +1 -0
- package/dist/esm/modules/util/Deferred.js +41 -0
- package/dist/esm/modules/util/Deferred.js.map +1 -0
- package/dist/esm/modules/util/EventEmitter.js +17 -0
- package/dist/esm/modules/util/EventEmitter.js.map +1 -0
- package/dist/esm/modules/util/EventEmitterForwarder.js +52 -0
- package/dist/esm/modules/util/EventEmitterForwarder.js.map +1 -0
- package/dist/esm/modules/util/Listenable.js +106 -0
- package/dist/esm/modules/util/Listenable.js.map +1 -0
- package/dist/esm/modules/util/MathUtil.js +103 -0
- package/dist/esm/modules/util/MathUtil.js.map +1 -0
- package/dist/esm/modules/util/RandomUtil.js +66 -0
- package/dist/esm/modules/util/RandomUtil.js.map +1 -0
- package/dist/esm/modules/util/Retry.js +15 -0
- package/dist/esm/modules/util/Retry.js.map +1 -0
- package/dist/esm/modules/util/ScriptUtil.js +58 -0
- package/dist/esm/modules/util/ScriptUtil.js.map +1 -0
- package/dist/esm/modules/util/StringUtils.js +21 -0
- package/dist/esm/modules/util/StringUtils.js.map +1 -0
- package/dist/esm/modules/util/TestUtils.js +14 -0
- package/dist/esm/modules/util/TestUtils.js.map +1 -0
- package/dist/esm/modules/util/UsernameGenerator.js +436 -0
- package/dist/esm/modules/util/UsernameGenerator.js.map +1 -0
- package/dist/esm/modules/util/XMLUtils.js +135 -0
- package/dist/esm/modules/util/XMLUtils.js.map +1 -0
- package/dist/esm/modules/version/ComponentsVersions.js +52 -0
- package/dist/esm/modules/version/ComponentsVersions.js.map +1 -0
- package/dist/esm/modules/videosipgw/JitsiVideoSIPGWSession.js +137 -0
- package/dist/esm/modules/videosipgw/JitsiVideoSIPGWSession.js.map +1 -0
- package/dist/esm/modules/videosipgw/VideoSIPGW.js +102 -0
- package/dist/esm/modules/videosipgw/VideoSIPGW.js.map +1 -0
- package/dist/esm/modules/videosipgw/VideoSIPGWConstants.js +65 -0
- package/dist/esm/modules/videosipgw/VideoSIPGWConstants.js.map +1 -0
- package/dist/esm/modules/watchRTC/WatchRTC.js +69 -0
- package/dist/esm/modules/watchRTC/WatchRTC.js.map +1 -0
- package/dist/esm/modules/watchRTC/functions.js +31 -0
- package/dist/esm/modules/watchRTC/functions.js.map +1 -0
- package/dist/esm/modules/watchRTC/interfaces.js +2 -0
- package/dist/esm/modules/watchRTC/interfaces.js.map +1 -0
- package/dist/esm/modules/webaudio/AudioMixer.js +74 -0
- package/dist/esm/modules/webaudio/AudioMixer.js.map +1 -0
- package/dist/esm/modules/webaudio/WebAudioUtils.js +13 -0
- package/dist/esm/modules/webaudio/WebAudioUtils.js.map +1 -0
- package/dist/esm/modules/xmpp/AVModeration.js +156 -0
- package/dist/esm/modules/xmpp/AVModeration.js.map +1 -0
- package/dist/esm/modules/xmpp/BreakoutRooms.js +230 -0
- package/dist/esm/modules/xmpp/BreakoutRooms.js.map +1 -0
- package/dist/esm/modules/xmpp/Caps.js +223 -0
- package/dist/esm/modules/xmpp/Caps.js.map +1 -0
- package/dist/esm/modules/xmpp/ChatRoom.js +1877 -0
- package/dist/esm/modules/xmpp/ChatRoom.js.map +1 -0
- package/dist/esm/modules/xmpp/ConnectionPlugin.js +37 -0
- package/dist/esm/modules/xmpp/ConnectionPlugin.js.map +1 -0
- package/dist/esm/modules/xmpp/FileSharing.js +95 -0
- package/dist/esm/modules/xmpp/FileSharing.js.map +1 -0
- package/dist/esm/modules/xmpp/JingleHelperFunctions.js +168 -0
- package/dist/esm/modules/xmpp/JingleHelperFunctions.js.map +1 -0
- package/dist/esm/modules/xmpp/JingleSession.js +166 -0
- package/dist/esm/modules/xmpp/JingleSession.js.map +1 -0
- package/dist/esm/modules/xmpp/JingleSessionPC.js +1969 -0
- package/dist/esm/modules/xmpp/JingleSessionPC.js.map +1 -0
- package/dist/esm/modules/xmpp/JingleSessionState.js +23 -0
- package/dist/esm/modules/xmpp/JingleSessionState.js.map +1 -0
- package/dist/esm/modules/xmpp/Lobby.js +384 -0
- package/dist/esm/modules/xmpp/Lobby.js.map +1 -0
- package/dist/esm/modules/xmpp/MediaSessionEvents.js +12 -0
- package/dist/esm/modules/xmpp/MediaSessionEvents.js.map +1 -0
- package/dist/esm/modules/xmpp/MockClasses.js +77 -0
- package/dist/esm/modules/xmpp/MockClasses.js.map +1 -0
- package/dist/esm/modules/xmpp/Polls.js +87 -0
- package/dist/esm/modules/xmpp/Polls.js.map +1 -0
- package/dist/esm/modules/xmpp/ResumeTask.js +149 -0
- package/dist/esm/modules/xmpp/ResumeTask.js.map +1 -0
- package/dist/esm/modules/xmpp/RoomMetadata.js +96 -0
- package/dist/esm/modules/xmpp/RoomMetadata.js.map +1 -0
- package/dist/esm/modules/xmpp/SignalingLayerImpl.js +313 -0
- package/dist/esm/modules/xmpp/SignalingLayerImpl.js.map +1 -0
- package/dist/esm/modules/xmpp/StropheErrorHandler.js +53 -0
- package/dist/esm/modules/xmpp/StropheErrorHandler.js.map +1 -0
- package/dist/esm/modules/xmpp/StropheLastSuccess.js +52 -0
- package/dist/esm/modules/xmpp/StropheLastSuccess.js.map +1 -0
- package/dist/esm/modules/xmpp/XmppConnection.js +579 -0
- package/dist/esm/modules/xmpp/XmppConnection.js.map +1 -0
- package/dist/esm/modules/xmpp/moderator.js +524 -0
- package/dist/esm/modules/xmpp/moderator.js.map +1 -0
- package/dist/esm/modules/xmpp/sha1.js +165 -0
- package/dist/esm/modules/xmpp/sha1.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.disco.js +222 -0
- package/dist/esm/modules/xmpp/strophe.disco.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.emuc.js +206 -0
- package/dist/esm/modules/xmpp/strophe.emuc.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.jingle.js +404 -0
- package/dist/esm/modules/xmpp/strophe.jingle.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.logger.js +44 -0
- package/dist/esm/modules/xmpp/strophe.logger.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.ping.js +170 -0
- package/dist/esm/modules/xmpp/strophe.ping.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.rayo.js +117 -0
- package/dist/esm/modules/xmpp/strophe.rayo.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.stream-management.js +365 -0
- package/dist/esm/modules/xmpp/strophe.stream-management.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.util.js +116 -0
- package/dist/esm/modules/xmpp/strophe.util.js.map +1 -0
- package/dist/esm/modules/xmpp/xmpp.js +973 -0
- package/dist/esm/modules/xmpp/xmpp.js.map +1 -0
- package/dist/esm/service/RTC/BridgeVideoType.js +24 -0
- package/dist/esm/service/RTC/BridgeVideoType.js.map +1 -0
- package/dist/esm/service/RTC/CameraFacingMode.js +21 -0
- package/dist/esm/service/RTC/CameraFacingMode.js.map +1 -0
- package/dist/esm/service/RTC/CodecMimeType.js +36 -0
- package/dist/esm/service/RTC/CodecMimeType.js.map +1 -0
- package/dist/esm/service/RTC/MediaDirection.js +23 -0
- package/dist/esm/service/RTC/MediaDirection.js.map +1 -0
- package/dist/esm/service/RTC/MediaType.js +20 -0
- package/dist/esm/service/RTC/MediaType.js.map +1 -0
- package/dist/esm/service/RTC/RTCEvents.js +111 -0
- package/dist/esm/service/RTC/RTCEvents.js.map +1 -0
- package/dist/esm/service/RTC/ReceiverAudioSubscription.js +27 -0
- package/dist/esm/service/RTC/ReceiverAudioSubscription.js.map +1 -0
- package/dist/esm/service/RTC/Resolutions.js +56 -0
- package/dist/esm/service/RTC/Resolutions.js.map +1 -0
- package/dist/esm/service/RTC/SignalingEvents.js +42 -0
- package/dist/esm/service/RTC/SignalingEvents.js.map +1 -0
- package/dist/esm/service/RTC/SignalingLayer.js +153 -0
- package/dist/esm/service/RTC/SignalingLayer.js.map +1 -0
- package/dist/esm/service/RTC/StandardVideoQualitySettings.js +180 -0
- package/dist/esm/service/RTC/StandardVideoQualitySettings.js.map +1 -0
- package/dist/esm/service/RTC/VideoEncoderScalabilityMode.js +36 -0
- package/dist/esm/service/RTC/VideoEncoderScalabilityMode.js.map +1 -0
- package/dist/esm/service/RTC/VideoType.js +19 -0
- package/dist/esm/service/RTC/VideoType.js.map +1 -0
- package/dist/esm/service/authentication/AuthenticationEvents.js +13 -0
- package/dist/esm/service/authentication/AuthenticationEvents.js.map +1 -0
- package/dist/esm/service/connectivity/ConnectionQualityEvents.js +13 -0
- package/dist/esm/service/connectivity/ConnectionQualityEvents.js.map +1 -0
- package/dist/esm/service/connectivity/Constants.js +3 -0
- package/dist/esm/service/connectivity/Constants.js.map +1 -0
- package/dist/esm/service/e2eping/E2ePingEvents.js +8 -0
- package/dist/esm/service/e2eping/E2ePingEvents.js.map +1 -0
- package/dist/esm/service/statistics/AnalyticsEvents.js +521 -0
- package/dist/esm/service/statistics/AnalyticsEvents.js.map +1 -0
- package/dist/esm/service/statistics/Events.js +36 -0
- package/dist/esm/service/statistics/Events.js.map +1 -0
- package/dist/esm/service/statistics/constants.js +2 -0
- package/dist/esm/service/statistics/constants.js.map +1 -0
- package/dist/esm/service/xmpp/XMPPEvents.js +359 -0
- package/dist/esm/service/xmpp/XMPPEvents.js.map +1 -0
- package/dist/esm/service/xmpp/XMPPExtensioProtocols.js +64 -0
- package/dist/esm/service/xmpp/XMPPExtensioProtocols.js.map +1 -0
- package/dist/esm/test-setup-polyfill.js +34 -0
- package/dist/esm/test-setup-polyfill.js.map +1 -0
- package/dist/esm/tools/gen-version.js +15 -0
- package/dist/esm/tools/gen-version.js.map +1 -0
- package/dist/esm/version.js +3 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/umd/lib-jitsi-meet.e2ee-worker.js +484 -0
- package/dist/umd/lib-jitsi-meet.min.js +3 -0
- package/dist/umd/lib-jitsi-meet.min.js.LICENSE.txt +18 -0
- package/dist/umd/lib-jitsi-meet.min.map +1 -0
- package/package.json +93 -0
- package/types/index.d.ts +16180 -0
|
@@ -0,0 +1,658 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
import { cloneDeep, isEqual } from 'lodash-es';
|
|
3
|
+
import { JitsiConferenceEvents } from '../../JitsiConferenceEvents';
|
|
4
|
+
import { MediaType } from '../../service/RTC/MediaType';
|
|
5
|
+
import { RTCEvents } from '../../service/RTC/RTCEvents';
|
|
6
|
+
import { VideoType } from '../../service/RTC/VideoType';
|
|
7
|
+
import browser from '../browser';
|
|
8
|
+
import Listenable from '../util/Listenable';
|
|
9
|
+
import { safeCounterIncrement } from '../util/MathUtil';
|
|
10
|
+
import BridgeChannel from './BridgeChannel';
|
|
11
|
+
import JitsiLocalTrack from './JitsiLocalTrack';
|
|
12
|
+
import RTCUtils from './RTCUtils';
|
|
13
|
+
import TraceablePeerConnection from './TraceablePeerConnection';
|
|
14
|
+
const logger = getLogger('rtc:RTC');
|
|
15
|
+
/**
|
|
16
|
+
* The counter used to generated id numbers assigned to peer connections
|
|
17
|
+
* @type {number}
|
|
18
|
+
*/
|
|
19
|
+
let peerConnectionIdCounter = 0;
|
|
20
|
+
/**
|
|
21
|
+
* The counter used to generate id number for the local
|
|
22
|
+
* <code>MediaStreamTrack</code>s.
|
|
23
|
+
* @type {number}
|
|
24
|
+
*/
|
|
25
|
+
let rtcTrackIdCounter = 0;
|
|
26
|
+
/**
|
|
27
|
+
* Creates {@code JitsiLocalTrack} instances from the passed in meta information
|
|
28
|
+
* about MedieaTracks.
|
|
29
|
+
*
|
|
30
|
+
* @param {Object[]} mediaStreamMetaData - An array of meta information with
|
|
31
|
+
* MediaTrack instances. Each can look like:
|
|
32
|
+
* {{
|
|
33
|
+
* stream: MediaStream instance that holds a track with audio or video,
|
|
34
|
+
* track: MediaTrack within the MediaStream,
|
|
35
|
+
* videoType: "camera" or "desktop" or falsy,
|
|
36
|
+
* sourceId: ID of the desktopsharing source,
|
|
37
|
+
* sourceType: The desktopsharing source type,
|
|
38
|
+
* effects: Array of effect types
|
|
39
|
+
* }}
|
|
40
|
+
*/
|
|
41
|
+
function _createLocalTracks(mediaStreamMetaData = []) {
|
|
42
|
+
return mediaStreamMetaData.map(metaData => {
|
|
43
|
+
const { constraints, sourceId, sourceType, stream, track, videoType, effects } = metaData;
|
|
44
|
+
const { deviceId, facingMode } = track.getSettings();
|
|
45
|
+
// FIXME Move rtcTrackIdCounter to a static method in JitsiLocalTrack
|
|
46
|
+
// so RTC does not need to handle ID management. This move would be
|
|
47
|
+
// safer to do once the old createLocalTracks is removed.
|
|
48
|
+
rtcTrackIdCounter = safeCounterIncrement(rtcTrackIdCounter);
|
|
49
|
+
return new JitsiLocalTrack({
|
|
50
|
+
constraints,
|
|
51
|
+
deviceId,
|
|
52
|
+
effects,
|
|
53
|
+
facingMode,
|
|
54
|
+
mediaType: track.kind,
|
|
55
|
+
rtcId: rtcTrackIdCounter,
|
|
56
|
+
sourceId,
|
|
57
|
+
sourceType,
|
|
58
|
+
stream,
|
|
59
|
+
track,
|
|
60
|
+
videoType: videoType || null
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
*/
|
|
67
|
+
export default class RTC extends Listenable {
|
|
68
|
+
/**
|
|
69
|
+
*
|
|
70
|
+
* @param conference
|
|
71
|
+
* @param options
|
|
72
|
+
*/
|
|
73
|
+
constructor(conference, options = {}) {
|
|
74
|
+
super();
|
|
75
|
+
this.conference = conference;
|
|
76
|
+
/**
|
|
77
|
+
* A map of active <tt>TraceablePeerConnection</tt>.
|
|
78
|
+
* @type {Map.<number, TraceablePeerConnection>}
|
|
79
|
+
*/
|
|
80
|
+
this.peerConnections = new Map();
|
|
81
|
+
this.localTracks = [];
|
|
82
|
+
this.options = options;
|
|
83
|
+
// BridgeChannel instance.
|
|
84
|
+
// @private
|
|
85
|
+
// @type {BridgeChannel}
|
|
86
|
+
this._channel = null;
|
|
87
|
+
/**
|
|
88
|
+
* The value specified to the last invocation of setLastN before the
|
|
89
|
+
* channel completed opening. If non-null, the value will be sent
|
|
90
|
+
* through a channel (once) as soon as it opens and will then be
|
|
91
|
+
* discarded.
|
|
92
|
+
* @private
|
|
93
|
+
* @type {number}
|
|
94
|
+
*/
|
|
95
|
+
this._lastN = undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Defines the forwarded sources list. It can be null or an array once initialised with a channel forwarded
|
|
98
|
+
* sources event.
|
|
99
|
+
*
|
|
100
|
+
* @type {Array<string>|null}
|
|
101
|
+
* @private
|
|
102
|
+
*/
|
|
103
|
+
this._forwardedSources = null;
|
|
104
|
+
// The forwarded sources change listener.
|
|
105
|
+
this._forwardedSourcesChangeListener = this._onForwardedSourcesChanged.bind(this);
|
|
106
|
+
this._onDeviceListChanged = this._onDeviceListChanged.bind(this);
|
|
107
|
+
this._updateAudioOutputForAudioTracks = this._updateAudioOutputForAudioTracks.bind(this);
|
|
108
|
+
// Switch audio output device on all remote audio tracks. Local audio
|
|
109
|
+
// tracks handle this event by themselves.
|
|
110
|
+
if (RTCUtils.isDeviceChangeAvailable('output')) {
|
|
111
|
+
RTCUtils.addListener(RTCEvents.AUDIO_OUTPUT_DEVICE_CHANGED, this._updateAudioOutputForAudioTracks);
|
|
112
|
+
RTCUtils.addListener(RTCEvents.DEVICE_LIST_CHANGED, this._onDeviceListChanged);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Removes any listeners and stored state from this {@code RTC} instance.
|
|
117
|
+
*
|
|
118
|
+
* @returns {void}
|
|
119
|
+
*/
|
|
120
|
+
destroy() {
|
|
121
|
+
RTCUtils.removeListener(RTCEvents.AUDIO_OUTPUT_DEVICE_CHANGED, this._updateAudioOutputForAudioTracks);
|
|
122
|
+
RTCUtils.removeListener(RTCEvents.DEVICE_LIST_CHANGED, this._onDeviceListChanged);
|
|
123
|
+
if (this._channelOpenListener) {
|
|
124
|
+
this.removeListener(RTCEvents.DATA_CHANNEL_OPEN, this._channelOpenListener);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Exposes the private helper for converting a WebRTC MediaStream to a
|
|
129
|
+
* JitsiLocalTrack.
|
|
130
|
+
*
|
|
131
|
+
* @param {Array<Object>} tracksInfo
|
|
132
|
+
* @returns {Array<JitsiLocalTrack>}
|
|
133
|
+
*/
|
|
134
|
+
static createLocalTracks(tracksInfo) {
|
|
135
|
+
return _createLocalTracks(tracksInfo);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Creates the local MediaStreams.
|
|
139
|
+
* @param {object} [options] Optional parameters.
|
|
140
|
+
* @param {Array=} options.devices The devices that will be requested.
|
|
141
|
+
* @param {string=} options.resolution Resolution constraints.
|
|
142
|
+
* @param {string=} options.cameraDeviceId
|
|
143
|
+
* @param {string=} options.micDeviceId
|
|
144
|
+
* @returns {*} Promise object that will receive the new JitsiTracks
|
|
145
|
+
*/
|
|
146
|
+
static obtainAudioAndVideoPermissions(options) {
|
|
147
|
+
return RTCUtils.obtainAudioAndVideoPermissions(options)
|
|
148
|
+
.then(tracksInfo => _createLocalTracks(tracksInfo));
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Initializes the bridge channel of this instance.
|
|
152
|
+
* At least one of both, peerconnection or wsUrl parameters, must be
|
|
153
|
+
* given.
|
|
154
|
+
* @param {RTCPeerConnection} [peerconnection] WebRTC peer connection
|
|
155
|
+
* instance.
|
|
156
|
+
* @param {string} [wsUrl] WebSocket URL.
|
|
157
|
+
*/
|
|
158
|
+
initializeBridgeChannel(peerconnection, wsUrl) {
|
|
159
|
+
this._channel = new BridgeChannel(peerconnection, wsUrl, this.eventEmitter, this.conference);
|
|
160
|
+
this._channelOpenListener = () => {
|
|
161
|
+
const logError = (error, msgType, value) => {
|
|
162
|
+
logger.error(`Cannot send ${msgType}(${JSON.stringify(value)}) endpoint message`, error);
|
|
163
|
+
};
|
|
164
|
+
// When the channel becomes available, tell the bridge about video selections so that it can do adaptive
|
|
165
|
+
// simulcast, we want the notification to trigger even if userJid is undefined, or null.
|
|
166
|
+
if (this._receiverVideoConstraints) {
|
|
167
|
+
try {
|
|
168
|
+
this._channel.sendReceiverVideoConstraintsMessage(this._receiverVideoConstraints);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
logError(error, 'ReceiverVideoConstraints', this._receiverVideoConstraints);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (typeof this._lastN !== 'undefined' && this._lastN !== -1) {
|
|
175
|
+
try {
|
|
176
|
+
this._channel.sendSetLastNMessage(this._lastN);
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
logError(error, 'LastNChangedEvent', this._lastN);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
this.addListener(RTCEvents.DATA_CHANNEL_OPEN, this._channelOpenListener);
|
|
184
|
+
// Add forwarded sources change listener.
|
|
185
|
+
this.addListener(RTCEvents.FORWARDED_SOURCES_CHANGED, this._forwardedSourcesChangeListener);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Callback invoked when the list of known audio and video devices has
|
|
189
|
+
* been updated. Attempts to update the known available audio output
|
|
190
|
+
* devices.
|
|
191
|
+
*
|
|
192
|
+
* @private
|
|
193
|
+
* @returns {void}
|
|
194
|
+
*/
|
|
195
|
+
_onDeviceListChanged() {
|
|
196
|
+
this._updateAudioOutputForAudioTracks(RTCUtils.getAudioOutputDevice());
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Receives events when forwarded sources had changed.
|
|
200
|
+
*
|
|
201
|
+
* @param {array} forwardedSources The new forwarded sources.
|
|
202
|
+
* @private
|
|
203
|
+
*/
|
|
204
|
+
_onForwardedSourcesChanged(forwardedSources = []) {
|
|
205
|
+
const oldForwardedSources = this._forwardedSources || [];
|
|
206
|
+
let leavingForwardedSources = [];
|
|
207
|
+
let enteringForwardedSources = [];
|
|
208
|
+
const timestamp = Date.now();
|
|
209
|
+
this._forwardedSources = forwardedSources;
|
|
210
|
+
leavingForwardedSources = oldForwardedSources.filter(sourceName => !this.isInForwardedSources(sourceName));
|
|
211
|
+
enteringForwardedSources = forwardedSources.filter(sourceName => oldForwardedSources.indexOf(sourceName) === -1);
|
|
212
|
+
logger.debug(`Fowarded sources changed leaving=${leavingForwardedSources}, entering=`
|
|
213
|
+
+ `${enteringForwardedSources} at ${timestamp}`);
|
|
214
|
+
this.conference.eventEmitter.emit(JitsiConferenceEvents.FORWARDED_SOURCES_CHANGED, leavingForwardedSources, enteringForwardedSources, timestamp);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Should be called when current media session ends and after the
|
|
218
|
+
* PeerConnection has been closed using PeerConnection.close() method.
|
|
219
|
+
*/
|
|
220
|
+
onCallEnded() {
|
|
221
|
+
if (this._channel) {
|
|
222
|
+
// The BridgeChannel is not explicitly closed as the PeerConnection
|
|
223
|
+
// is closed on call ended which triggers datachannel onclose
|
|
224
|
+
// events. If using a WebSocket, the channel must be closed since
|
|
225
|
+
// it is not managed by the PeerConnection.
|
|
226
|
+
// The reference is cleared to disable any logic related to the
|
|
227
|
+
// channel.
|
|
228
|
+
if (this._channel && this._channel.mode === 'websocket') {
|
|
229
|
+
this._channel.close();
|
|
230
|
+
}
|
|
231
|
+
this._channel = null;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Sets the capture frame rate to be used for desktop tracks.
|
|
236
|
+
*
|
|
237
|
+
* @param {number} maxFps framerate to be used for desktop track capture.
|
|
238
|
+
*/
|
|
239
|
+
setDesktopSharingFrameRate(maxFps) {
|
|
240
|
+
RTCUtils.setDesktopSharingFrameRate(maxFps);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Sets the receiver video constraints that determine how bitrate is allocated to each of the video streams
|
|
244
|
+
* requested from the bridge. The constraints are cached and sent through the bridge channel once the channel
|
|
245
|
+
* is established.
|
|
246
|
+
* @param {*} constraints
|
|
247
|
+
*/
|
|
248
|
+
setReceiverVideoConstraints(constraints) {
|
|
249
|
+
if (isEqual(this._receiverVideoConstraints, constraints)) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
this._receiverVideoConstraints = cloneDeep(constraints);
|
|
253
|
+
if (this._channel && this._channel.isOpen()) {
|
|
254
|
+
this._channel.sendReceiverVideoConstraintsMessage(constraints);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Sends the track's video type to the JVB.
|
|
259
|
+
* @param {SourceName} sourceName - the track's source name.
|
|
260
|
+
* @param {BridgeVideoType} videoType - the track's video type.
|
|
261
|
+
*/
|
|
262
|
+
sendSourceVideoType(sourceName, videoType) {
|
|
263
|
+
if (this._channel && this._channel.isOpen()) {
|
|
264
|
+
this._channel.sendSourceVideoTypeMessage(sourceName, videoType);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
*
|
|
269
|
+
* @param eventType
|
|
270
|
+
* @param listener
|
|
271
|
+
*/
|
|
272
|
+
static addListener(eventType, listener) {
|
|
273
|
+
RTCUtils.addListener(eventType, listener);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
*
|
|
277
|
+
* @param eventType
|
|
278
|
+
* @param listener
|
|
279
|
+
*/
|
|
280
|
+
static removeListener(eventType, listener) {
|
|
281
|
+
RTCUtils.removeListener(eventType, listener);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
*
|
|
285
|
+
* @param options
|
|
286
|
+
*/
|
|
287
|
+
static init(options = {}) {
|
|
288
|
+
this.options = options;
|
|
289
|
+
return RTCUtils.init(this.options);
|
|
290
|
+
}
|
|
291
|
+
/* eslint-disable max-params */
|
|
292
|
+
/**
|
|
293
|
+
* Creates new <tt>TraceablePeerConnection</tt>
|
|
294
|
+
* @param {SignalingLayer} signaling The signaling layer that will provide information about the media or
|
|
295
|
+
* participants which is not carried over SDP.
|
|
296
|
+
* @param {object} pcConfig The {@code RTCConfiguration} to use for the WebRTC peer connection.
|
|
297
|
+
* @param {boolean} isP2P Indicates whether or not the new TPC will be used in a peer to peer type of session.
|
|
298
|
+
* @param {object} options The config options.
|
|
299
|
+
* @param {Object} options.audioQuality - Quality settings to applied on the outbound audio stream.
|
|
300
|
+
* @param {boolean} options.capScreenshareBitrate if set to true, lower layers will be disabled for screenshare.
|
|
301
|
+
* @param {Array<CodecMimeType>} options.codecSettings - codec settings to be applied for video streams.
|
|
302
|
+
* @param {boolean} options.disableSimulcast if set to 'true' will disable the simulcast.
|
|
303
|
+
* @param {boolean} options.disableRtx if set to 'true' will disable the RTX.
|
|
304
|
+
* @param {boolean} options.enableInsertableStreams set to true when the insertable streams constraints is to be
|
|
305
|
+
* enabled on the PeerConnection.
|
|
306
|
+
* @param {boolean} options.forceTurnRelay If set to true, the browser will generate only Relay ICE candidates.
|
|
307
|
+
* @param {boolean} options.startSilent If set to 'true' no audio will be sent or received.
|
|
308
|
+
* @param {Object} options.videoQuality - Quality settings to applied on the outbound video streams.
|
|
309
|
+
* @return {TraceablePeerConnection}
|
|
310
|
+
*/
|
|
311
|
+
createPeerConnection(signaling, pcConfig, isP2P, options) {
|
|
312
|
+
const pcConstraints = {};
|
|
313
|
+
if (options.enableInsertableStreams) {
|
|
314
|
+
logger.debug('E2EE - setting insertable streams constraints');
|
|
315
|
+
pcConfig.encodedInsertableStreams = true;
|
|
316
|
+
}
|
|
317
|
+
if (options.forceTurnRelay) {
|
|
318
|
+
pcConfig.iceTransportPolicy = 'relay';
|
|
319
|
+
}
|
|
320
|
+
// Set the RTCBundlePolicy to max-bundle so that only one set of ice candidates is generated.
|
|
321
|
+
// The default policy generates separate ice candidates for audio and video connections.
|
|
322
|
+
// This change is necessary for Unified plan to work properly on Chrome and Safari.
|
|
323
|
+
pcConfig.bundlePolicy = 'max-bundle';
|
|
324
|
+
peerConnectionIdCounter = safeCounterIncrement(peerConnectionIdCounter);
|
|
325
|
+
const newConnection = new TraceablePeerConnection(this, peerConnectionIdCounter, signaling, pcConfig, pcConstraints, isP2P, options);
|
|
326
|
+
this.peerConnections.set(newConnection.id, newConnection);
|
|
327
|
+
return newConnection;
|
|
328
|
+
}
|
|
329
|
+
/* eslint-enable max-params */
|
|
330
|
+
/**
|
|
331
|
+
* Removed given peer connection from this RTC module instance.
|
|
332
|
+
* @param {TraceablePeerConnection} traceablePeerConnection
|
|
333
|
+
* @return {boolean} <tt>true</tt> if the given peer connection was removed
|
|
334
|
+
* successfully or <tt>false</tt> if there was no peer connection mapped in
|
|
335
|
+
* this RTC instance.
|
|
336
|
+
*/
|
|
337
|
+
_removePeerConnection(traceablePeerConnection) {
|
|
338
|
+
const id = traceablePeerConnection.id;
|
|
339
|
+
if (this.peerConnections.has(id)) {
|
|
340
|
+
// NOTE Remote tracks are not removed here.
|
|
341
|
+
this.peerConnections.delete(id);
|
|
342
|
+
return true;
|
|
343
|
+
}
|
|
344
|
+
return false;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
*
|
|
348
|
+
* @param track
|
|
349
|
+
*/
|
|
350
|
+
addLocalTrack(track) {
|
|
351
|
+
if (!track) {
|
|
352
|
+
throw new Error('track must not be null nor undefined');
|
|
353
|
+
}
|
|
354
|
+
this.localTracks.push(track);
|
|
355
|
+
track.conference = this.conference;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Get forwarded sources list.
|
|
359
|
+
* @returns {Array<string>|null}
|
|
360
|
+
*/
|
|
361
|
+
getForwardedSources() {
|
|
362
|
+
return this._forwardedSources;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Get local video track.
|
|
366
|
+
* @returns {JitsiLocalTrack|undefined}
|
|
367
|
+
*/
|
|
368
|
+
getLocalVideoTrack() {
|
|
369
|
+
const localVideo = this.getLocalTracks(MediaType.VIDEO);
|
|
370
|
+
return localVideo.length ? localVideo[0] : undefined;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Returns all the local video tracks.
|
|
374
|
+
* @returns {Array<JitsiLocalTrack>}
|
|
375
|
+
*/
|
|
376
|
+
getLocalVideoTracks() {
|
|
377
|
+
return this.getLocalTracks(MediaType.VIDEO);
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Get local audio track.
|
|
381
|
+
* @returns {JitsiLocalTrack|undefined}
|
|
382
|
+
*/
|
|
383
|
+
getLocalAudioTrack() {
|
|
384
|
+
const localAudio = this.getLocalTracks(MediaType.AUDIO);
|
|
385
|
+
return localAudio.length ? localAudio[0] : undefined;
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Returns the endpoint id for the local user.
|
|
389
|
+
* @returns {string}
|
|
390
|
+
*/
|
|
391
|
+
getLocalEndpointId() {
|
|
392
|
+
return this.conference.myUserId();
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Returns the local tracks of the given media type, or all local tracks if
|
|
396
|
+
* no specific type is given.
|
|
397
|
+
* @param {MediaType} [mediaType] Optional media type filter.
|
|
398
|
+
* (audio or video).
|
|
399
|
+
*/
|
|
400
|
+
getLocalTracks(mediaType) {
|
|
401
|
+
if (!mediaType) {
|
|
402
|
+
return this.localTracks.slice();
|
|
403
|
+
}
|
|
404
|
+
return this.localTracks.filter(track => track.getType() === mediaType);
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Obtains all remote tracks currently known to this RTC module instance.
|
|
408
|
+
* @param {MediaType} [mediaType] The remote tracks will be filtered
|
|
409
|
+
* by their media type if this argument is specified.
|
|
410
|
+
* @return {Array<JitsiRemoteTrack>}
|
|
411
|
+
*/
|
|
412
|
+
getRemoteTracks(mediaType) {
|
|
413
|
+
let remoteTracks = [];
|
|
414
|
+
for (const tpc of this.peerConnections.values()) {
|
|
415
|
+
const pcRemoteTracks = tpc.getRemoteTracks(undefined, mediaType);
|
|
416
|
+
if (pcRemoteTracks) {
|
|
417
|
+
remoteTracks = remoteTracks.concat(pcRemoteTracks);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return remoteTracks;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Set mute for all local audio streams attached to the conference.
|
|
424
|
+
* @returns {Promise}
|
|
425
|
+
*/
|
|
426
|
+
setAudioMute() {
|
|
427
|
+
const mutePromises = [];
|
|
428
|
+
this.getLocalTracks(MediaType.AUDIO).forEach(audioTrack => {
|
|
429
|
+
mutePromises.push(audioTrack.mute());
|
|
430
|
+
});
|
|
431
|
+
return Promise.all(mutePromises);
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Set mute for all local video streams attached to the conference.
|
|
435
|
+
* @returns {Promise}
|
|
436
|
+
*/
|
|
437
|
+
setVideoMute() {
|
|
438
|
+
const mutePromises = [];
|
|
439
|
+
const tracks = this.localTracks.filter(track => track.getType() === MediaType.VIDEO
|
|
440
|
+
&& track.getVideoType() === VideoType.CAMERA);
|
|
441
|
+
tracks.forEach(track => mutePromises.push(track.mute()));
|
|
442
|
+
return Promise.all(mutePromises);
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Set mute for all local desktop video streams attached to the conference.
|
|
446
|
+
* @returns {Promise}
|
|
447
|
+
*/
|
|
448
|
+
setDesktopMute() {
|
|
449
|
+
const mutePromises = [];
|
|
450
|
+
const tracks = this.localTracks.filter(track => track.getType() === MediaType.VIDEO
|
|
451
|
+
&& track.getVideoType() === VideoType.DESKTOP);
|
|
452
|
+
tracks.forEach(track => mutePromises.push(track.mute()));
|
|
453
|
+
return Promise.all(mutePromises);
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
*
|
|
457
|
+
* @param track
|
|
458
|
+
*/
|
|
459
|
+
removeLocalTrack(track) {
|
|
460
|
+
const pos = this.localTracks.indexOf(track);
|
|
461
|
+
if (pos === -1) {
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
this.localTracks.splice(pos, 1);
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
*
|
|
468
|
+
* @param elSelector
|
|
469
|
+
* @param stream
|
|
470
|
+
*/
|
|
471
|
+
static attachMediaStream(elSelector, stream) {
|
|
472
|
+
return RTCUtils.attachMediaStream(elSelector, stream);
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Returns true if changing the input (camera / microphone) or output
|
|
476
|
+
* (audio) device is supported and false if not.
|
|
477
|
+
* @param {string} [deviceType] Type of device to change. Default is
|
|
478
|
+
* undefined or 'input', 'output' - for audio output device change.
|
|
479
|
+
* @returns {boolean} true if available, false otherwise.
|
|
480
|
+
*/
|
|
481
|
+
static isDeviceChangeAvailable(deviceType) {
|
|
482
|
+
return RTCUtils.isDeviceChangeAvailable(deviceType);
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Returns whether the current execution environment supports WebRTC (for
|
|
486
|
+
* use within this library).
|
|
487
|
+
*
|
|
488
|
+
* @returns {boolean} {@code true} if WebRTC is supported in the current
|
|
489
|
+
* execution environment (for use within this library); {@code false},
|
|
490
|
+
* otherwise.
|
|
491
|
+
*/
|
|
492
|
+
static isWebRtcSupported() {
|
|
493
|
+
return browser.isSupported();
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Returns currently used audio output device id, '' stands for default
|
|
497
|
+
* device
|
|
498
|
+
* @returns {string}
|
|
499
|
+
*/
|
|
500
|
+
static getAudioOutputDevice() {
|
|
501
|
+
return RTCUtils.getAudioOutputDevice();
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Returns list of available media devices if its obtained, otherwise an
|
|
505
|
+
* empty array is returned/
|
|
506
|
+
* @returns {array} list of available media devices.
|
|
507
|
+
*/
|
|
508
|
+
static getCurrentlyAvailableMediaDevices() {
|
|
509
|
+
return RTCUtils.getCurrentlyAvailableMediaDevices();
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Returns event data for device to be reported to stats.
|
|
513
|
+
* @returns {MediaDeviceInfo} device.
|
|
514
|
+
*/
|
|
515
|
+
static getEventDataForActiveDevice(device) {
|
|
516
|
+
return RTCUtils.getEventDataForActiveDevice(device);
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Sets current audio output device.
|
|
520
|
+
* @param {string} deviceId Id of 'audiooutput' device from
|
|
521
|
+
* navigator.mediaDevices.enumerateDevices().
|
|
522
|
+
* @returns {Promise} resolves when audio output is changed, is rejected
|
|
523
|
+
* otherwise
|
|
524
|
+
*/
|
|
525
|
+
static setAudioOutputDevice(deviceId) {
|
|
526
|
+
return RTCUtils.setAudioOutputDevice(deviceId);
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Allows to receive list of available cameras/microphones.
|
|
530
|
+
* @param {function} callback Would receive array of devices as an
|
|
531
|
+
* argument.
|
|
532
|
+
*/
|
|
533
|
+
static enumerateDevices(callback) {
|
|
534
|
+
RTCUtils.enumerateDevices(callback);
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* A method to handle stopping of the stream.
|
|
538
|
+
* One point to handle the differences in various implementations.
|
|
539
|
+
* @param {MediaStream} mediaStream MediaStream object to stop.
|
|
540
|
+
*/
|
|
541
|
+
static stopMediaStream(mediaStream) {
|
|
542
|
+
RTCUtils.stopMediaStream(mediaStream);
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Returns whether the desktop sharing is enabled or not.
|
|
546
|
+
* @returns {boolean}
|
|
547
|
+
*/
|
|
548
|
+
static isDesktopSharingEnabled() {
|
|
549
|
+
return RTCUtils.isDesktopSharingEnabled();
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Closes the currently opened bridge channel.
|
|
553
|
+
*/
|
|
554
|
+
closeBridgeChannel() {
|
|
555
|
+
if (this._channel) {
|
|
556
|
+
this._channel.close();
|
|
557
|
+
this._channel = null;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
/* eslint-disable max-params */
|
|
561
|
+
/**
|
|
562
|
+
*
|
|
563
|
+
* @param {TraceablePeerConnection} tpc
|
|
564
|
+
* @param {number} ssrc
|
|
565
|
+
* @param {number} audioLevel
|
|
566
|
+
* @param {boolean} isLocal
|
|
567
|
+
*/
|
|
568
|
+
setAudioLevel(tpc, ssrc, audioLevel, isLocal) {
|
|
569
|
+
const track = tpc.getTrackBySSRC(ssrc);
|
|
570
|
+
if (!track) {
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
else if (!track.isAudioTrack()) {
|
|
574
|
+
logger.warn(`Received audio level for non-audio track: ${ssrc}`);
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
577
|
+
else if (track.isLocal() !== isLocal) {
|
|
578
|
+
logger.error(`${track} was expected to ${isLocal ? 'be' : 'not be'} local`);
|
|
579
|
+
}
|
|
580
|
+
track.setAudioLevel(audioLevel, tpc);
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Sends message via the bridge channel.
|
|
584
|
+
* @param {string} to The id of the endpoint that should receive the
|
|
585
|
+
* message. If "" the message will be sent to all participants.
|
|
586
|
+
* @param {object} payload The payload of the message.
|
|
587
|
+
* @throws NetworkError or InvalidStateError or Error if the operation
|
|
588
|
+
* fails or there is no data channel created.
|
|
589
|
+
*/
|
|
590
|
+
sendChannelMessage(to, payload) {
|
|
591
|
+
if (this._channel) {
|
|
592
|
+
this._channel.sendMessage(to, payload);
|
|
593
|
+
}
|
|
594
|
+
else {
|
|
595
|
+
throw new Error('BridgeChannel has not been initialized yet');
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Sends the local stats via the bridge channel.
|
|
600
|
+
* @param {Object} payload The payload of the message.
|
|
601
|
+
* @throws NetworkError/InvalidStateError/Error if the operation fails or if there is no data channel created.
|
|
602
|
+
*/
|
|
603
|
+
sendEndpointStatsMessage(payload) {
|
|
604
|
+
if (this._channel && this._channel.isOpen()) {
|
|
605
|
+
this._channel.sendEndpointStatsMessage(payload);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
/**
|
|
609
|
+
* Sends a receiver audio subscription message.
|
|
610
|
+
* @param {*} message
|
|
611
|
+
*/
|
|
612
|
+
sendReceiverAudioSubscriptionMessage(message) {
|
|
613
|
+
if (this._channel && this._channel.isOpen()) {
|
|
614
|
+
this._channel.sendReceiverAudioSubscriptionMessage(message);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* Selects a new value for "lastN". The requested amount of videos are going
|
|
619
|
+
* to be delivered after the value is in effect. Set to -1 for unlimited or
|
|
620
|
+
* all available videos.
|
|
621
|
+
* @param {number} value the new value for lastN.
|
|
622
|
+
*/
|
|
623
|
+
setLastN(value) {
|
|
624
|
+
if (this._lastN !== value) {
|
|
625
|
+
this._lastN = value;
|
|
626
|
+
if (this._channel && this._channel.isOpen()) {
|
|
627
|
+
this._channel.sendSetLastNMessage(value);
|
|
628
|
+
}
|
|
629
|
+
this.eventEmitter.emit(RTCEvents.LASTN_VALUE_CHANGED, value);
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
/**
|
|
633
|
+
* Indicates if the source name is currently included in the forwarded sources.
|
|
634
|
+
*
|
|
635
|
+
* @param {string} sourceName The source name that we check for forwarded sources.
|
|
636
|
+
* @returns {boolean} true if the source name is in the forwarded sources or if we don't have bridge channel
|
|
637
|
+
* support, otherwise we return false.
|
|
638
|
+
*/
|
|
639
|
+
isInForwardedSources(sourceName) {
|
|
640
|
+
return !this._forwardedSources // forwardedSources not initialised yet.
|
|
641
|
+
|| this._forwardedSources.indexOf(sourceName) > -1;
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* Updates the target audio output device for all remote audio tracks.
|
|
645
|
+
*
|
|
646
|
+
* @param {string} deviceId - The device id of the audio ouput device to
|
|
647
|
+
* use for all remote tracks.
|
|
648
|
+
* @private
|
|
649
|
+
* @returns {void}
|
|
650
|
+
*/
|
|
651
|
+
_updateAudioOutputForAudioTracks(deviceId) {
|
|
652
|
+
const remoteAudioTracks = this.getRemoteTracks(MediaType.AUDIO);
|
|
653
|
+
for (const track of remoteAudioTracks) {
|
|
654
|
+
track.setAudioOutput(deviceId);
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
//# sourceMappingURL=RTC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RTC.js","sourceRoot":"","sources":["../../../../modules/RTC/RTC.js"],"names":[],"mappings":"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"}
|