If MediaStreamTrack.getSettings() doesn't return the height of the track, use the constraints passed to gUM for calculating the height. Fixes an issue for Firefox/Linux which could result in media not displayed.
fix(video-quality): Adjust encodings bitrates/scalefactor for high capture resolutions (#2436)
* fix(video-quality): Adjust encodings bitrates/scalefactor for high capture resolutions.
When the client is configured to capture camera sources at 1080p or higher, adjust the bitrates and the encodings scale factor accordingly.
* squash: Address review comments
Fix the bitrates set on the remote description and also bump up the bitrates for 1080p, 4k and screenshare.
* squash: Address some more review comments.
fix(video-quality): Remove the encoding check for webkit.
This check is not needed anymore since we now set the correct scaleResolutionDownBy value everytime the encodings are configured. Fixes a regression on Safari where it can end up sending low resolution to a p2p peer in some cases. Also, add more unit tests for p2p desktop share cases.
* fix(RTC): Remove support for plan-b SDP.
Since unified plan mode becomes the default mode, so does multi-stream mode.
* squash: Remove plan-b unit tests and fix comments
* squash: address review comments
fix(TPC): Do not configure 'scaleResolutionDownBy' and 'maxBitrate' for legacy VP9 K-SVC.
When these are configured, the browser sends only the lowest resolution layer even when all the encodings are active. Fixes a quality issue on older versions of Chromium that do not support the scalabilityMode API.
fix(codec-selection): put Av1 support behind a flag.
Fixes an issue with audio after p2p->jvb switch when the media active state is set to false because of a setVideoCodecs call after a remote user joins the call.
#2387 Remove unused layers and width properties from kSimulcastFormats. Improve calculatePacketLoss function. Avoid using string as keys in literal object creation syntax.
There is a lot of additional noise when log level is set to debug, the SDP descriptions should be set to trace (As it seems it was originally intended, based on the name of the variable)
Unify events and output single TypeScript declaration (#2407)
* fix(events): unify events to a single EventManager type, add support for single typescript declaration
* fix(lint): fix lint
* fix(events): fix incorrect instatiation
* fix(events): clean up redundant methods
* fix(events): keep EventEmitter name, alias NodeEventEmitter
* fix(events): fix loose reference
* fix(EventEmitter): remove on/off alias as redundant
* fix(RTCUtils): bring event handlers under class to use same event emitter
* fix(RTCUtils): fix lint
All modern browsers implement window.addEventListener for the 'error'
and 'unhandledrejection' listeners. Thus there is zero benefit from
using the legacy `onerror` handler here and rolling multiple handlers
ourselves.
There is an old config option `enableWindowOnErrorHandler` which was
never whitelisted in Jitsi Meet, so I'm 100% sure nobody is using it.
Even if someone was, migrarting to the above is simply better in every
possible way.
fix(video-quality) Enable TCC support for Firefox 115 and later.
Firefox ESR 115 stops sending REMBs to the bridge under certain network conditions making the bridge suspend all video streams sent to the Firefox eps. It is still unclear why Firefox stops sending REMBs so enabling TCC support as workaround since TCC doesn't seem to have issues with uplink BWE in the older versions.
When a self presence is received ( from mute or something else) during
leave operation, after presence unavailable is sent and before the final
presence unavaliable is received, we were interpreting it as muc joined
since the joined flag was immediately set to false.
fix(codec-selection): Select VP8 as default codec.
When RTCRtpReceiver.getCapabilities() is not supported by browser or if it returns an empty list. Fixes an issue where call doesn't get established in Firefox ESR 102.
Fixes https://github.com/jitsi/jitsi-meet/issues/13839.
fix(TPCUtils) Insert simulcast recv line for all senders on FF.
The simulcast receive lines needs to be inserted in the receive desc for all the m-line associated with local tracks, currently its being done only for the first video source.