@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 @@
|
|
|
1
|
+
{"version":3,"file":"SampleSdpStrings.js","sourceRoot":"","sources":["../../../../modules/sdp/SampleSdpStrings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import * as transform from 'sdp-transform';
|
|
2
|
+
import { MediaDirection } from '../../service/RTC/MediaDirection';
|
|
3
|
+
import { MediaType } from '../../service/RTC/MediaType';
|
|
4
|
+
import { SIM_LAYERS, SSRC_GROUP_SEMANTICS } from '../../service/RTC/StandardVideoQualitySettings';
|
|
5
|
+
/**
|
|
6
|
+
* This class handles SDP munging for enabling simulcast for local video streams in Unified plan. A set of random SSRCs
|
|
7
|
+
* are generated for the higher layer streams and they are cached for a given mid. The cached SSRCs are then reused on
|
|
8
|
+
* the subsequent iterations while munging the local description. This class also handles imploding of the simulcast
|
|
9
|
+
* SSRCs for remote endpoints into the primary FID group in remote description since Jicofo signals all SSRCs relevant
|
|
10
|
+
* to a given endpoint.
|
|
11
|
+
*/
|
|
12
|
+
export default class SdpSimulcast {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new instance.
|
|
15
|
+
*
|
|
16
|
+
* @param options
|
|
17
|
+
*/
|
|
18
|
+
constructor() {
|
|
19
|
+
this._ssrcCache = new Map();
|
|
20
|
+
this._numOfLayers = SIM_LAYERS.length;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Updates the given media description using the SSRCs that were cached for the mid associated
|
|
24
|
+
* with the media description and returns the modified media description.
|
|
25
|
+
*
|
|
26
|
+
* @param mLine
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
_fillSsrcsFromCache(mLine) {
|
|
30
|
+
const mid = mLine.mid;
|
|
31
|
+
const cachedSsrcs = this._ssrcCache.get(mid);
|
|
32
|
+
const newSsrcs = this._parseSimLayers(mLine);
|
|
33
|
+
const newMsid = this._getSsrcAttribute(mLine, newSsrcs[0], 'msid');
|
|
34
|
+
const newCname = this._getSsrcAttribute(mLine, newSsrcs[0], 'cname');
|
|
35
|
+
mLine.ssrcs = [];
|
|
36
|
+
mLine.ssrcGroups = [];
|
|
37
|
+
for (const ssrc of cachedSsrcs) {
|
|
38
|
+
mLine.ssrcs.push({
|
|
39
|
+
attribute: 'msid',
|
|
40
|
+
id: ssrc,
|
|
41
|
+
value: newMsid
|
|
42
|
+
});
|
|
43
|
+
mLine.ssrcs.push({
|
|
44
|
+
attribute: 'cname',
|
|
45
|
+
id: ssrc,
|
|
46
|
+
value: newCname
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
mLine.ssrcGroups.push({
|
|
50
|
+
semantics: SSRC_GROUP_SEMANTICS.SIM,
|
|
51
|
+
ssrcs: cachedSsrcs.join(' ')
|
|
52
|
+
});
|
|
53
|
+
return mLine;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Generates a new set of SSRCs for the higher simulcast layers/streams and adds the attributes and SIM group to
|
|
57
|
+
* the given media description and returns the modified media description.
|
|
58
|
+
*
|
|
59
|
+
* @param mLine
|
|
60
|
+
* @param primarySsrc
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
63
|
+
_generateNewSsrcsForSimulcast(mLine, primarySsrc) {
|
|
64
|
+
const cname = this._getSsrcAttribute(mLine, primarySsrc, 'cname');
|
|
65
|
+
let msid = this._getSsrcAttribute(mLine, primarySsrc, 'msid');
|
|
66
|
+
// In Unified-plan mode, the a=ssrc lines with the msid attribute are not present (only cname attributes are
|
|
67
|
+
// present) in the answers that Chrome and Safari generate for an offer received from Jicofo. Generate these
|
|
68
|
+
// a=ssrc lines using the msid values from the a=msid line.
|
|
69
|
+
if (!msid) {
|
|
70
|
+
msid = mLine.msid;
|
|
71
|
+
const primarySsrcs = mLine.ssrcs;
|
|
72
|
+
primarySsrcs.forEach(ssrc => {
|
|
73
|
+
mLine.ssrcs.push({
|
|
74
|
+
attribute: 'msid',
|
|
75
|
+
id: ssrc.id,
|
|
76
|
+
value: msid
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
// Generate SIM layers.
|
|
81
|
+
const simSsrcs = [];
|
|
82
|
+
for (let i = 0; i < this._numOfLayers - 1; ++i) {
|
|
83
|
+
const simSsrc = this._generateSsrc();
|
|
84
|
+
mLine.ssrcs.push({
|
|
85
|
+
attribute: 'cname',
|
|
86
|
+
id: simSsrc,
|
|
87
|
+
value: cname
|
|
88
|
+
});
|
|
89
|
+
mLine.ssrcs.push({
|
|
90
|
+
attribute: 'msid',
|
|
91
|
+
id: simSsrc,
|
|
92
|
+
value: msid
|
|
93
|
+
});
|
|
94
|
+
simSsrcs.push(simSsrc);
|
|
95
|
+
}
|
|
96
|
+
mLine.ssrcGroups = mLine.ssrcGroups || [];
|
|
97
|
+
mLine.ssrcGroups.push({
|
|
98
|
+
semantics: SSRC_GROUP_SEMANTICS.SIM,
|
|
99
|
+
ssrcs: `${primarySsrc} ${simSsrcs.join(' ')}`
|
|
100
|
+
});
|
|
101
|
+
return mLine;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Returns a random number to be used for the SSRC.
|
|
105
|
+
*
|
|
106
|
+
* @returns
|
|
107
|
+
*/
|
|
108
|
+
_generateSsrc() {
|
|
109
|
+
const max = 0xffffffff;
|
|
110
|
+
return Math.floor(Math.random() * max);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Returns the requested attribute value for a SSRC from a given media description.
|
|
114
|
+
*
|
|
115
|
+
* @param mLine
|
|
116
|
+
* @param ssrc
|
|
117
|
+
* @param attributeName
|
|
118
|
+
* @returns
|
|
119
|
+
*/
|
|
120
|
+
_getSsrcAttribute(mLine, ssrc, attributeName) {
|
|
121
|
+
return mLine.ssrcs?.find(ssrcInfo => Number(ssrcInfo.id) === ssrc
|
|
122
|
+
&& ssrcInfo.attribute === attributeName)?.value;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns an array of all the primary SSRCs in the SIM group for a given media description.
|
|
126
|
+
*
|
|
127
|
+
* @param mLine
|
|
128
|
+
* @returns
|
|
129
|
+
*/
|
|
130
|
+
_parseSimLayers(mLine) {
|
|
131
|
+
const simGroup = mLine.ssrcGroups?.find(group => group.semantics === SSRC_GROUP_SEMANTICS.SIM);
|
|
132
|
+
if (simGroup) {
|
|
133
|
+
return simGroup.ssrcs.split(' ').map(ssrc => Number(ssrc));
|
|
134
|
+
}
|
|
135
|
+
if (mLine.ssrcs?.length) {
|
|
136
|
+
return [Number(mLine.ssrcs[0].id)];
|
|
137
|
+
}
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Munges the given media description to enable simulcast for the video media sections that are in either have
|
|
142
|
+
* SENDRECV or SENDONLY as the media direction thereby ignoring all the RECVONLY transceivers created for remote
|
|
143
|
+
* endpoints.
|
|
144
|
+
* NOTE: This needs to be called only when simulcast is enabled.
|
|
145
|
+
*
|
|
146
|
+
* @param description
|
|
147
|
+
* @returns
|
|
148
|
+
*/
|
|
149
|
+
mungeLocalDescription(description) {
|
|
150
|
+
if (!description?.sdp) {
|
|
151
|
+
return description;
|
|
152
|
+
}
|
|
153
|
+
const session = transform.parse(description.sdp);
|
|
154
|
+
for (let media of session.media) {
|
|
155
|
+
// Ignore recvonly and inactive transceivers created for remote sources.
|
|
156
|
+
if (media.direction === MediaDirection.RECVONLY || media.direction === MediaDirection.INACTIVE) {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
// Ignore audio m-lines.
|
|
160
|
+
if (media.type !== MediaType.VIDEO) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
const mid = media.mid;
|
|
164
|
+
const numSsrcs = new Set(media.ssrcs?.map(ssrcInfo => ssrcInfo.id));
|
|
165
|
+
const numGroups = media.ssrcGroups?.length ?? 0;
|
|
166
|
+
let primarySsrc;
|
|
167
|
+
// Do not munge if the description has no ssrcs or if simulcast is already enabled.
|
|
168
|
+
if (numSsrcs.size === 0 || numSsrcs.size > 2 || (numSsrcs.size === 2 && numGroups === 0)) {
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
if (numSsrcs.size === 1) {
|
|
172
|
+
primarySsrc = Number(media.ssrcs[0]?.id);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
const fidGroup = media.ssrcGroups.find(group => group.semantics === SSRC_GROUP_SEMANTICS.FID);
|
|
176
|
+
if (fidGroup) {
|
|
177
|
+
primarySsrc = Number(fidGroup.ssrcs.split(' ')[0]);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (this._ssrcCache.has(mid)) {
|
|
181
|
+
media = this._fillSsrcsFromCache(media);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
media = this._generateNewSsrcsForSimulcast(media, primarySsrc);
|
|
185
|
+
const simulcastSsrcs = this._parseSimLayers(media);
|
|
186
|
+
// Update the SSRCs in the cache so that they can re-used for the same mid again.
|
|
187
|
+
this._ssrcCache.set(mid, simulcastSsrcs);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return new RTCSessionDescription({
|
|
191
|
+
sdp: transform.write(session),
|
|
192
|
+
type: description.type
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=SdpSimulcast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdpSimulcast.js","sourceRoot":"","sources":["../../../../modules/sdp/SdpSimulcast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import transform from 'sdp-transform';
|
|
2
|
+
import { SSRC_GROUP_SEMANTICS } from '../../service/RTC/StandardVideoQualitySettings';
|
|
3
|
+
/**
|
|
4
|
+
* Parses the primary SSRC of given SSRC group.
|
|
5
|
+
* @param {object} group the SSRC group object as defined by the 'sdp-transform'
|
|
6
|
+
* @return {Number} the primary SSRC number
|
|
7
|
+
*/
|
|
8
|
+
export function parsePrimarySSRC(group) {
|
|
9
|
+
return parseInt(group.ssrcs.split(' ')[0], 10);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Parses the secondary SSRC of given SSRC group.
|
|
13
|
+
* @param {object} group the SSRC group object as defined by the 'sdp-transform'
|
|
14
|
+
* @return {Number} the secondary SSRC number
|
|
15
|
+
*/
|
|
16
|
+
export function parseSecondarySSRC(group) {
|
|
17
|
+
return parseInt(group.ssrcs.split(' ')[1], 10);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Tells how many distinct SSRCs are contained in given media line.
|
|
21
|
+
* @param {Object} MediaDescription the media line object as defined by 'sdp-transform' lib
|
|
22
|
+
* @return {number}
|
|
23
|
+
*/
|
|
24
|
+
function _getSSRCCount(mLine) {
|
|
25
|
+
if (!mLine.ssrcs) {
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
return mLine.ssrcs
|
|
29
|
+
.map(ssrcInfo => ssrcInfo.id)
|
|
30
|
+
.filter((ssrc, index, array) => array.indexOf(ssrc) === index)
|
|
31
|
+
.length;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A wrapper around 'sdp-transform' media description object which provides
|
|
35
|
+
* utility methods for common SDP/SSRC related operations.
|
|
36
|
+
*/
|
|
37
|
+
export class MLineWrap {
|
|
38
|
+
/**
|
|
39
|
+
* Creates new <tt>MLineWrap</t>>
|
|
40
|
+
* @param {Object} _mLine the media line object as defined by 'sdp-transform'
|
|
41
|
+
* lib.
|
|
42
|
+
*/
|
|
43
|
+
constructor(mLine) {
|
|
44
|
+
if (!mLine) {
|
|
45
|
+
throw new Error('mLine is undefined');
|
|
46
|
+
}
|
|
47
|
+
this._mLine = mLine;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Getter for the mLine's "ssrcs" array. If the array was undefined an empty
|
|
51
|
+
* one will be preassigned.
|
|
52
|
+
*
|
|
53
|
+
* @return {Array<Object>} an array of 'sdp-transform' SSRC attributes
|
|
54
|
+
* objects.
|
|
55
|
+
*/
|
|
56
|
+
get ssrcs() {
|
|
57
|
+
if (!this._mLine.ssrcs) {
|
|
58
|
+
this._mLine.ssrcs = [];
|
|
59
|
+
}
|
|
60
|
+
return this._mLine.ssrcs;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Setter for the mLine's "ssrcs" array.
|
|
64
|
+
*
|
|
65
|
+
* @param {Array<Object>} ssrcs an array of 'sdp-transform' SSRC attributes
|
|
66
|
+
* objects.
|
|
67
|
+
*/
|
|
68
|
+
set ssrcs(ssrcs) {
|
|
69
|
+
this._mLine.ssrcs = ssrcs;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Returns the direction of the underlying media description.
|
|
73
|
+
* @return {Optional<string>} the media direction name as defined in the SDP.
|
|
74
|
+
*/
|
|
75
|
+
get direction() {
|
|
76
|
+
return this._mLine.direction;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Modifies the direction of the underlying media description.
|
|
80
|
+
* @param {Optional<string>} direction the new direction to be set
|
|
81
|
+
*/
|
|
82
|
+
set direction(direction) {
|
|
83
|
+
this._mLine.direction = direction;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Exposes the SSRC group array of the underlying media description object.
|
|
87
|
+
* @return {MediaDescription['ssrcGroups']}
|
|
88
|
+
*/
|
|
89
|
+
get ssrcGroups() {
|
|
90
|
+
if (!this._mLine.ssrcGroups) {
|
|
91
|
+
this._mLine.ssrcGroups = [];
|
|
92
|
+
}
|
|
93
|
+
return this._mLine.ssrcGroups;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Modifies the SSRC groups array of the underlying media description
|
|
97
|
+
* object.
|
|
98
|
+
* @param {MediaDescription['ssrcGroups']} ssrcGroups
|
|
99
|
+
*/
|
|
100
|
+
set ssrcGroups(ssrcGroups) {
|
|
101
|
+
this._mLine.ssrcGroups = ssrcGroups;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Obtains value from SSRC attribute.
|
|
105
|
+
* @param {number} ssrcNumber the SSRC number for which attribute is to be
|
|
106
|
+
* found
|
|
107
|
+
* @param {string} attrName the name of the SSRC attribute to be found.
|
|
108
|
+
* @return {Optional<string>} the value of SSRC attribute or
|
|
109
|
+
* <tt>undefined</tt> if no such attribute exists.
|
|
110
|
+
*/
|
|
111
|
+
getSSRCAttrValue(ssrcNumber, attrName) {
|
|
112
|
+
const attribute = this.ssrcs.find(ssrcObj => ssrcObj.id === ssrcNumber
|
|
113
|
+
&& ssrcObj.attribute === attrName);
|
|
114
|
+
return attribute?.value;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Removes all attributes for given SSRC number.
|
|
118
|
+
* @param {number} ssrcNum the SSRC number for which all attributes will be
|
|
119
|
+
* removed.
|
|
120
|
+
*/
|
|
121
|
+
removeSSRC(ssrcNum) {
|
|
122
|
+
if (!this._mLine.ssrcs?.length) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
this._mLine.ssrcs
|
|
126
|
+
= this._mLine.ssrcs.filter(ssrcObj => ssrcObj.id !== ssrcNum);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Adds SSRC attribute
|
|
130
|
+
* @param {object} ssrcObj the SSRC attribute object as defined in
|
|
131
|
+
* the 'sdp-transform' lib.
|
|
132
|
+
*/
|
|
133
|
+
addSSRCAttribute(ssrcObj) {
|
|
134
|
+
this.ssrcs.push(ssrcObj);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Finds a SSRC group matching both semantics and SSRCs in order.
|
|
138
|
+
* @param {string} semantics the name of the semantics
|
|
139
|
+
* @param {string} [ssrcs] group SSRCs as a string (like it's defined in
|
|
140
|
+
* SSRC group object of the 'sdp-transform' lib) e.g. "1232546 342344 25434"
|
|
141
|
+
* @return {Optional<MediaDescription['ssrcGroups'][number]>} the SSRC group object or <tt>undefined</tt> if not found.
|
|
142
|
+
*/
|
|
143
|
+
findGroup(semantics, ssrcs) {
|
|
144
|
+
return this.ssrcGroups.find(group => group.semantics === semantics
|
|
145
|
+
&& (!ssrcs || ssrcs === group.ssrcs));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Finds all groups matching given semantic's name.
|
|
149
|
+
* @param {string} semantics the name of the semantics
|
|
150
|
+
* @return {MediaDescription['ssrcGroups']} an array of SSRC group objects as defined by the 'sdp-transform' lib.
|
|
151
|
+
*/
|
|
152
|
+
findGroups(semantics) {
|
|
153
|
+
return this.ssrcGroups.filter(group => group.semantics === semantics);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Finds all groups matching given semantic's name and group's primary SSRC.
|
|
157
|
+
* @param {string} semantics the name of the semantics
|
|
158
|
+
* @param {number} primarySSRC the primary SSRC number to be matched
|
|
159
|
+
* @return {Optional<MediaDescription['ssrcGroups'][number]>} SSRC group object as defined by the 'sdp-transform' lib.
|
|
160
|
+
*/
|
|
161
|
+
findGroupByPrimarySSRC(semantics, primarySSRC) {
|
|
162
|
+
return this.ssrcGroups.find(group => group.semantics === semantics
|
|
163
|
+
&& parsePrimarySSRC(group) === primarySSRC);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Gets the SSRC count for the underlying media description.
|
|
167
|
+
* @return {number}
|
|
168
|
+
*/
|
|
169
|
+
getSSRCCount() {
|
|
170
|
+
return _getSSRCCount(this._mLine);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Checks whether the underlying media description contains any SSRC groups.
|
|
174
|
+
* @return {boolean} <tt>true</tt> if there are any SSRC groups or
|
|
175
|
+
* <tt>false</tt> otherwise.
|
|
176
|
+
*/
|
|
177
|
+
containsAnySSRCGroups() {
|
|
178
|
+
return this._mLine.ssrcGroups !== undefined;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Finds the primary video SSRC.
|
|
182
|
+
* @returns {Optional<number>} the primary video ssrc
|
|
183
|
+
* @throws Error if the underlying media description is not a video
|
|
184
|
+
*/
|
|
185
|
+
getPrimaryVideoSsrc() {
|
|
186
|
+
const mediaType = this._mLine.type;
|
|
187
|
+
if (mediaType !== 'video') {
|
|
188
|
+
throw new Error(`getPrimarySsrc doesn't work with '${mediaType}'`);
|
|
189
|
+
}
|
|
190
|
+
const numSsrcs = _getSSRCCount(this._mLine);
|
|
191
|
+
if (numSsrcs === 1) {
|
|
192
|
+
// Not using "ssrcs" getter on purpose here
|
|
193
|
+
return this._mLine.ssrcs[0].id;
|
|
194
|
+
}
|
|
195
|
+
// Look for a SIM, FID, or FEC-FR group
|
|
196
|
+
if (this._mLine.ssrcGroups) {
|
|
197
|
+
const simGroup = this.findGroup(SSRC_GROUP_SEMANTICS.SIM);
|
|
198
|
+
if (simGroup) {
|
|
199
|
+
return parsePrimarySSRC(simGroup);
|
|
200
|
+
}
|
|
201
|
+
const fidGroup = this.findGroup(SSRC_GROUP_SEMANTICS.FID);
|
|
202
|
+
if (fidGroup) {
|
|
203
|
+
return parsePrimarySSRC(fidGroup);
|
|
204
|
+
}
|
|
205
|
+
const fecGroup = this.findGroup('FEC-FR');
|
|
206
|
+
if (fecGroup) {
|
|
207
|
+
return parsePrimarySSRC(fecGroup);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Obtains RTX SSRC from the underlying video description (the
|
|
213
|
+
* secondary SSRC of the first "FID" group found)
|
|
214
|
+
* @param {number} primarySsrc the video ssrc for which to find the
|
|
215
|
+
* corresponding rtx ssrc
|
|
216
|
+
* @returns {Optional<number>} the rtx ssrc (or undefined if there isn't
|
|
217
|
+
* one)
|
|
218
|
+
*/
|
|
219
|
+
getRtxSSRC(primarySsrc) {
|
|
220
|
+
const fidGroup = this.findGroupByPrimarySSRC(SSRC_GROUP_SEMANTICS.FID, primarySsrc);
|
|
221
|
+
return fidGroup && parseSecondarySSRC(fidGroup);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Obtains all SSRCs contained in the underlying media description.
|
|
225
|
+
* @return {Array.<number>} an array with all SSRC as numbers.
|
|
226
|
+
*/
|
|
227
|
+
getSSRCs() {
|
|
228
|
+
return this.ssrcs
|
|
229
|
+
.map(ssrcInfo => ssrcInfo.id)
|
|
230
|
+
.filter((ssrc, index, array) => array.indexOf(ssrc) === index);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Obtains primary video SSRCs.
|
|
234
|
+
* @return {Array.<number>} an array of all primary video SSRCs as numbers.
|
|
235
|
+
* @throws Error if the wrapped media description is not a video.
|
|
236
|
+
*/
|
|
237
|
+
getPrimaryVideoSSRCs() {
|
|
238
|
+
const mediaType = this._mLine.type;
|
|
239
|
+
if (mediaType !== 'video') {
|
|
240
|
+
throw new Error(`getPrimaryVideoSSRCs doesn't work with ${mediaType}`);
|
|
241
|
+
}
|
|
242
|
+
const videoSSRCs = this.getSSRCs();
|
|
243
|
+
for (const ssrcGroupInfo of this.ssrcGroups) {
|
|
244
|
+
// Right now, FID and FEC-FR groups are the only ones we parse to
|
|
245
|
+
// disqualify streams. If/when others arise we'll
|
|
246
|
+
// need to add support for them here
|
|
247
|
+
if (ssrcGroupInfo.semantics === SSRC_GROUP_SEMANTICS.FID
|
|
248
|
+
|| ssrcGroupInfo.semantics === 'FEC-FR') {
|
|
249
|
+
// secondary streams should be filtered out
|
|
250
|
+
const secondarySsrc = parseSecondarySSRC(ssrcGroupInfo);
|
|
251
|
+
videoSSRCs.splice(videoSSRCs.indexOf(secondarySsrc), 1);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return videoSSRCs;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Removes all SSRC groups which contain given SSRC number at any position.
|
|
258
|
+
* @param {number} ssrc the SSRC for which all matching groups are to be
|
|
259
|
+
* removed.
|
|
260
|
+
*/
|
|
261
|
+
removeGroupsWithSSRC(ssrc) {
|
|
262
|
+
if (!this._mLine.ssrcGroups) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
this._mLine.ssrcGroups = this._mLine.ssrcGroups
|
|
266
|
+
.filter(groupInfo => groupInfo.ssrcs.indexOf(`${ssrc}`) === -1);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Removes groups that match given semantics.
|
|
270
|
+
* @param {string} semantics e.g. "SIM" or "FID"
|
|
271
|
+
*/
|
|
272
|
+
removeGroupsBySemantics(semantics) {
|
|
273
|
+
if (!this._mLine.ssrcGroups) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
this._mLine.ssrcGroups
|
|
277
|
+
= this._mLine.ssrcGroups
|
|
278
|
+
.filter(groupInfo => groupInfo.semantics !== semantics);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Adds given SSRC group to this media description.
|
|
282
|
+
* @param {object} group the SSRC group object as defined by
|
|
283
|
+
* the 'sdp-transform' lib.
|
|
284
|
+
*/
|
|
285
|
+
addSSRCGroup(group) {
|
|
286
|
+
this.ssrcGroups.push(group);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Utility class for SDP manipulation using the 'sdp-transform' library.
|
|
291
|
+
*
|
|
292
|
+
* Typical use usage scenario:
|
|
293
|
+
*
|
|
294
|
+
* const transformer = new SdpTransformWrap(rawSdp);
|
|
295
|
+
* const videoMLine = transformer.selectMedia('video);
|
|
296
|
+
* if (videoMLine) {
|
|
297
|
+
* videoMLiner.addSSRCAttribute({
|
|
298
|
+
* id: 2342343,
|
|
299
|
+
* attribute: "cname",
|
|
300
|
+
* value: "someCname"
|
|
301
|
+
* });
|
|
302
|
+
* rawSdp = transformer.toRawSdp();
|
|
303
|
+
* }
|
|
304
|
+
*/
|
|
305
|
+
export class SdpTransformWrap {
|
|
306
|
+
/**
|
|
307
|
+
* Creates new instance and parses the raw SDP into objects using
|
|
308
|
+
* 'sdp-transform' lib.
|
|
309
|
+
* @param {string} rawSDP the SDP in raw text format.
|
|
310
|
+
*/
|
|
311
|
+
constructor(rawSDP) {
|
|
312
|
+
this.parsedSDP = transform.parse(rawSDP);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Selects all the m-lines from the SDP for a given media type.
|
|
316
|
+
*
|
|
317
|
+
* @param {string} mediaType the name of the media e.g. 'audio', 'video', 'data'.
|
|
318
|
+
* @return {MLineWrap|null} return {@link MLineWrap} instance for the media line or <tt>null</tt> if not found. The
|
|
319
|
+
* object returned references the underlying SDP state held by this <tt>SdpTransformWrap</tt> instance (it's not a
|
|
320
|
+
* copy).
|
|
321
|
+
*/
|
|
322
|
+
selectMedia(mediaType) {
|
|
323
|
+
const selectedMLines = this.parsedSDP.media
|
|
324
|
+
.filter(mLine => mLine.type === mediaType)
|
|
325
|
+
.map(mLine => new MLineWrap(mLine));
|
|
326
|
+
return selectedMLines ?? null;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Converts the currently stored SDP state in this instance to raw text SDP
|
|
330
|
+
* format.
|
|
331
|
+
* @return {string}
|
|
332
|
+
*/
|
|
333
|
+
toRawSDP() {
|
|
334
|
+
return transform.write(this.parsedSDP);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=SdpTransformUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdpTransformUtil.js","sourceRoot":"","sources":["../../../../modules/sdp/SdpTransformUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../modules/sdp/constants.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { jitsiLocalStorage } from '@jitsi/js-utils';
|
|
2
|
+
import { getLogger } from '@jitsi/logger';
|
|
3
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
4
|
+
import { generateUsername } from '../util/UsernameGenerator';
|
|
5
|
+
const logger = getLogger('settings:Settings');
|
|
6
|
+
let _callStatsUserName = null;
|
|
7
|
+
let _machineId = null;
|
|
8
|
+
const Settings = {
|
|
9
|
+
/**
|
|
10
|
+
* The storage used to store the settings.
|
|
11
|
+
*/
|
|
12
|
+
_storage: jitsiLocalStorage,
|
|
13
|
+
/**
|
|
14
|
+
* Returns the ID to use for the purposes of stats, saved in localstorage as "callStatsUserName".
|
|
15
|
+
* @returns {string} fake username for callstats
|
|
16
|
+
*/
|
|
17
|
+
get callStatsUserName() {
|
|
18
|
+
if (!_callStatsUserName) {
|
|
19
|
+
_callStatsUserName = this._storage.getItem('callStatsUserName');
|
|
20
|
+
if (!_callStatsUserName) {
|
|
21
|
+
_callStatsUserName = _generateStatsId();
|
|
22
|
+
this._storage.setItem('callStatsUserName', _callStatsUserName);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return _callStatsUserName;
|
|
26
|
+
},
|
|
27
|
+
/**
|
|
28
|
+
* Initializes the Settings class.
|
|
29
|
+
*
|
|
30
|
+
* @param {Storage|undefined} externalStorage - Object that implements the Storage interface. This object will be
|
|
31
|
+
* used for storing data instead of jitsiLocalStorage if specified.
|
|
32
|
+
*/
|
|
33
|
+
init(externalStorage) {
|
|
34
|
+
this._storage = externalStorage || jitsiLocalStorage;
|
|
35
|
+
},
|
|
36
|
+
/**
|
|
37
|
+
* Returns current machine id.
|
|
38
|
+
* @returns {string} machine id
|
|
39
|
+
*/
|
|
40
|
+
get machineId() {
|
|
41
|
+
if (!_machineId) {
|
|
42
|
+
const amDid = this._storage.getItem('billingId');
|
|
43
|
+
_machineId = amDid || this._storage.getItem('jitsiMeetId');
|
|
44
|
+
if (amDid) {
|
|
45
|
+
this._storage.setItem('jitsiMeetId', amDid);
|
|
46
|
+
}
|
|
47
|
+
else if (!_machineId) {
|
|
48
|
+
_machineId = generateJitsiMeetId();
|
|
49
|
+
this._storage.setItem('jitsiMeetId', _machineId);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return _machineId;
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* Returns current session id.
|
|
56
|
+
* @returns {string} current session id
|
|
57
|
+
*/
|
|
58
|
+
get sessionId() {
|
|
59
|
+
// We may update sessionId in localStorage from another JitsiConference
|
|
60
|
+
// instance and that's why we should always re-read it.
|
|
61
|
+
return this._storage.getItem('sessionId') || '';
|
|
62
|
+
},
|
|
63
|
+
/**
|
|
64
|
+
* Save current session id.
|
|
65
|
+
* @param {string} sessionId session id
|
|
66
|
+
*/
|
|
67
|
+
set sessionId(sessionId) {
|
|
68
|
+
if (sessionId) {
|
|
69
|
+
this._storage.setItem('sessionId', sessionId);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this._storage.removeItem('sessionId');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Generate a random ID to be used for statistics.
|
|
78
|
+
* @returns {string} the random ID
|
|
79
|
+
*/
|
|
80
|
+
function _generateStatsId() {
|
|
81
|
+
const username = generateUsername();
|
|
82
|
+
logger.info('generated stats id', username);
|
|
83
|
+
return username;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Generate unique id.
|
|
87
|
+
* @returns {string} random unique id
|
|
88
|
+
*/
|
|
89
|
+
function generateJitsiMeetId() {
|
|
90
|
+
const jitsiMeetId = uuidv4().replaceAll('-', '');
|
|
91
|
+
logger.info('generated id', jitsiMeetId);
|
|
92
|
+
return jitsiMeetId;
|
|
93
|
+
}
|
|
94
|
+
export default Settings;
|
|
95
|
+
//# sourceMappingURL=Settings.js.map
|