feat(silent): track if participant joined without audio (#2534)
* feat(silent): track if participant joined without audio
* Fix failing tests, use jitsi.org namespace
---------
Co-authored-by: Дамян Минков <damencho@jitsi.org>
feat(codec-selection): Use the new codec selection API (#2520)
* feat(codec-selection): Use the new codec selection API
https://github.com/w3ctag/design-reviews/issues/836. This allows the client to seamlessly switch between the codecs without having to trigger a renegotiation.
This feature is behind the flag testing.enableCodecSelectionAPI in config.js
* fix(stats): Fix local resolution stats.
The video codec for the local video sources needs to identified differently now, from the codecs field in the RTCRtpSendParameters returned by the browser. We no longer munge the remote SDP to switch to a different codec.
* feat(stats): Feed encodeTime stats for all local SSRCs to the codec selection mechanism.
* fix(codec-selection) Continue to mumge SDP for selecting H.264.
* feat(codec-selection) Make screenshare codec configurable.
If no 'screenshareCodec' is set under videoQuality or p2p settings, AV1 will be selected as default.
* squash: Address review comments
* Update modules/RTC/CodecSelection.js
Co-authored-by: Saúl Ibarra Corretgé <s@saghul.net>
* fix(codec-selection) Add codec to existing stats
---------
Co-authored-by: Saúl Ibarra Corretgé <s@saghul.net>
fix(JitsiLocalTrack) handle broken constraints more gracefully (#2535)
We are already handling Safari, which provides an empty constraints
object. Handle any type of broken constraints object which doesn't have
at least a `width` and `height` properties. This is the case of Firefox
when "fingerprint resistence" is enabled.
Fixes: https://github.com/jitsi/jitsi-meet/issues/14609
fix(ice-restart): Use an exponential backoff timer for ICE restarts. (#2531)
Use an exponential backoff time for initiating ICE restart to prevent loading the prosody.
When a large number of endpoints loose connection to the signaling and media servers because of an ISP failure, these endpoints will try to reconnect at the same time causing a storm of source-remove/source-add events to the signaling servers that can lead to prosody going down otherwise.
feat(JitsiMediaDevices) don't initialize in the constructor
It's very odd to start receiving events and logs about device changes
when lib-jitsi-meet has not been initialized yet.
Delay initialization until JitsiMeetJS.init has been called, which is
the very first thing users need to call anyway.
fix(ssrc-rewriting): Check if track exists before updating owner/sourceName.
Fixes missing audio issue when the bridge resends the full audio map even before the track for the SSRCs signaled before are created. This is possible when the RTP packets race with the thread that completed the websocket connection.
Local and remote Jitsi tracks expose a reference to the
`JitsiConference` through `track.conference`. This was not available in
the TypeScript definitions.
Local tracks are initialized with `conference = null` but will be set
later, assuming the caller adds the track to a conference. Remote tracks
are always associated with a conference.
* fix: Fixes double conf requests & always send them after presence error.
* Revert "fix: Sends conference requests on retries of errors."
Seems we are sending two conference requests in the happy path.
This reverts commit 86e2fb2bed.
* fix: Sends conference requests on retries of errors.
This changes the behavior of retires when Room creation restricted error is received, we will always send the conference request to jicofo when retrying.
Also, after error for password protected rooms and providing password, a conference request was not send which can result jicofo left the room and error is received.
fix(ssrc-rewriting): Check for track owner/sourceName before calling TRACK_OWNER_SET.
When the bridge WS is re-established, jvb sends the full map of audio and video sources. Without the check, the library will end up firing TRACK_REMOVED and TRACK_ADDED for all the exiting tracks.
Also, process audio and video source maps only on JVB sessions.
fix(ssrc-rewriting): Fire track removed/added instead of owner changed.
When an existing SSRC for a remote track gets re-mapped from one source to another, fire a TRACK_REMOVED event followed by TRACK_ADDED event instead of TRACK_OWNER_CHANGED event. This should simplify the application logic for track handling.
fix: Sends conference requests on retries of errors.
This changes the behavior of retires when Room creation restricted error is received, we will always send the conference request to jicofo when retrying.
Also, after error for password protected rooms and providing password, a conference request was not send which can result jicofo left the room and error is received.
webrtc-adapter transforms "deviceId": "foo" to "deviceId": { ideal:
"foo"}.
This makes the camera non-selectable if the resolution constraints are
not met.
Setting the constraint to exact will sidestep that adapter behavior, and
express stronger intent.
fix(statistics) initialize LocalStatsCollector on Statistics.init
Creating the AudioContext at import time means a warning line is printed
in the JS console even before the user has a chance of initializing the
library, which is weird.
There is no harm in initializing it in init since it's the first thing
the user needs to do in order to use the library.
feat: Introduces connection event for custom properties. (#2493)
* feat: Introduces connection event for custom properties.
Used for shard and region values coming from the backend.
* squash: Update JitsiConnectionEvents.ts
* squash: Update JitsiConnectionEvents.ts