ref(JingleSession) Recycle m-lines by rejecting them on source removal.
* ref(JingleSession) Recycle m-lines by rejecting them on source removal.
By rejecting the m-lines on source removal (setting the port to 0 on the associated m-line), m-lines can be recycled for new sources instead of appending new ones.
* chore(deps) update sdp-interop@latest.
ref(TPC) Remove an unnecessary toUnified sdp conversion.
sLD is called immediately after createOffer/createAnswer, therefore the desc provided by createOffer/createAnswer can be directly passed to sLD without the need for converting it to unified plan format. This also fixes a warning seen on the browser console that says 'The description does not look like plan-b'.
feat: Adjust setReceiverConstraints to use new format (#1813)
* feat: Adjust setReceiverConstraints to use new format
* add ReceiveVideoController spec
* rename prioritizedSources to onStageSources
* call FeatureFlags.init in specs and update description
* provide a default flags argument to FeatureFlags.init
* feat: Adds events for session-add, session-remove and session-accept.
* feat: Refactor updating presence for audio/video mute and video type.
This brings few changes and fixes. Thew initial presence will always miss audioMuted and videoMuted value, those will be added on session accept. All updates to presence are done on sessionAccept, on source-add or on source-remove and the only one not signalled when camera track is replaced by video track and vice versa.
This change brings more presence updates when number of participants are below startAudioMuted/startVideoMuted, but when participants are above those numbers we get less presence update. This is important for big meetings.
Fixes wrong videoMuted state, as replace track and mute are both executed in promise, sometimes the replace-track one finishes first and when the mute one is resolved there is no conference object in the track to be able to update the presence (hitting this when we pass the startAudioMuted threshold).
* squash: Put back the tracks for _setTrackMuteStatus and _setNewVideoType.
* squash: Fix line length.
* squash: Fix skip sending presence twice.
* squash: Adds the error to the error callback.
* squash: Fix newJingleErrorHandler.
If leaving a room results in a timeout, we wouldn't be cleaning up the EMUC
state, which will prevent us from joining the room again, as it would detect it
as a duplicate.
fix(avmoderation,breakout-rooms) dispose handlers when leaving
Both of this features listen for events in the XMPP connection. Thus, if we join
another meeting over the same connection we might still receive some events on
the old event handler.
Stop listening for events from the components as soon as the leave operation is
triggered.
feat(conference) Implement audio/video mute disable when sender limit is reached.
Jicofo sends a presence when the audio/video sender limit is reaced in the conference. The client can then proceed to disable the audio and video mute buttons when this occurs.
fix(TPC): Select 1 as the default scale factor for p2p.
This fixes an issue where a user is not able to unmute their video if the MediaStreamTrack associated with the camera stream returns a null value for the track height.
* Save track source name to JitsiRemoteTrack
* add feature flag checks. code review adjustments.
* eslint cleanup1
* eslint cleanup2
* fix: move sourceName declaration outside of if block.
Co-authored-by: Dennis Dowhy <ddowhy@gmail.com>
Co-authored-by: William Liang <wliang67@bloomberg.net>
They are companion rooms created in a separate MUC. The room relationship is
maintained by a Prosody plugin.
All signalling happens through the breakout rooms MUC component.
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
fix(TPC): Force reneg when user unmutes the first time.
This ensures that the source signaling is sent before the mute state is sent in presence. Jicofo relies on mute state from presence to check if the sender limit has been reached.
feat: add facial-expressions in speaker stats (#1724)
* feat: facial expression in speaker stats
* feat: send xmpp message with facial expression to server
* fix: rebase conflicts
* feat: facial expression in speaker stats
* feat: facial expression in speaker stats
* fchore(facial-expressions): remove the send facial expression call from update facial expression function
* feat(facial-expressions): store expresions as a timeline
* refactor(facial-expressions): store expressions by counting them in a map
* feat(facial-expressions): camera time tracker
* add(facial-expression): increase facial expression with duration parameter from payload
* add(facial-expressions): the disgusted expression
* refactor(facial-expressions): remove camera time tracker
* refactor(facial-expressions): change data channel message handel position for facial expressions and renamed some types
* fix(facial-expressions): move facial expression endpoint message handler from statistics.js to ConnectionQuality.js
* fix(facial-expressions): remove unused type
This is a stopgap measure. Ideally we'd support it, but the interactions between
both JVB and P2P sessions are complex and very timing sensitive and there are a
number of corner cases that lead to not having media after toggling e2ee.
fix(e2ee) fix race condition when restarting media sessions
Make sure the P2P tracks are not added to the JVB session when we are restarting
the media sessions, since the PC has not been created with the encoded streams
constraint yet.