@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,314 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
import { JitsiConferenceEvents } from '../../JitsiConferenceEvents';
|
|
3
|
+
import { E2ePingEvents } from '../../service/e2eping/E2ePingEvents';
|
|
4
|
+
const logger = getLogger('e2eping');
|
|
5
|
+
/**
|
|
6
|
+
* The 'type' of a message which designates an e2e ping request.
|
|
7
|
+
* @type {string}
|
|
8
|
+
*/
|
|
9
|
+
const E2E_PING_REQUEST = 'e2e-ping-request';
|
|
10
|
+
/**
|
|
11
|
+
* The 'type' of a message which designates an e2e ping response.
|
|
12
|
+
* @type {string}
|
|
13
|
+
*/
|
|
14
|
+
const E2E_PING_RESPONSE = 'e2e-ping-response';
|
|
15
|
+
/**
|
|
16
|
+
* The number of requests to wait for before emitting an RTT value.
|
|
17
|
+
*/
|
|
18
|
+
const DEFAULT_NUM_REQUESTS = 5;
|
|
19
|
+
/**
|
|
20
|
+
* The maximum number of messages per second to aim for. This is for the entire
|
|
21
|
+
* conference, with the assumption that all endpoints join at once.
|
|
22
|
+
*/
|
|
23
|
+
const DEFAULT_MAX_MESSAGES_PER_SECOND = 250;
|
|
24
|
+
/**
|
|
25
|
+
* The conference size beyond which e2e pings will be disabled.
|
|
26
|
+
*/
|
|
27
|
+
const DEFAULT_MAX_CONFERENCE_SIZE = 200;
|
|
28
|
+
/**
|
|
29
|
+
* Saves e2e ping related state for a single JitsiParticipant.
|
|
30
|
+
*/
|
|
31
|
+
class ParticipantWrapper {
|
|
32
|
+
/**
|
|
33
|
+
* Creates a ParticipantWrapper
|
|
34
|
+
* @param {JitsiParticipant} participant - The remote participant that this
|
|
35
|
+
* object wraps.
|
|
36
|
+
* @param {E2ePing} e2eping
|
|
37
|
+
*/
|
|
38
|
+
constructor(participant, e2eping) {
|
|
39
|
+
// The JitsiParticipant
|
|
40
|
+
this.participant = participant;
|
|
41
|
+
// The E2ePing
|
|
42
|
+
this.e2eping = e2eping;
|
|
43
|
+
// Caches the ID
|
|
44
|
+
this.id = participant.getId();
|
|
45
|
+
// Recently sent requests
|
|
46
|
+
this.requests = {};
|
|
47
|
+
// The ID of the last sent request. We just increment it for each new
|
|
48
|
+
// request. Start at 1 so we can consider only thruthy values valid.
|
|
49
|
+
this.lastRequestId = 1;
|
|
50
|
+
this.sendRequest = this.sendRequest.bind(this);
|
|
51
|
+
this.handleResponse = this.handleResponse.bind(this);
|
|
52
|
+
this.maybeLogRttAndStop = this.maybeLogRttAndStop.bind(this);
|
|
53
|
+
this.scheduleNext = this.scheduleNext.bind(this);
|
|
54
|
+
this.stop = this.stop.bind(this);
|
|
55
|
+
this.getDelay = this.getDelay.bind(this);
|
|
56
|
+
this.timeout = this.scheduleNext();
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Schedule the next ping to be sent.
|
|
60
|
+
*/
|
|
61
|
+
scheduleNext() {
|
|
62
|
+
return window.setTimeout(this.sendRequest, this.getDelay());
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Stop pinging this participant, canceling a scheduled ping, if any.
|
|
66
|
+
*/
|
|
67
|
+
stop() {
|
|
68
|
+
if (this.timeout) {
|
|
69
|
+
window.clearTimeout(this.timeout);
|
|
70
|
+
}
|
|
71
|
+
this.e2eping.removeParticipant(this.id);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get the delay until the next ping in milliseconds.
|
|
75
|
+
*/
|
|
76
|
+
getDelay() {
|
|
77
|
+
const conferenceSize = this.e2eping.conference.getParticipants().length;
|
|
78
|
+
const endpointPairs = conferenceSize * (conferenceSize - 1) / 2;
|
|
79
|
+
const totalMessages = endpointPairs * this.e2eping.numRequests;
|
|
80
|
+
const totalSeconds = totalMessages / this.e2eping.maxMessagesPerSecond;
|
|
81
|
+
// Randomize between .5 and 1.5
|
|
82
|
+
const r = 1.5 - Math.random();
|
|
83
|
+
const delayBetweenMessages = r * Math.max(1000 * (totalSeconds / this.e2eping.numRequests), 1000);
|
|
84
|
+
return delayBetweenMessages;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Sends the next ping request.
|
|
88
|
+
* @type {*}
|
|
89
|
+
*/
|
|
90
|
+
sendRequest() {
|
|
91
|
+
const requestId = this.lastRequestId++;
|
|
92
|
+
const requestMessage = {
|
|
93
|
+
id: requestId,
|
|
94
|
+
type: E2E_PING_REQUEST
|
|
95
|
+
};
|
|
96
|
+
this.e2eping.sendMessage(requestMessage, this.id);
|
|
97
|
+
this.requests[requestId] = {
|
|
98
|
+
id: requestId,
|
|
99
|
+
timeSent: window.performance.now()
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Handles a response from this participant.
|
|
104
|
+
* @type {*}
|
|
105
|
+
*/
|
|
106
|
+
handleResponse(response) {
|
|
107
|
+
const request = this.requests[response.id];
|
|
108
|
+
if (request) {
|
|
109
|
+
request.rtt = window.performance.now() - request.timeSent;
|
|
110
|
+
}
|
|
111
|
+
this.maybeLogRttAndStop();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Check if we've received the pre-configured number of responses, and if
|
|
115
|
+
* so log the measured RTT and stop sending requests.
|
|
116
|
+
* @type {*}
|
|
117
|
+
*/
|
|
118
|
+
maybeLogRttAndStop() {
|
|
119
|
+
// The RTT we'll report is the minimum RTT measured
|
|
120
|
+
let rtt = Infinity;
|
|
121
|
+
let request, requestId;
|
|
122
|
+
let numRequestsWithResponses = 0;
|
|
123
|
+
let totalNumRequests = 0;
|
|
124
|
+
for (requestId in this.requests) {
|
|
125
|
+
if (this.requests.hasOwnProperty(requestId)) {
|
|
126
|
+
request = this.requests[requestId];
|
|
127
|
+
totalNumRequests++;
|
|
128
|
+
if (request.rtt) {
|
|
129
|
+
numRequestsWithResponses++;
|
|
130
|
+
rtt = Math.min(rtt, request.rtt);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (numRequestsWithResponses >= this.e2eping.numRequests) {
|
|
135
|
+
logger.info(`Measured RTT=${rtt} ms to ${this.id} (in ${this.participant.getProperty('region')})`);
|
|
136
|
+
this.stop();
|
|
137
|
+
this.e2eping.conference.eventEmitter.emit(E2ePingEvents.E2E_RTT_CHANGED, this.participant, rtt);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
else if (totalNumRequests > 2 * this.e2eping.numRequests) {
|
|
141
|
+
logger.info(`Stopping e2eping for ${this.id} because we sent ${totalNumRequests} with only `
|
|
142
|
+
+ `${numRequestsWithResponses} responses.`);
|
|
143
|
+
this.stop();
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
this.timeout = this.scheduleNext();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Implements end-to-end ping (from one conference participant to another) via
|
|
151
|
+
* the jitsi-videobridge channel (either WebRTC data channel or web socket).
|
|
152
|
+
*
|
|
153
|
+
* TODO: use a broadcast message instead of individual pings to each remote
|
|
154
|
+
* participant.
|
|
155
|
+
*
|
|
156
|
+
* This class:
|
|
157
|
+
* 1. Sends periodic ping requests to all other participants in the
|
|
158
|
+
* conference.
|
|
159
|
+
* 2. Responds to ping requests from other participants.
|
|
160
|
+
* 3. Fires events with the end-to-end RTT to each participant whenever a
|
|
161
|
+
* response is received.
|
|
162
|
+
* 4. Fires analytics events with the end-to-end RTT periodically.
|
|
163
|
+
*/
|
|
164
|
+
export default class E2ePing {
|
|
165
|
+
/**
|
|
166
|
+
* @param {JitsiConference} conference - The conference.
|
|
167
|
+
* @param {Function} sendMessage - The function to use to send a message.
|
|
168
|
+
* @param {Object} options
|
|
169
|
+
*/
|
|
170
|
+
constructor(conference, options, sendMessage) {
|
|
171
|
+
this.conference = conference;
|
|
172
|
+
this.eventEmitter = conference.eventEmitter;
|
|
173
|
+
this.sendMessage = sendMessage;
|
|
174
|
+
// Maps a participant ID to its ParticipantWrapper
|
|
175
|
+
this.participants = {};
|
|
176
|
+
this.numRequests = DEFAULT_NUM_REQUESTS;
|
|
177
|
+
this.maxConferenceSize = DEFAULT_MAX_CONFERENCE_SIZE;
|
|
178
|
+
this.maxMessagesPerSecond = DEFAULT_MAX_MESSAGES_PER_SECOND;
|
|
179
|
+
if (options?.e2eping) {
|
|
180
|
+
if (typeof options.e2eping.numRequests === 'number') {
|
|
181
|
+
this.numRequests = options.e2eping.numRequests;
|
|
182
|
+
}
|
|
183
|
+
if (typeof options.e2eping.maxConferenceSize === 'number') {
|
|
184
|
+
this.maxConferenceSize = options.e2eping.maxConferenceSize;
|
|
185
|
+
}
|
|
186
|
+
if (typeof options.e2eping.maxMessagesPerSecond === 'number') {
|
|
187
|
+
this.maxMessagesPerSecond = options.e2eping.maxMessagesPerSecond;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
logger.info(`Initializing e2e ping with numRequests=${this.numRequests}, maxConferenceSize=${this.maxConferenceSize}, `
|
|
191
|
+
+ `maxMessagesPerSecond=${this.maxMessagesPerSecond}.`);
|
|
192
|
+
this.participantJoined = this.participantJoined.bind(this);
|
|
193
|
+
this.participantLeft = this.participantLeft.bind(this);
|
|
194
|
+
conference.on(JitsiConferenceEvents.USER_LEFT, this.participantLeft);
|
|
195
|
+
this.messageReceived = this.messageReceived.bind(this);
|
|
196
|
+
conference.on(JitsiConferenceEvents.ENDPOINT_MESSAGE_RECEIVED, this.messageReceived);
|
|
197
|
+
this.conferenceJoined = this.conferenceJoined.bind(this);
|
|
198
|
+
conference.on(JitsiConferenceEvents.CONFERENCE_JOINED, this.conferenceJoined);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Delay processing USER_JOINED events until the MUC is fully joined,
|
|
202
|
+
* otherwise the apparent conference size will be wrong.
|
|
203
|
+
*/
|
|
204
|
+
conferenceJoined() {
|
|
205
|
+
this.conference.getParticipants().forEach(p => this.participantJoined(p.getId(), p));
|
|
206
|
+
this.conference.on(JitsiConferenceEvents.USER_JOINED, this.participantJoined);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Handles a message that was received.
|
|
210
|
+
*
|
|
211
|
+
* @param participant - The message sender.
|
|
212
|
+
* @param payload - The payload of the message.
|
|
213
|
+
*/
|
|
214
|
+
messageReceived(participant, payload) {
|
|
215
|
+
// Listen to E2E PING requests and responses from other participants
|
|
216
|
+
// in the conference.
|
|
217
|
+
if (payload.type === E2E_PING_REQUEST) {
|
|
218
|
+
this.handleRequest(participant.getId(), payload);
|
|
219
|
+
}
|
|
220
|
+
else if (payload.type === E2E_PING_RESPONSE) {
|
|
221
|
+
this.handleResponse(participant.getId(), payload);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Handles a participant joining the conference. Starts to send ping
|
|
226
|
+
* requests to the participant.
|
|
227
|
+
*
|
|
228
|
+
* @param {String} id - The ID of the participant.
|
|
229
|
+
* @param {JitsiParticipant} participant - The participant that joined.
|
|
230
|
+
*/
|
|
231
|
+
participantJoined(id, participant) {
|
|
232
|
+
if (this.participants[id]) {
|
|
233
|
+
logger.info(`Participant wrapper already exists for ${id}. Clearing.`);
|
|
234
|
+
this.participants[id].stop();
|
|
235
|
+
}
|
|
236
|
+
if (this.conference.getParticipants().length > this.maxConferenceSize) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
// We don't need to send e2eping in both directions for a pair of
|
|
240
|
+
// endpoints. Force only one direction with just string comparison of
|
|
241
|
+
// the IDs.
|
|
242
|
+
if (this.conference.myUserId() > id) {
|
|
243
|
+
logger.info(`Starting e2eping for participant ${id}`);
|
|
244
|
+
this.participants[id] = new ParticipantWrapper(participant, this);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Remove a participant without calling "stop".
|
|
249
|
+
*/
|
|
250
|
+
removeParticipant(id) {
|
|
251
|
+
if (this.participants[id]) {
|
|
252
|
+
delete this.participants[id];
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Handles a participant leaving the conference. Stops sending requests.
|
|
257
|
+
*
|
|
258
|
+
* @param {String} id - The ID of the participant.
|
|
259
|
+
*/
|
|
260
|
+
participantLeft(id) {
|
|
261
|
+
if (this.participants[id]) {
|
|
262
|
+
this.participants[id].stop();
|
|
263
|
+
delete this.participants[id];
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Handles a ping request coming from another participant.
|
|
268
|
+
*
|
|
269
|
+
* @param {string} participantId - The ID of the participant who sent the
|
|
270
|
+
* request.
|
|
271
|
+
* @param {Object} request - The request.
|
|
272
|
+
*/
|
|
273
|
+
handleRequest(participantId, request) {
|
|
274
|
+
// If it's a valid request, just send a response.
|
|
275
|
+
if (request?.id) {
|
|
276
|
+
const response = {
|
|
277
|
+
id: request.id,
|
|
278
|
+
type: E2E_PING_RESPONSE
|
|
279
|
+
};
|
|
280
|
+
this.sendMessage(response, participantId);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
logger.info(`Received an invalid e2e ping request from ${participantId}.`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Handles a ping response coming from another participant
|
|
288
|
+
* @param {string} participantId - The ID of the participant who sent the
|
|
289
|
+
* response.
|
|
290
|
+
* @param {Object} response - The response.
|
|
291
|
+
*/
|
|
292
|
+
handleResponse(participantId, response) {
|
|
293
|
+
const participantWrapper = this.participants[participantId];
|
|
294
|
+
if (participantWrapper) {
|
|
295
|
+
participantWrapper.handleResponse(response);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Stops this E2ePing (i.e. stop sending requests).
|
|
300
|
+
*/
|
|
301
|
+
stop() {
|
|
302
|
+
logger.info('Stopping e2eping');
|
|
303
|
+
this.conference.off(JitsiConferenceEvents.USER_JOINED, this.participantJoined);
|
|
304
|
+
this.conference.off(JitsiConferenceEvents.USER_LEFT, this.participantLeft);
|
|
305
|
+
this.conference.off(JitsiConferenceEvents.ENDPOINT_MESSAGE_RECEIVED, this.messageReceived);
|
|
306
|
+
for (const id in this.participants) {
|
|
307
|
+
if (this.participants.hasOwnProperty(id)) {
|
|
308
|
+
this.participants[id].stop();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
this.participants = {};
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=e2eping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2eping.js","sourceRoot":"","sources":["../../../../modules/e2eping/e2eping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import browser from '../browser';
|
|
2
|
+
/**
|
|
3
|
+
* A global module for accessing information about different feature flags state.
|
|
4
|
+
*/
|
|
5
|
+
class FeatureFlags {
|
|
6
|
+
/**
|
|
7
|
+
* Configures the module.
|
|
8
|
+
*
|
|
9
|
+
* @param {object} flags - The feature flags.
|
|
10
|
+
* @param {Optional<boolean>} flags.runInLiteMode - Enables lite mode for testing to disable media decoding.
|
|
11
|
+
* @param {Optional<boolean>} flags.ssrcRewritingEnabled - Use SSRC rewriting.
|
|
12
|
+
*/
|
|
13
|
+
init(flags) {
|
|
14
|
+
this._runInLiteMode = Boolean(flags.runInLiteMode);
|
|
15
|
+
this._ssrcRewriting = Boolean(flags.ssrcRewritingEnabled);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Checks if the run in lite mode is enabled.
|
|
19
|
+
* This will cause any media to be received and not decoded. (Insertable streams are used to discard
|
|
20
|
+
* all media before it is decoded). This can be used for various test scenarios.
|
|
21
|
+
*
|
|
22
|
+
* @returns {boolean}
|
|
23
|
+
*/
|
|
24
|
+
isRunInLiteModeEnabled() {
|
|
25
|
+
return this._runInLiteMode && browser.supportsInsertableStreams();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Checks if the clients supports re-writing of the SSRCs on the media streams by the bridge.
|
|
29
|
+
* @returns {boolean}
|
|
30
|
+
*/
|
|
31
|
+
isSsrcRewritingSupported() {
|
|
32
|
+
return this._ssrcRewriting;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export default new FeatureFlags();
|
|
36
|
+
//# sourceMappingURL=FeatureFlags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureFlags.js","sourceRoot":"","sources":["../../../../modules/flags/FeatureFlags.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC;;GAEG;AACH,MAAM,YAAY;IAId;;;;;;OAMG;IACH,IAAI,CAAC,KAAuF;QACxF,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB;QAClB,OAAO,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC;IACtE,CAAC;IAED;;;OAGG;IACH,wBAAwB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;CACJ;AAED,eAAe,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
import { RTCEvents } from '../../service/RTC/RTCEvents';
|
|
3
|
+
import FeatureFlags from '../flags/FeatureFlags';
|
|
4
|
+
// Flag to set on receivers to avoid setting up the lite mode
|
|
5
|
+
// more than once.
|
|
6
|
+
const kJitsiLiteMode = Symbol('kJitsiLiteMode');
|
|
7
|
+
const logger = getLogger('testing:LiteModeContext');
|
|
8
|
+
/**
|
|
9
|
+
* This module implements a discard-all insertable stream. Use to reduce decoder CPU load for testing.
|
|
10
|
+
*/
|
|
11
|
+
export class LiteModeContext {
|
|
12
|
+
/**
|
|
13
|
+
* A constructor.
|
|
14
|
+
* @param {JitsiConference} conference - The conference instance for which lite mode is to be enabled.
|
|
15
|
+
*/
|
|
16
|
+
constructor(conference) {
|
|
17
|
+
this.enabled = FeatureFlags.isRunInLiteModeEnabled();
|
|
18
|
+
if (!this.enabled) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
conference.rtc.on(RTCEvents.REMOTE_TRACK_ADDED, (track, tpc) => this._setupLiteModeForTrack(tpc, track));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Setup Lite Mode for a track.
|
|
25
|
+
*
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
_setupLiteModeForTrack(tpc, track) {
|
|
29
|
+
if (!this.enabled) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const receiver = tpc.findReceiverForTrack(track.getTrack());
|
|
33
|
+
if (!receiver) {
|
|
34
|
+
logger.warn(`Could not set up lite mode for ${track}: receiver not found in: ${tpc}`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (receiver[kJitsiLiteMode]) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
receiver[kJitsiLiteMode] = true;
|
|
41
|
+
const receiverStreams = receiver.createEncodedStreams();
|
|
42
|
+
const transformStream = new TransformStream({
|
|
43
|
+
transform: () => {
|
|
44
|
+
// Don't call controller.enqueue(encodedFrame), and so drop everything
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
receiverStreams.readable.pipeThrough(transformStream).pipeTo(receiverStreams.writable);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=LiteModeContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiteModeContext.js","sourceRoot":"","sources":["../../../../modules/litemode/LiteModeContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,YAAY,MAAM,uBAAuB,CAAC;AAEjD,6DAA6D;AAC7D,kBAAkB;AAClB,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEhD,MAAM,MAAM,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,OAAO,eAAe;IAGxB;;;OAGG;IACH,YAAY,UAA2B;QACnC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,sBAAsB,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,EAAE,CACb,SAAS,CAAC,kBAAkB,EAC5B,CAAC,KAAuB,EAAE,GAA4B,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,GAA4B,EAAE,KAAuB;QAChF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,kCAAkC,KAAK,4BAA4B,GAAG,EAAE,CAAC,CAAC;YAEtF,OAAO;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3B,OAAO;QACX,CAAC;QACD,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;QAEhC,MAAM,eAAe,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAExD,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC;YACxC,SAAS,EAAE,GAAG,EAAE;gBACZ,sEAAsE;YAC1E,CAAC;SACJ,CAAC,CAAC;QAEH,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC3F,CAAC;CACJ"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
import { default as SignalingLayer } from '../../service/RTC/SignalingLayer';
|
|
3
|
+
const logger = getLogger('proxyconnection:CustomSignalingLayer');
|
|
4
|
+
/**
|
|
5
|
+
* Custom semi-mock implementation for the Proxy connection service.
|
|
6
|
+
*/
|
|
7
|
+
export default class CustomSignalingLayer extends SignalingLayer {
|
|
8
|
+
/**
|
|
9
|
+
* Creates new instance.
|
|
10
|
+
*/
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
this.ssrcOwners = new Map();
|
|
14
|
+
this.chatRoom = null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
19
|
+
getPeerMediaInfo(_owner, _mediaType, _sourceName) {
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @inheritDoc
|
|
24
|
+
*/
|
|
25
|
+
getPeerSourceInfo(_owner, _sourceName) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* @inheritDoc
|
|
30
|
+
*/
|
|
31
|
+
getSSRCOwner(ssrc) {
|
|
32
|
+
return this.ssrcOwners.get(ssrc);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @inheritDoc
|
|
36
|
+
*/
|
|
37
|
+
getTrackSourceName(_ssrc) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @inheritDoc
|
|
42
|
+
*/
|
|
43
|
+
removeSSRCOwners(ssrcList) {
|
|
44
|
+
if (!ssrcList?.length) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
for (const ssrc of ssrcList) {
|
|
48
|
+
this.ssrcOwners.delete(ssrc);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Sets the <tt>ChatRoom</tt> instance used.
|
|
53
|
+
* @param {ChatRoom} room
|
|
54
|
+
*/
|
|
55
|
+
setChatRoom(room) {
|
|
56
|
+
this.chatRoom = room;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @inheritDoc
|
|
60
|
+
*/
|
|
61
|
+
setSSRCOwner(ssrc, endpointId) {
|
|
62
|
+
if (typeof ssrc !== 'number') {
|
|
63
|
+
throw new TypeError(`SSRC(${ssrc}) must be a number`);
|
|
64
|
+
}
|
|
65
|
+
// Now signaling layer instance is shared between different JingleSessionPC instances, so although very unlikely
|
|
66
|
+
// an SSRC conflict could potentially occur. Log a message to make debugging easier.
|
|
67
|
+
const existingOwner = this.ssrcOwners.get(ssrc);
|
|
68
|
+
if (existingOwner && existingOwner !== endpointId) {
|
|
69
|
+
logger.error(`SSRC owner re-assigned from ${existingOwner} to ${endpointId}`);
|
|
70
|
+
}
|
|
71
|
+
this.ssrcOwners.set(ssrc, endpointId);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* @inheritDoc
|
|
75
|
+
*/
|
|
76
|
+
setTrackMuteStatus(_sourceName, _muted) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @inheritDoc
|
|
81
|
+
*/
|
|
82
|
+
setTrackVideoType(_sourceName, _videoType) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* @inheritDoc
|
|
87
|
+
*/
|
|
88
|
+
updateSsrcOwnersOnLeave(id) {
|
|
89
|
+
const ssrcs = Array.from(this.ssrcOwners)
|
|
90
|
+
.filter((entry) => entry[1] === id)
|
|
91
|
+
.map((entry) => entry[0]);
|
|
92
|
+
if (!ssrcs?.length) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.removeSSRCOwners(ssrcs);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=CustomSignalingLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomSignalingLayer.js","sourceRoot":"","sources":["../../../../modules/proxyconnection/CustomSignalingLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAuB,OAAO,IAAI,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGlG,MAAM,MAAM,GAAG,SAAS,CAAC,sCAAsC,CAAC,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,cAAc;IAa5D;;OAEG;IACH;QACI,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACM,gBAAgB,CAAC,MAAc,EAAE,UAAqB,EAAE,WAAmB;QAChF,OAAO,EAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACM,iBAAiB,CAAC,MAAc,EAAE,WAAmB;QAC1D,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACM,YAAY,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACM,kBAAkB,CAAC,KAAa;QACrC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACM,gBAAgB,CAAC,QAAkB;QACxC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,IAAc;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACM,YAAY,CAAC,IAAY,EAAE,UAAkB;QAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CAAC,QAAQ,IAAI,oBAAoB,CAAC,CAAC;QAC1D,CAAC;QAED,gHAAgH;QAChH,oFAAoF;QACpF,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,aAAa,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,+BAA+B,aAAa,OAAO,UAAU,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACM,kBAAkB,CAAC,WAAmB,EAAE,MAAe;QAC5D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACM,iBAAiB,CAAC,WAAmB,EAAE,UAAkB;QAC9D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACM,uBAAuB,CAAC,EAAU;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;aACpC,MAAM,CAAC,CAAC,KAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aACpD,GAAG,CAAC,CAAC,KAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACJ"}
|