* fix(multi-stream) update selector to find ss track by videoType or mediaType
* ref(multi-stream) move fake ss creation logic and support video type changed
* refactor(multi-stream) decouple sending and receiving multiple screenshare streams
* fix(multi-stream) fix receiver constraints with signaling and without multi-stream
* fix(mutli-stream) ensure plan b original SS thumbnail displays avatar
* fix(multi-stream) show fake SS for plan b sender
* refactor(multi-stream) poc for moving SS creation to state listener
* remove reference to fake SS creation
* fix lint errors
* rename to virtual screenshare participants
* fix minor bugs
* rename participant subscriber to specify web support only
In case of conference failed as max number of occupants reached, we should skip clearing the local tracks to keep state of pre-join screen. Otherwise, on join we will join muted even though on prejoin screen it was unmuted on the initial attempt.
prioritize participants with screen shares
support local screen share track
auto pin screen share
support screen share for large video
ensure fake screen share participants are sorted
fix local screen share in vertical filmstrip
fix local screen share in tile mode
use FakeScreenShareParticipant component for screen share thumbnails
ensure changes are behind feature flag and update jsdocs
fix bug where local screen share was not rendering
update receiver constraints to include SS source names
remove fake ss participant creation on track update
fix: handle screenshare muted change and track removal
refactor: update key values for sortedFakeScreenShareParticipants
address PR comments
refactor getter for screenshare tracks
rename state to sortedRemoteFakeScreenShareParticipants
* feat(multi-stream-support) Add screenshare as a second video track to the call.
This feature is behind a sendMultipleVideoStreams config.js flag. sourceNameSignaling flag also needs to enabled. Sending multiple tracks is currently supported only on endpoints running in unified plan mode. However, clients with source-name signaling enabled and running in plan-b can still receive multiple streams .
* squash: check if there is an existing track before adding camera/desktop
* squash: enable multi-stream only on unified plan endpoints.
* Update moderation in effect notifications
Only display one notification for each media type. Display notification for keyboard shortcuts as well
* Update muted remotely notification
Display name of moderator in the notification
* Fix indentation on moderation menu
* Update text for video moderation
* Added moderator label in participant pane
* Update microphone icon in participant list
For participants that speak, or are noisy, but aren't dominant speaker, the icon in the participant list will look the same as the dominant speaker icon but will not change their position in the list
* Added sound for asked to unmute notification
* Code review changes
* Code review changes
Use simple var instead of function for audio media state
* Move constants to constants file
* Moved constants from notifications to av-moderation
* feat: Initial UI part for A/V moderation.
Based on https://github.com/jitsi/jitsi-meet/pull/7779
Co-authored-by: Gabriel Imre <gabriel.lucaci@8x8.com>
* feat: Hides context menu in p2p or only moderators in the meeting.
* feat: Show notifications on enable/disable.
* feat(moderation): Add buttons to participant list & notifications
* fix(moderation): Fix raised hand participant leaving
* feat(moderation): Add support for video moderation
* feat(moderation): Add mute all video to context menu
* feat(moderation): Redo participants list 'More menu'
* fix: Fixes clearing av_moderation table.
* fix: Start moderation context menu
* fix(moderation): Show notification if unapproved participant tries to start CS
Co-authored-by: Gabriel Imre <gabriel.lucaci@8x8.com>
Co-authored-by: Vlad Piersec <vlad.piersec@8x8.com>
- Adds the ability to share video as a "PiP" when screenshare is in progress.
- Add a method for creating a local presenter track.
- Make sure isLocalVideoTrackMuted returns the correct mute state when only screenshare is present.
- Make sure we get the updated window size of the window being shared before painting it on the canvas.
- Make sure we check if the shared window has been resized
* Javadoc introduced @code as a replacement of <code> and <tt> which is
better aligned with other javadoc tags such as @link. Use it in the
Java source code. If we switch to Kotlin, then we'll definitely use
Markdown.
* There are more uses of @code in the JavaScript source code than <tt>
so use @code for the sake of consistency. Eventually, I'd rather we
switch to Markdown because it's easier on my eyes.
* Xcode is plain confused by @code and @link. The Internet says that
Xcode supports the backquote character to denote the beginning and end
of a string of characters which should be formatted for display as
code but it doesn't work for me. <tt> is not rendered at all. So use
the backquote which is rendered itself. Hopefully, if we switch to
Markdown, then it'll be common between JavaScript and Objective-C
source code.
* ref: video muted state
Get rid of 'videoMuted' flag in conference.js
* ref: audio muted state
Get rid of 'audioMuted' flag in conference.js
* fix(conference.js|API): early audio/video muted updates
* ref(conference.js): rename isVideoMuted
Rename isVideoMuted to isLocalVideoMuted to be consistent with
isLocalAudioMuted.
* doc|style(conference.js): comments and space after if
* ref: move 'setTrackMuted' to functions
* fix(tracks/middleware): no-lonely-if
* ref(features/toolbox): get rid of last argument
* ref(defaultToolbarButtons): rename var
Simplify the code by using a bitfied instead of a couple of boolean flags. This
allows us to mute the video from multiple places and only make the unmute
effective once they have all unmuted.
Alas, this cannot be applied to the web without a massive refactor, because it
uses the track muted state as the source of truth instead of the media state.
Because on web video track is stored both in redux and in 'localVideo'
field, video is attempted to be unmuted twice when turning off the audio
only mode. This will crash the app with 'unmute operation is already in
progress'. This commit will prevent from taking action from the web
world if the video track already exists and will make the redux side
rollback unmuted status in case unmute fails.
The end goal of this patch was to avoid opening the camera when there is no
welcome page.
In order to achieve this, the logic for creating the local tracks was
refactored:
Before this patch local tracks were created when lib-jitsi-meet was initialized,
and destroyed when it was deinitialized. As a side note, this meant that when a
conference in a non-default domain was joined, local tracks were destroyed and
recreated in quick succession.
Now, local trans are created and destroyed based on what the next route will be,
and this happens when the target room has been decided. This allows us to create
local tracks the moment we need to render any route, and destroy them when there
is no route to be rendered. As an interesting byproduct, this refactor also
avoids the destruction + recreation of local tracks when a conference in a
non-default domain was left.