* fix(codec-selection) Use a configurable preferred codecs list to select the codecs.
Allow asymmetric codecs to be configured on the endpoints. This means that Firefox and Safari which have bugs with VP9 encode will now encode VP8 but decode VP9 coming in from Chromium endpoints.
* fix(codec-selection) Add unit tests for the codec selection logic.
* feat(codec-selection): Introduce mobileCodecPreferenceOrder setting in config.js.
* fix(codec-selection) Avoid unnecessary renegotiations.
On participant join/leave, check if the new intersection of codecs are already configured to be the top n codecs.
* Address review comments
* fix: Strip the codecs that are not in the codec list from the video m-lines.
Also, ignore remote codecs published in presence for p2p connections.
* fix: Define default codec order for mobile and desktop.
Fix an issue where p2p between mobile and desktop was broken.
* fix: Add default codecs for both p2p and jvb on mobile devices.
Munge the initial offer sent out by RN clients since RN doesn't support RTCRtpTransceiver#setCodecPreferences.
fix(JingleSession) Reconfigure the stream encodings after p2p->jvb switch.
Fixes blurry screenshare in some cases. There is a higher probability of the higher layers getting suspended when all the stream encodings are enabled for low fps SS. Make sure only the highest spatial layer is sent for low fps SS after p2p->jvb switch. Make sure all the stream encodings are enabled for high fps SS after p2p->jvb switch.
Adjusted wrapping method to have RTCRtpSender setting parameters in sequential manner in order to solve race condition when transaction id can be reset at the end of videoSender setParameters and cause exception if another update was already in fly and before its check for transaction id presence.
fix(JingleSession): Check for source updates after every reneg
Check for source updates and notify the peer of any new sources after every renegotiation cycle. This fixes issues where source changes are not detected if any other task that requires a renegotiation is scheduled between replaceTrack and a negotiationneeded event.
fix(ssrc-rewriting) Update owners when a new SSRC is assigned to existing source.
Fixes a bug where the remote video freezes if the remote user does an ICE restart using session-terminate. In this case, a new SSRC is assigned to the remote source which will have the same source-name.
* feat(signaling) Only include 'msid' in the source description.
'cname', 'label' and 'mslabel' attributes that are included in the source description of the signaling messages are ignored by Jicofo. Only 'msid' is used for source validation.
Therefore, drop those attributes and make sure 'msid' is always included and in the format '<endpoint_id>-<mediaType>-<trackIndex>-<tpcId>'.
* fix(p2p) Enable p2p for Firefox.
Set the senders attribute correctly in the outgoing jingle message. Ignore the media direction from the session, only look for the direction in the media desccription. This fixes an issue where Firefox rejects an answer because the direction is not set correctly.
fix(JitsiConference) Do not add local tracks on p2p when startMutedPolicy is set to true.
Fixes an issue that started surfacing after f0dd403951 because local tracks were getting added to pc even when the moderator has set start muted policy to true.
fix(JingleSession) start modification queue after session is established.
Pull initial offer/answer tasks out of the modification queue and execute them right away. Only track and codec related operations that necessitate a renegotiation cycle need to be pushed to the modification queue. The queue execution is paused until the session is established. This avoids track operations being executed before the session is established. This fixes an issue seen in p2p connections where sources of the initiator are not signaled to the remote since the tracks are added while the initiator is waiting for a session-accept from the peer.
fix(stats) Obtain resolution/fps from 'outbound-rtp' stats. (#2265)
* fix(stats) Obtain resolution/fps from 'outbound-rtp' stats.
'Track' based stats were dropped in Chrome 112, therefore send resolution and fps for the simulcast case needs to be calculated based on the 'outbound-rtp' streams that are currently active.
* squash: remove an unwanted log
* Squash: Address review comments.
Use outbound-rtp stats for both Firefox and Safari.
Firefox - Ignore active field if not present in the stats and calc fps using 'framesSent'.
With visitors we rarely see not able to send messages or presence because not connected error.
Seems the status of the connection is wrong when quickly disconnecting and connecting again.