feat(multi-stream-support) Add track streaming status (#1855)
* feat(multi-stream-support) Add TrackStreamingStatus class
update JitsiRemoteTrack to init and dispose TrackStreamingStatus
stop emitting LASTN_ENDPOINT_CHANGED event when source name signaling is enabled
convert TrackStreamingStatus class to typescript
* rename methods and use TrackStreamingStatus enum
* update jdocs for JitsiConferenceEvents.FORWARDED_SOURCES_CHANGED
* 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.
* 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>
...to advertise track's muted state and the video type.
For now, if the source name signaling flag is enabled, both legacy and
new <SourceInfo> element will be used at the same time. This is to be
able to interoperate with legacy clients and start testing the new
format at the same time. Whenever possible <SourceInfo> will be used
as main source of truth with the fallback to legacy <audiomuted/>,
<videomuted/> and <videotype/> elements.
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.
* feat: Audio/Video moderation.
* squash: Fix docs.
* squash: Adds some warning logs when execution is rejected.
* squash: Changes a field name in the message for adding jid to whitelist.
* squash: Send to participants only message about approval.
Skips sending the whole list.
* squash: Fixes tests.
* squash: Adds more logs.
* feat: Separates enable/disable by media type.
Adds actor to the messages to inform who enabled it.
* squash: Fixes log line.
* squash: Fixes comments.
* squash: Fixes log messages.
* squash: Fixes comments.
feat(stats): Add a new bridge message "EndpointStats" for stats.
Use the new Colibri message "EndpointStats" for broadcasting the local stats. The bridge then will be able to filter the endpoint stats and send them only to the interested parties instead of broadcasting it to all the endpoints in the call.
* Added video mute participant
* Trigger mute event
* Optimized mute type checks
* Fixed event name
* Fixed some linter issues
* Fixed more linter issues
* And even more linter issues fixed
* And more linter fixes
* Added media type to analytics event
fix(ice-restart): Force client reloads when call is migrated.
Force the client to reload when the bridge that is handling the media goes down.
This mitigates issues seen on the bridge because of a client re-joining the call with the same endpointId, BWE issues, etc.
This behavior is configurable through 'enableForcedReload' setting in config.js.
feat: Skips using disco-info for features. (#1450)
* fix: Drops unused parameter of join and sendPresence.
* feat: Skips using disco-info for features.
Uses presence to publish features added externally.
Recognizes jigasi participants using a specific presence extension used by jigasi.
* squash: Fixes tests.
* squash: Adds e2ee to the features in presence.
* squash: Fix function name and docs.
* squash: Drops detecting jigasi from initiator.
Using the newly added presence features.
* squash: Drops unused var.
* squash: Fix comments.
* squash: Adds a constant and for E2EEE feature.
Add a performance stat around long tasks. Chrome supports PerformanceObserver API that lets us
register for long tasks event. Any task that takes longer than 50ms is considered a long task.
Takes disabled encodings into account when calculating the local resolution. (#1242)
* fix: Takes disabled encodings into account when calculating local resolution.
* feat: Adds a new event that's triggered when the max enabled resolution changes.
* feat: Broadcasts the max enabled resolution value along with other stats.
* Initial impl of lobby rooms.
* Fixes tests to check the new fulljid added to MUC_MEMBER_JOINED.
* Updates few of the comments, renaming some functions.
* Renames disableLobby ChatRoom option to enableLobby.
* Fixes a comment.
* Moves setMembersOnly method to ChatRoom.
* Fixes counting members, to exclude jicofo.
* Moves setLobbyRoomJid earlier and renames a method.
Rename _maybeEnableDisable to maybeJoinLeaveLobbyRoom.
* Drops using custom roomconfig lobbypassword field and reuse room lock.
* Handles destroying the lobby room.
* Handles clear lobby room on destroy for moderators.
We do not try to leave the lobby room as it is server-side destroyed and we handle that. The only case of leaving a lobby room is when request to join room is being approved.
* Join main room if lobby is disabled while waiting.
* Adds MEMBERS_ONLY_CHANGED conference event.
* fix: Make sure we leave lobby if main room is joined.
* fix: Setting password when joining locked room.
* fix: Fixes case where we enable lobby for already locked room.
* fix: Fixes case where we enable lobby and then lock room.
* fix: Fixes lint.
* ref: Removes shared password for lobby.
This functionality is handled by the lock room password and handled there.
Removes duplication and unnecessary complicated API for lobby room.
* fix: Fixes comments.