* feat: Support plain endpoint ID.
Support the ID of the owner of sources being encoded directly instead of
using the full JID.
* feat: Support JSON-encoded sources.
* feat: Advertise support for JSON-encoded sources.
fix(tpc) fix extracting ssrc map when using single stream
In unified plan we'll take the ssrcs off the first audio / video stream, but we
were assuming both would be present.
This commit fixes that, since the Spot wireless screen sharing feature uses a
dedicated TPC just with a video stream.
fix(ConnectionQuality): Do not show red/yellow GSM bars on join.
When the user first unmutes their video, the connection quality is shown as poor until the local stats are available.
Calculate the connection quality only after the stats are available, i.e., assume 100% until pcStatsInterval has elapsed.
feat(BridgeChannel): Signal a new videoType for high fps screenshare.
This lets the bridge adjust the bitrate allocation for this source so that layers with higher fps are prioritized over layers with higher resolution.
As a result, endpoints with restricted downlink will receive a high fps low resolution share as opposed to a high resolution low fps screenshare.
fix(JingleSessionPC): Fix startMuted cases for p2p unified plan.
Chrome doesn't create a decoder for ssrc in the remote description when there is no local source and the endpoint is offerer. Initiating a renegotiation with the endpoint as a responder fixes this issue. Add a workaround until Chrome fixes this bug.
fix: Missed SSRCs in Unified Plan with several "ssrc-group:FID" groups. (#1658)
* fix: Missed SSRCs in Unified Plan with several "ssrc-group:FID" groups.
`TpcUtils.ensureCorrectOrderOfSsrcs()` takes into account only the first `ssrs-group`, and it causes missed `ssrs` attributes. It results in an error during `peerconnection.setRemoteDescription()`.
For fixing `ensureCorrectOrderOfSsrcs()`, all `ssrs-group` are traversed and all distinct `ssrs` are preserved with keeping their order.
* test: Added extra tests for `TpcUtils.ensureCorrectOrderOfSsrcs()`
fix(JingleSessionPC): Disable unified-plan for p2p chrome.
Do not enable unified plan for p2p chrome by default until StartMutedTest is fixed.
Fix media direction for case when there are no local and remote sources, should be set to 'inactive' in that case.
fix(codec-selection): Fix VP9 codec switching issue in Chrome unified-plan.
Munge only the m-line that corresponds to the source that the browser will be sending.
Do not select VP9 on Firefox.
Detect support for RTCRtpTransceiver#setCodecPreferences correctly.
fix(RTC): In unified-plan mode, disable the low resolution streams for low fps SS.
In unified plan impl, it is not possible to enable/disable simulcast during the call since the same sender is re-used for all local video tracks. Therefore, disable the low resolution simulcast streams for low fps screensharing so that the bridge forwards only the highest resolution stream which is important for low fps screensharing.
The crash occurs every time the audio track is muted/unmuted, if the emitter fails to initialize
("Failed to start VADAudioAnalyser" warning is
printed).
fix(TPC): Do not remove ssrcs from remote desc for p2p.
In unified plan, re-use of m-line (i.e., adding an SSRC, removing it and then adding it back) causes the browser to not render the media on Chrome and Safari. The WebRTC spec is not clear as to how browsers have to behave, this doesn't cause any issues on Firefox. As a workaround, only change the media direction and leave the ssrc in the remote desc. This automatically triggers a 'removetrack' event on the associated MediaStream and the track can be removed from the UI.
feat(RTC): Add the ability to change desktop share fps.
Provide a method for changing the capture fps for desktop tracks during the call. These changes to the lib are needed for making it configurable from the UI.
fix(RTC): Adjust the media direction for p2p conn.
For p2p connections, the media direction needs to be adjusted after every source-add/source-remove is processed based on the availability of local sources.
fix(CodecSelection): Call RTCRtpTransceiver#setCodecPreferences before renegotiation.
Call RTCRtpTransceiver#setCodecPreferences with the preferrred codec order before every createOffer/createAnswer. This ensures that the codec preference is enforced even when there is no local description available yet while the preferred codec is being set immediately after media session creation.
fix(JingleSessionPC): Add a workaround for chrome issue.
The 'signalingstatechange' event for 'stable' is fired after the 'iceconnectionstatechange' event for 'completed' is fired on chrome in Unified plan. This prevents the client from switching the media connection to the p2p connection once the ice connection for p2p gets established.
fix(TPC): Do not configure encodings on Safari until reneg.
Avoid configuring the encodings on Chromium/Safari until simulcast is configured for the newly added track using SDP munging which happens during the renegotiation.
* fix(xmpp): use text parameter instead of attr for message
bug: msg with elementName != 'body' ->
Cannot read property 'appendChild' of null
fix leads to another problem - there is some magic in the 'c' function:
"This function moves the current element pointer to the child,
unless text is provided"
apply the same magic here. will be removed in the next commit
* fix(xmpp): do not rely on internals of Strophe.c
* squash: Fixes tests.
Co-authored-by: damencho <damencho@jitsi.org>