feat(ScreenObtainer) add fallback option for Electron
If the enclosing Jitsi Meet app declares gDM in Electron is supported,
ignore the `electronUseGetDisplayMedia` config flag and use the gDM
flow. This facilitates having backwards compatibility since the Electron
app won't know if the deployment it's about to join has the gDM flow
support or not.
feat(JitsiConference) Allow adding multiple tracks to the conference.
This should be supported by the backend. This limitation was added here only because of track synchronization issues between JM and LJM. The support is added behind testing.allowMultipleTracks config.js setting
Fixes https://github.com/jitsi/lib-jitsi-meet/issues/2205
fix(codec) Debounce the call that calc codec intersection set. (#2622)
* fix(codec) Debounce the call that calc codec intersection set.
Calculate codec intersection set only once per second even when there is a burst of joins/leaves. Also, check for current codec before chaining a codec change operation when codec selection API is used.
* squash: Address review comments
Jigasi / Jitsi (desktop) seems to encode apostrophes like (&apos or ') for
instance.
This is notably visible in the subtitles.
Normalize it so it's plain UTF-8.
fix(SDP) Include the trackId in the signaled msid for the source. (#2621)
* fix(SDP) Include the trackId in the signaled msid for the source.
Without the trackID in a=ssrc lines in SDP, older versions of Chrome (108) reject the remote description resulting in endpoint getting kicked out of the conference.
* squash: Fix unit test
fix(video-quality) Fixes an issue where outbound resolution can be stuck at wrong resolution.
The calls to RTCRtpSender.setParameters() are all chained and the current maxHeight is set after the call to setParameters is resolved. If there is another call made to setParameters before the previous one resolves, we can end up passing the wrong maxHeight resulting in the client getting stuck at an unexpected resolution. This issue can be reproduced sometimes when the users are moving across the main and breakout rooms. TPC.setVideoCodecs() ends up pushing a wrong maxHeight for update when the previous call to setParameters hasn't resolved yet.
feat(RTC) drop PERMISSION_PROMPT_IS_SHOWN event (#2609)
* feat(RTC) drop PERMISSION_PROMPT_IS_SHOWN event
It was never accurate since browsers have changed their behavior over
time and can be implemented in the application more reliably.
* squash: Update JitsiMeetJS.ts
* squash: Update hand-crafted JitsiMeetJS.d.ts
---------
Co-authored-by: Дамян Минков <damencho@jitsi.org>
fix(browser) detect WebRTC APIs and mark browser unsupported if not
Some so called "security" browser extensions override WebRTC APIs so
even if the UA string suggests the browser is supported, it won't work.
Coincidentally, this should also mark Safari in Lockdown Mode as
unsupported, since the WebRTC APIs are not available in that case.
fix(TPC) Use videoType from 'source-add' for remote track creation. (#2596)
* fix(TPC) Use videoType from 'source-add' for remote track creation.
If 'source-add' for a remote video source is received before presence for that source, videoType will default to 'camera' and the client wouldn't be able to create the virtual participant tile for rendering the desktop track.
* squash: Include the videoType for no SSRC-rewriting case.
fix(breakout): Clear up request sent on authentication.
If guest authenticates in meeting to become a moderator and creates a breakout room, was not inviting jicofo and fails to join breakout room.
Fixes jitsi/jitsi-meet#15024.
* ref(SDPDiffer) Convert to ES6 class.
Make it work directly with unified plan SDP that has multiple m-lines and add more unit tests.
* ref(xmpp) translate unified-plan SDP->Jingle directly.
Without having to run it through the SDPInterop.toPlanB cycle.
* ref(SDP) Always generate the MSID for signaling it to Jicofo.
* fix(SDPDiffer) Check explicitly for ssrc changes
* fix(SDP): Fix comments and cleanup.
Remove LOCAL_TRACK_SSRC_UPDATED event as the application ignores the event and no additional action needs to be taken when that event is fired.
* ref(SDP) Add a helper function for parsing the 'a=ssrc-group' line.
* squash: Address review comments