fix(multi-stream) Block addition of multiple video streams of the same videoType.
This fixes an issue where mute camera operation doesn't stop sending camera stream even though locally it appears to the user that they are muted. This happens when multiple camera streams are added to peerconnection because of how toggle of the video button is implemented. This limitation will be removed when the application is fixed.
fix(TPC): Ignore stopped transceivers on FF during new track addition.
Firefox lists stopped transceivers when getTranceivers is called, ignore these when picking a trancceiver for a screenshare track. Fixes an issue when starting screenshare fails if there are stopped tranceivers in the peerconnection (i.e., if some remote users with sources have left the call).
fix(TPC) Do not force immediate O/A cycles after track replace operations.
In Unified-plan mode, we rely on the browser to fire 'negotiationneeded' event to start a O/A cycle. Also add muted tracks to PC. Fixes issues where the streams are not being signaled when call switches over from p2p to jvb in multi-stream mode.
fix(stats): Skip bandwidth calc if there is no uplink/downlink bitrate.
This fixes an error that gets logged when no media is being sent/received by the endpoint.
Logger.js:154 2022-09-12T14:40:53.476Z [modules/statistics/AvgRTPStatsReporter.js] <xl.addNext>: bandwidth_upload - invalid value for idx: 0
fix(connectivity): Fire trackStreaming status update on init.
> Possibly fixes a bug where SS appears black when the'unmute' and forwarded sources event for the track are received before a large-video update is scheduled.
When the participant has joined after A/V moderation has been enabled
they are auto muted with the startmuted node in the session-initiate
packet. We were not marking those as muted by the focus and therefore on
unmute we were not sending the <muted>false</muted> IQ to jicofo.
The result was that the bridge wasn't forwarding the media to the
remote participants.
ref(JingleSessionPC): Remove unncessary reneg cycles for p2p.
When an answer is received from the p2p peer, only set remote description instead of calling the full renegotiation cycle. Also, always initiate a sRD->cA->sLD cycle when adding remote sources irrespective of whether the local endpoint is an initiator or responder for the p2p connection. This lets us remove the hacks added for Chromium (unified-plan) bugs related to video not rendering in p2p cases.
* modules: add RFC 2198 audio redundancy encoder
which can be used together with WebRTC Insertable Streams to encode
a variable amount of audio redundancy
* port some tests
* port the rest of the tests but the comparison seems broken
* fix most lint
* with jasmine@4 actually fix the tests
* fix lint issues
* +jsdoc
* +nils review