Commit Graph

641 Commits

Author SHA1 Message Date
Saúl Ibarra Corretgé 3cbddb9d6a fix(breakout-rooms) mark function as async
Not all code paths return a Promise, make sure it does.
2021-12-02 15:49:36 +01:00
Jaya Allamsetty c7765cc1b7
feat(conference) Implement audio/video mute disable when sender limit is reached.
* feat(conference) Impl audio/video mute disable when sender limit is reached.
Jicofo sends a presence when the audio/video sender limit is reached in the conference. The client can then proceed to disable the audio and video mute buttons when this occurs.

* squash: use a different action type and show notification.
2021-11-30 15:08:25 -05:00
Saúl Ibarra Corretgé cc931986f6 fix(breakout-rooms) fix no video when coming back to main room
Re-create local tracks so we have a clean state.
2021-11-30 11:38:54 -06:00
Saúl Ibarra Corretgé 43647f1302 fix(conference) simplify code
Unify the 2 functions used to leave the room into a single one.
2021-11-30 11:38:54 -06:00
Saúl Ibarra Corretgé 599ed10325 fix(conference) remove dead code
Went for a different approach, this code is dead now.
2021-11-30 11:38:54 -06:00
Calin Chitu 5c67e8b4ce feat(config) defaultLocalDisplayName and defaultRemoteDisplayName 2021-11-26 18:52:43 +02:00
Tudor D. Pop a618697e34
feat(notifications) revisit timeouts and make them configurable 2021-11-24 12:05:27 +01:00
Werner Fleischer b5faf9f62a feat(breakout-rooms) add breakout-rooms
- implement breakout-rooms
- integrated into the participants panel
- managed by moderators
- moderators can send participants to breakout-rooms
- participants can join breakout rooms by themselve
- participants can leave breakout rooms anytime

