Determine the preferred codec for a given endpoint based on the config.js settings and the codecs supported by the endpoint.
The preferred codec is published in presence and then used by the other endpoints in the call during join/leave to determine
if the codec needs to be changed on the fly. Different codecs can be configuered for p2p/jvb connections.
The preferredCodec/disabledCodec settings under videoQuality will have precedence over the older settins like preferH264/disableH264.
feat: Skips using disco-info for features. (#1450)
* fix: Drops unused parameter of join and sendPresence.
* feat: Skips using disco-info for features.
Uses presence to publish features added externally.
Recognizes jigasi participants using a specific presence extension used by jigasi.
* squash: Fixes tests.
* squash: Adds e2ee to the features in presence.
* squash: Fix function name and docs.
* squash: Drops detecting jigasi from initiator.
Using the newly added presence features.
* squash: Drops unused var.
* squash: Fix comments.
* squash: Adds a constant and for E2EEE feature.
fix: Maybe start p2p only when we have received all presences.
There are cases where we start p2p on the first participant received presence, where there are more presences coming. This starts the process of p2p resulting and few iq errors while terminating it quickly after starting it.
On a normal joining as third participant we see around 38 send or received iq messages, in the problem scenario we see 60.
fix: Implement the encodings workaround only on Safari.
Explicitly check if all the encodings report the same scaleResolutionDownBy value before trying to ensure they match the expected values. This makes Chrome VP9 work again.
fix: Updates ping logic around detecting xmpp activity.
Now stores the time of the raw input when ping is received. Before this change we were storing the Date.now and comparing to _getTimeSinceLastServerResponse and we needed small adjustment of values as it may lead to no pings sent.
* feat: Make enableRemb signal client remb support.
* feat: Make enableTcc signal client tcc support.
* ref: Remove the enableOpusRed conference-wide option.
ref(JitsiConference): allow only 1 track per media type
Only one audio or video track is correctly supported by lib-jitsi-meet.
This is an attempt to mitigate an issue reported by the community
where the user's audio is played in the conference even though the UI
shows the user as muted.
fix(last-n): Do not let Jicofo initialize last-n for the whole conference.
The plan is to move the lastNLimits logic to bridge. The clients will be able to override(lower) the bridge limits through the bridge channel only. Also, this lets us configure last-n per receiver and not set the last-n value for the whole conference the way Jicofo sets it currently.
fix(TPC): Ensure encodings resolutions match configured values.
On every call to RTCRtpSender.setParameters(), ensure that the resolution configured for the encoding matches that of the value configured on the RTCRtpSender when the source was added to the peerconnection. This should prevent us from overriding the default values if the browser returns erroneous values when RTCRtpSender.getParameters is used for getting the encodings info. This fixes the issue on recent versions of Safari where the 'scaleResolutionDownBy' value comes back as 1 for all encodings even though the encoding resolution is different from the stream capture resolution.
In p2p mode, 'scaleResolutionDownBy' is used for downscaling a stream when needed, i.e. when the user receives a receive constraint of 360p because the other participant is in tile view. When desktop share is started, the encoding config has to be scaled back up so that the other participant starts receiving HD resolution for the share as desktop shares are autopinned. Therefore, encodings have to enabled/disabled for desktop shares as well. Earlier it was done only for camera tracks.
feat: Reduce pings and adds xmpp ping config (#1389)
* feat: Skips pinging when there was a recent server response.
* feat: Adds options to control xmpp ping settings.
* fix: Fixes wrong default value.
* squash: Received messages in ping interval sets failed ping to 0