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
this moves the determination of the git commit to webpack-shared-config
LIB_JITSI_MEET_COMMIT_HASH is still kept for backward compatibility
fix(build) in case git fails use development
fix(SDP): Negotiate only baseline H.264 codecs for p2p.
Chrome on macOS recently started offering encoder for higher level (5.2) but decoder only for level 3.1. See https://issues.chromium.org/issues/324930413
Therefore, filter out all H.264 payload types with main and high profiles. Also, sort all H.264 payload types so that same pt is picked for both H.264 encoder and decoder. Fixes random black tile issues across different browsers when H.264 is the preferred codec for p2p.
fix(TPCUtils): Chain both RTCRtpSender getParameters and setParameters call properly.
Firefox 123 started throwing an error when the transction ids for getParamters and setParameters don't match. This can result in Firefox not establishing a p2p connection with a remote peer when it is the offerer.
fix(SDP): Generate msid attr for source when browser doesn't produce one.
Chrome 122 does not generate a 'msid' attribute in the local SDP when a local source is added after the user joins muted. The SSRC doesn't get signaled to remote p2p peer when this happens. Also, when the direction of the transceiver changes from 'sendonly' to 'sendrecv', Chrome is generating a new set of SSRCs resulting the client sending out a source-remove followed by source-add. Fixes various p2p related bugs that have surfaced in p2p calls where both the endpoints are running Chromium 122.
fix(TPC): Run the DD ext header check on all browsers.
We do not want non Chromium browsers to negotiate DD ext headers when VP8/VP9 is the selected codec. Fixes poor video quality issue for Safari when Av1 is offered by Jicofo.
fix(JitsiConference): Clear jingleSession after session restart.
This makes sure that any track operations that are executed after the terminate is sent and before the new session is established get synced up on the new session.
Also reset the JVB stats. Fixes https://github.com/jitsi/jitsi-meet/issues/14326.