Co-authored-by: Robert Pintilii <robert.pin9@gmail.com>
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2021-11-19 10:27:34 +01:00
Gabriel Borlea 61684b1071
feat(facial-expressions): add the facial expression feature and display them in speakerstats (#10006)
* Initial implementation; Happy flow

* Maybe revert this

* Functional prototype

* feat(facial-expressions): get stream when changing background effect and use presenter effect with camera

* add(facial-expressions): array that stores the expressions durin the meeting

* refactor(facial-expressions): capture imagebitmap from stream with imagecapture api

* add(speaker-stats): expression label

* fix(facial-expression): expression store

* revert: expression leabel on speaker stats

* add(facial-expressions): broadcast of expression when it changes

* feat: facial expression handling on prosody

* fix(facial-expressions): get the right track when opening and closing camera

* add(speaker-stats): facial expression column

* fix(facial-expressions): allow to start facial recognition only after joining conference

* fix(mod_speakerstats_component): storing last emotion in speaker stats component and sending it

* chore(facial-expressions): change detection from 2000ms to 1000ms

* add(facial-expressions): send expression to server when there is only one participant

* feat(facial-expressions): store expresions as a timeline

* feat(mod_speakerstats_component): store facial expresions as a timeline

* fix(facial-expressions): stop facial recognition only when muting video track

* fix(facial-expressions): presenter mode get right track to detect face

* add: polyfils for image capture for firefox and safari

* refactor(facial-expressions): store expressions by counting them in a map

* chore(facial-expressions): remove manually assigning the backend for tenserflowjs

* feat(facial-expressions): move face-api from main thread to web worker

* fix(facial-expressions): make feature work on firefox and safari

* feat(facial-expressions): camera time tracker

* feat(facial-expressions): camera time tracker in prosody

* add(facial-expressions): expressions time as TimeElapsed object in speaker stats

* fix(facial-expresions): lower the frequency of detection when tf uses cpu backend

* add(facial-expressions): duration to the expression and send it with durantion when it is done

* fix(facial-expressions): prosody speaker stats covert fro string to number and bool values set by xmpp

* refactor(facial-expressions): change expressions labels from text to emoji

* refactor(facial-expressions): remove camera time tracker

* add(facial-expressions): detection time interval

* chore(facial-expressions): add docs and minor refactor of the code

* refactor(facial-expressions): put timeout in worker and remove set interval in main thread

* feat(facial-expressions): disable feature in the config

* add(facial-expressions): tooltips of labels in speaker stats

* refactor(facial-expressions): send facial expressions function and remove some unused functions and console logs

* refactor(facial-expressions): rename action type when a change is done to the track by the virtual backgrounds to be used in facial expressions middleware

* chore(facial-expressions): order imports and format some code

* fix(facial-expressions): rebase issues with newer master

* fix(facial-expressions): package-lock.json

* fix(facial-expression): add commented default value of disableFacialRecognition flag and short description

* fix(facial-expressions): change disableFacialRecognition to enableFacialRecognition flag in config

* fix: resources load-test package-lock.json

* fix(facial-expressions): set and get facial expressions only if facial recognition enabled

* add: facial recognition resources folder in .eslintignore

* chore: package-lock update

* fix: package-lock.json

* fix(facial-expressions): gpu memory leak in the web worker

* fix(facial-expressions): set cpu time interval for detection to 6000ms

* chore(speaker-stats): fix indentation

* chore(facial-expressions): remove empty lines between comments and type declarations

* fix(facial-expressions): remove camera timetracker

* fix(facial-expressions): remove facialRecognitionAllowed flag

* fix(facial-expressions): remove sending interval time to worker

* refactor(facial-expression): middleware

* fix(facial-expression): end tensor scope after setting backend

* fix(facial-expressions): sending info back to worker only on facial expression message

* fix: lint errors

* refactor(facial-expressions): bundle web worker using webpack

* fix: deploy-facial-expressions command in makefile

* chore: fix load test package-lock.json and package.json

* chore: sync package-lock.json

Co-authored-by: Mihai-Andrei Uscat <mihai.uscat@8x8.com>
2021-11-17 16:33:03 +02:00
Saúl Ibarra Corretgé 8f08a54fb2 chore(deps) adapt to logger package rename 2021-11-10 14:40:17 +01:00
Saúl Ibarra Corretgé 162a67fe8b chore(lint) tame the (uppdated) linter 2021-11-09 09:43:55 +01:00
Paweł Domas 6a7842ab7e
fix: incompatible effect instance (#10311)
There are hard to handle race conditions around
screensharing/presenter mode turning on/off. It's
easier to make a NO-OP for turning the camera on/off
while switching to screen sharing is in progress
than trying to handle this gracefully. It should be okay
for the user to click the button again after the switch
operation is done.

Ideally this logic will be re-implemented in redux
middlewares and moved out of the conference.js file.
2021-11-08 14:05:23 -06:00
Robert Pintilii a97b700712
fix(tracks) Use duration from JitsiTrack (#10304) 2021-11-08 10:55:28 +02:00
Nils Ohlmeier 84f37b1777
fix(conference) avoid double prompts in Firefox after choosing non-default device.
* fix(conference) avoid double prompts in Firefox after choosing non-default device

* addressed linting errors
2021-10-25 14:53:45 -04:00
robertpin 92c6324ff3 fix(screenshare) Add timestamp to desktop track
Send screenshare duration to analytics
2021-10-21 12:44:09 +03:00
Дамян Минков ea26a48678
feat: Hides prejoin screen on conference in progress event. (#10175)
* feat: Hides prejoin screen on conference in progress event.

We enter the conference view as early as possible on conference in progress as the joined event can be late in a big conference.
Also, we show conference view only when joining is in progress, for example, the with the lobby enabled where we try to join but fail, we do not want to show the conference view for a fraction of a second before showing lobby screen.

* squash: Drops CONFERENCE_JOIN_IN_PROGRESS.

* squash: Updates ljm with the new JitsiConference event.

* squash: Adds some debugs to the github action.

Easier to catch problems with package-lock.json file.
2021-10-15 11:53:50 -07:00
Jaya Allamsetty 2572ba9a65 fix(tracks) Always add audio track on Safari.
This fixes an issue where Safari users cannot hear remote audio if they join audio/video muted. The browser throws the following error when the application tries to execute play on the audio element: 'NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.' This started happening in Safari 15.
2021-10-05 12:36:53 -05:00
robertpin 001ae54a7c feat(screenshot-capture) Updated screensharing screenshot capture
Changed screen capture to non effect. Effects are used to alter the stream, this feature does not need to alter the stream, it just needs access to it

Changed image diff library. Previous library diff’ed the whole image, the new one has en early return threshold

Use ImageCaptureAPI to take the screenshot. Added polyfill for it and polyfill for createImageBitmap

Added analytics
2021-10-05 10:25:27 +02:00
Hristo Terezov 2a725d2165 fix(prejoin): Prevent double joining conference. 2021-09-30 10:28:16 -05:00
Hristo Terezov 0214138863 fix(Prejoin): Join click before conference.init() 2021-09-30 10:28:16 -05:00
robertpin 41c38427c1 Fix stop everyone's video
Stop everyone's video now also stops screensharing for the moderator that did the action, not just video
2021-09-23 10:40:01 +03:00
robertpin ab366b9d94
fix(av-moderation) Advanced moderation improvements (#9935)
* 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
2021-09-15 11:28:44 +03:00
Pawel Domas bba1917820 fix(conference.js): add tracks to the conference 2021-09-14 18:24:45 -04:00
Paweł Domas 1db52354fb
Use redux for local tracks instead of conference.js (#9920)
* do not use this.local video

* move tracks initialized flag around

* do not use this.localAudio

* untangle use audio/video stream methods

It should be safe to call setVideoMuteStatus and
setAudioMuteStatus regardless of the prejoin page
visibility state.

* add NO-OP to use track methods and fix crash
in _setLocalAudioVideoStreams on not a promise

* use allSettled
2021-09-13 12:33:04 -05:00
Jaya Allamsetty b9866e3464 fix(tracks) Fix mobile safari issue with startMuted.
On mobile Safari, when a user joins both audio and video muted, browser doesn't playout the remote audio because of a webkit bug. As a workaround, always add the audio track to peerconnection and then mute the track if needed.
2021-08-31 17:04:08 -04:00
Jaya Allamsetty 40099e97ec
feat(Filmstrip): Reorder the visible participants in the filmstrip. (#9707)
* feat(Filmstrip): Reorder the visible participants in the filmstrip.
The participants are ordered alphabetically and the endpoints with screenshares, shared-videos and dominant speakers (in that order) are bumped to the top of the list. The local participant is also moved to the top left corner as opposed to the bottom right corner.

* squash: Implement review comments.

* squash: store alphabetically sorted list in redux and move shared videos to top.

* squash: Use the DEFAULT_REMOTE_DISPLAY_NAME from interfaceConfig for users without a display name.
2021-08-18 18:34:01 -04:00
Saúl Ibarra Corretgé 465e7f1458 fix(conference) unify conference options
Some options were missing on the mobile side, notably calltsts
enableDisplayNameInStats and enableEmailInStats. Now the same logic will be used
in web and mobile.
2021-08-04 15:32:03 +02:00
Andrei Gavrilescu da7358d564
feat(audio-screen-share): improved ux flow (#9411)
* add button state / helper dialog

* new audio screen share flow

* change error message

* address a couple of merge conflicts

* fix lint

* address code review

* address code review

* restrict audio screen share on mobile browsers
2021-07-07 11:07:30 +03:00
hmuresan 38b14c5d62 chore(replace-participant) Send `readyToClose` event when a replaced participant is kicked
- the embedding app can decide to dispose the iframe in this case
2021-06-25 14:42:26 +03:00
tmoldovan8x8 0bd45a75d2
feat(replace-participant): Add replaceParticipant feature-flag 2021-06-16 14:08:18 +03:00
hmuresan 342dd4ceca feat(replace-participant): Replace participant with same jwt in the conf
- update lib-jitsi-meet to version with support for replacing participant
2021-06-15 14:24:12 +03:00
hmuresan bb5f589fa1 fix(feedback): don't wait for feedback submission on leave meeting 2021-06-02 06:53:59 -05:00
hmuresan aea09a8da3 Send feedback metadata to JaaS feedback endpoint 2021-05-25 20:37:56 +03:00
Tudor-Ovidiu Avram 4e4ff0f60f feat(share-video) Add capability for sharing any direct link video 2021-05-20 13:00:54 +03:00
hmuresan b998d80ee3 fix (external-api): fix notify video mute changed when presenting
- small refactor to trigger `notifyVideoMutedStatusChanged` correctly when participant is presenting
2021-05-04 18:23:32 +03:00
Jaya Allamsetty d96bb83496 fix(presenter): Do not resize the desktop track on FF by default.
Resizing of the desktop track on Firefox is not needed anymore since the browser now reports the correct resolution of the desktop track after the fix here - ada0f5e537.
Fixes https://github.com/jitsi/jitsi-meet/issues/8519
2021-04-22 14:39:56 -04:00
Calinteodor 98658f573c
fix(authentication): removed old LoginDialog.js file, fixed redirection to the external auth and created actions.any.js (#9049)
* fix(authentication) login dialog now closes when connection is established

* fix(authentication) fixed shibboleth auth

* fix(authentication) renamed authenticateExternal func to authenticate and updated its logic

* fix(authentication)removed logindialog.js and created actions.any

* fix(authentication) removed focus from externalauthwindow

* fix(authentication) removed private sign from some actions and added openLoginDialog to actions.any

* fix(authentication) exported all from actions.any

* fix(authentication) reverted change regarding externalAuth

* fix(authentication) fixed indentation
2021-04-22 17:05:14 +02:00
Andrei Gavrilescu 6d3d65da03
feat(screenshare): Audio only screenshare (#8922)
* audio only screen share implementation

* clean up

* handle stop screen share from chrome window

* update icon
2021-04-12 10:37:39 +03:00
damencho c4766125bb feat: Adds an option to preset in localstorage key for locked rooms.
This feature will be used by sip-jibri to join locked rooms.
2021-04-07 11:07:04 -05:00
Calinteodor e035d33fa9
feat(authentication) refactor auth dialogs to use React 2021-03-24 15:09:40 +01:00
luz paz d3680bbebd fix(misc) follow-up typos
Found via `codespell -q 3 -S ./lang`
2021-03-22 10:41:41 +01:00
Hristo Terezov f50872285d ref(Filmstrip): Use Thumbnail component. 2021-03-18 09:37:55 -05:00
Hristo Terezov f5a34183e9 fix(useVideoStream): error handling & add logs. 2021-03-10 17:02:29 -06:00
Jaya Allamsetty dcda89012e
fix(tracks): Do not signal muted audio tracks.
Do not add the muted audio tracks to peerconnection until the user unmutes the first time. This applies to startSilent, startWithAudioMuted and startAudioMuted/startVideoMuted config.js settings.
2021-03-05 10:18:34 -05:00
Calinteodor 430591bd1e
feat(shared-video) refactor dialog to use React
Also unify the mobile and web features into one, even though internally they still have separate ways to enable the functionality.
2021-03-03 15:37:38 +01:00
Steffen Kolmer 23bb824731
feat: Added mute video moderation feature (#8630)
* Added mute video feature

* Fixed export

* Fixed some issues

* Added remote video mute notification

* Fixed import

* Fixed conference event handling

* Fixed some linting issues

* Fixed more linter errors

* turn screenshare off on remote video mute

* Fix linter issue

* translations added for mute video feature

* Added video mute button to interface config

* Updated lib-jitsi-meet

* Fix copy paste error

Co-authored-by: nurjinn jafar <nurjin.jafar@nordeck.net>
2021-02-24 15:45:07 -06:00
Tudor-Ovidiu Avram f50fd7b7bd fix(gum) add event handling for SLOW_GET_USER_MEDIA
Show an overlay with a spinner when slow gUM is fired
2021-02-23 13:51:24 +02:00
Hristo Terezov 299927fcad docs: Add comment for initial GUM timeout values. 2021-02-08 15:53:38 -06:00
Hristo Terezov a6c6cd6c56 fix: Add GUM timeout & improve device permissions 2021-02-08 15:53:38 -06:00
Andrei Gavrilescu 9895a04609
feat(rtcstats): send meeting uuid to rtcstats (#8526)
* send meeting uuid to rtcstats

* change ret description

* fix flow error

* update lib-jitsi-meet version
2021-02-03 12:28:39 +02:00