Commit Graph

247 Commits

Author SHA1 Message Date
Anton B
3b04dbff48 test: add pinning and unpinning test, improve share webcam test and add selectors 2022-09-12 14:12:35 -03:00
Paulo Lanzarin
362785a83a
Merge pull request #15647 from prlanzarin/u26/fix/cam-profile-switch-notreadableerror
fix(webcam): switching profiles in preview fails intermittently
2022-09-08 15:11:33 -03:00
prlanzarin
646db91367 fix(webcam): add MediaStream id to 'inactive' event handlers
BBBVideoStream 'inactive' event currently does not send the
MediaStream id as the payload for handlers. This can cause theoretical
race conditions due to media stream mismatches in places where
'inactive' handling is done globally (eg video-preview).

This adds the MediaStream id to BBBVideoStream's 'inactive' event
and uses it in video-preview to avoid such race conditions.
2022-09-06 12:31:26 +00:00
prlanzarin
5d04bcaf93 fix(webcam): retry gUM on NotReadableError for Chrome/Edge
tl;dr: switching camera profiles in video-preview fails intermittently
in Chrome/Edge.
Long version: Chrome/Edge sometimes bork gUM calls when switching camera
profiles. This looks like a browser bug (issue TBD). Track release not
being done synchronously -> quick subsequent gUM calls for the same
device (profile switching) -> device becoming unavaible while previous
tracks aren't finished.

Since track stop is not "awaitable", this commit adds a retry procedure
that re-runs gUM up to 5 times (200 ms delay) only if error.name is
NotReadableError and browser is either Chrome or Edge.
2022-09-06 12:26:31 +00:00
Joao Victor
d4949bd7cf fix(camera): disable brightness on Safari and stop segmentation if brightness is unchanged 2022-09-01 09:29:08 -03:00
Joao Victor
24c227cc75 Merge 2.6.x-release into camera-brightness 2022-08-26 11:53:23 -03:00
Joao Victor
396f5320a4 feat(camera): set camera brightness 2022-08-26 11:50:46 -03:00
Joao Victor
54b146effe fix: add missing custom virtual background param 2022-08-25 08:30:36 -03:00
Anton Georgiev
bbb7dd421d Merge branch 'v2.6.x-release' of github.com:bigbluebutton/bigbluebutton into cairosvg 2022-08-19 14:25:03 +00:00
Anton Georgiev
1b7b63baf6 Merge branch 'v2.5.x-release' of github.com:bigbluebutton/bigbluebutton into cairosvg 2022-08-19 14:14:54 +00:00
Ramón Souza
d9f2660d6a
Merge pull request #15330 from JoVictorNunes/vb-improvements-Jul-04
improvement(virtual background): better error handling, notifications…
2022-07-28 09:25:00 -03:00
Joao Victor
d2eda01bcb fix: check for undefined value 2022-07-27 16:15:19 -03:00
Joao Victor
fe669b2f58 fix: check virtual background index 2022-07-27 09:00:18 -03:00
Joao Victor
5c6c28cdd2 Fix conflicts 2022-07-25 15:14:27 -03:00
Joao Victor
0ac69cba0a fix: comparison to render custom buttons 2022-07-15 17:16:33 -03:00
Joao Victor
34aaf07fed Merge branch v2.6.x-release into virtual-backgrounds-skeleton-preview 2022-07-15 17:14:16 -03:00
prlanzarin
029c957b22 fix(webcam): handle stream inactivation/gUM revocations
The 'inactive' event is fired whenever the stream gets inactive (ie it
cannot be used anymore), and there are scenarios where that is
unexpected behavior and must be handled accordingly.
The main example of that is when gUM permissions are revoked by the user
via the browser's permission management panel.
Since MediaStream/Track inactive events aren't being handled in such
scenarios, what actually happens is that the camera just freezes without
further indication why.

This commit handles those scenarios in both video-preview and
video-provider by:
  - 1) correctly stopping the camera (provider)
  - 2) surfacing a toast (provider) or error indication (preview)
2022-07-12 22:03:01 +00:00
prlanzarin
e93440e15a refactor(webcam): fix linter errors in BBBVideoStream 2022-07-12 17:50:16 +00:00
Joao Victor
2f78edddf3 fix: add suport for disabling upload of custom backgrounds through custom parameter 2022-07-08 17:01:57 -03:00
Joao Victor
915ffce3c6 improvement: sort buttons by recently used/uploaded 2022-07-08 12:16:37 -03:00
Joao Victor
f8ec4ef640 refactor: virtual background context 2022-07-07 18:59:30 -03:00
Joao Victor
8481103e47 improvement(virtual background): loading skeleton, custom backgrounds in video preview modal 2022-07-06 16:03:55 -03:00
Joao Victor
aaf7f8e78e improvement(virtual background): better error handling, notifications, performance 2022-07-06 10:38:40 -03:00
Joao Victor
93d98d9b3e fix: margin unit 2022-06-30 17:10:48 -03:00
Joao Victor
5e2c113cae improvement: virtual background selector thumbnail 2022-06-30 16:39:50 -03:00
Joao Victor
ddb63f8e71 fix: restore virtual background after leaving breakout room #15111 2022-06-14 09:40:13 -03:00
Joao Victor
22a924181d fix: state update on delete 2022-06-01 12:31:56 -03:00
Joao Victor
769629daf6 improvement: add a new service function for reading the file 2022-06-01 12:05:16 -03:00
Joao Victor
e7d9b46097 fix: add some file sanitization 2022-05-31 16:32:58 -03:00
Joao Victor
936829338d fix: localize default button label for custom backgrounds 2022-05-31 11:38:24 -03:00
Joao Victor
ae3355d685 revert: unifying of click handlers of custom backgrounds 2022-05-31 11:14:33 -03:00
Joao Victor
69b4342e39 revert: unifying of click handlers of the default backgrounds 2022-05-31 11:06:58 -03:00
Joao Victor
a7e5869c91 feat(video): upload of own webcam virtual background 2022-05-10 14:17:16 -03:00
prlanzarin
d6c7f23a0e feat(audio): local echo test and audio energy meter
New features:
  - A simplified echo test mode that only does a local loopback (instead of
  going to FS and back)
  - A volume meter for microphone streams to the AudioSettings view

Those two features are experimental and disabled by default; see
public.app.media.simplifiedEchoTest and public.app.media.showVolumeMeter configs

Collateral changes:
  - fix: localize fallback device strings in AudioSettings/DeviceSelector
  - Refactor on some media stream utils to be re-usable across components
  - Refactor in AudioSettings to keep gUM #uses stable.
    * TODO: need to pass streams through AudioManager to avoid the surplus gUM.
  - fix(audio): drop ScriptProcessorNode usage (deprecated)
    * Used in volume meter for tracking - use hark instead
2022-04-11 19:21:56 +00:00
Gustavo Trott
a6c3af7b0f Add disabledFeatures=virtualBackgrounds 2022-03-22 16:01:27 -03:00
Anton Georgiev
5f884f6674 Merge remote-tracking branch 'bbb/v2.4.x-release' into merge-24-into-25 2022-03-03 18:35:05 +00:00
Pedro Beschorner Marin
e8ff5ebdc8 feat(video): add user camera cap control
Include `userCameraCap` API param on create and enforce both server and
client to control the number of simultaneous webcams an user can share.

Default set to 3.
2022-02-22 13:13:48 -03:00
Ramón Souza
1d1375b3cf move modal component to common folder 2022-02-15 15:54:55 +00:00
Ramón Souza
246e3b3e8f move button component to common folder 2022-02-14 20:20:50 +00:00
Ramón Souza
dba04834c7 Merge remote-tracking branch 'upstream/v2.4.x-release' into 2524-feb08 2022-02-09 15:52:42 +00:00
Anton Georgiev
417744515a
Merge pull request #14273 from ramonlsouza/restore-button-css
fix: restore hover/focus button styles
2022-02-03 15:24:50 -05:00
Ramón Souza
cdb6e2e652 restore hover/focus button styles 2022-02-03 19:45:51 +00:00
Anton Georgiev
0b269d7973
Merge pull request #14231 from hiroshisuga/noShrunkenThumbnail
fix(virtualBG): recover shrunken thumbnails on the modal
2022-02-01 08:53:18 -05:00
Ramón Souza
b17ec549bd remove extra parentheses from virtual bg label 2022-02-01 12:43:40 +00:00
Anton Georgiev
06b8630719
Merge pull request #14230 from hiroshisuga/blur_translate
fix(virtualBG): snippet "blur" translation
2022-01-31 15:33:32 -05:00
hiroshisuga
65c8d14108
Update styles.scss 2022-01-29 14:26:27 +09:00
hiroshisuga
b1936e9fdc
Update component.jsx 2022-01-29 14:16:39 +09:00
Ramón Souza
16cd3c4ebb Merge remote-tracking branch 'upstream/v2.4.x-release' into dev-24-0125 2022-01-25 16:56:52 +00:00
Anton
7f075be033 fix all test selectors 2022-01-20 10:03:18 -03:00
Arthurk12
9c571dcc82 fix(webcam): unresponsive webcam selector button
Video preview modal opens when user clicks on the webcam selector
button/chevron even if the client is set to skip video preview
(userdata-bbb_skip_video_preview=true).
2022-01-12 19:25:35 +00:00
Ramón Souza
f6e65f58c5 merge 2.4 into develop and resolve conflicts - partial 2022-01-12 16:40:45 +00:00
Joao Victor
c0ebc50735 fixes bad alignment 2022-01-10 15:42:22 -03:00
Anton Georgiev
3ca8f2cc22
Merge pull request #13797 from JoVictorNunes/issue-13214
fix: camera background localization
2021-12-15 13:42:21 -05:00
Ramón Souza
d1c516fef6 resolve html5 conflicts 2021-12-10 21:07:35 +00:00
Anton Georgiev
797fc49633 TEMP 2021-12-09 20:37:05 +00:00
Joao Victor
2b554ad47f fix: camera background localization 2021-12-01 08:20:04 -03:00
prlanzarin
143ea132b9 refactor(webcams): remove video preview cancel/confirm/something button
Another round of experimentation with that button.

Removing it due to its role being already contemplated by two other actions in the modal: clicking outside and the X icon

Will have to see how this is received in internal testing
2021-11-26 13:01:17 +00:00
Max Franke
9ce58c38e7 fix(video): 'stop all' button shows when webcam = 1
Add a condition that, if the user has more than 1 camera and
not is on mobile, shows the 'stop all' button.
2021-11-26 12:58:53 +00:00
Anton Georgiev
5162b4c403
Merge pull request #13679 from JoVictorNunes/issue-13241
fix: virtual background not kept when switching from breakout to main room
2021-11-19 15:11:21 -05:00
prlanzarin
3eb760e0b2 chore(webcams): cleanup unused vars in video-preview container 2021-11-19 19:03:36 +00:00
prlanzarin
13eb9fe702 refactor(webcams): re-use lock check from video-provider in video-preview 2021-11-19 18:23:17 +00:00
João Victor
6524f70941 support for storing multiple virtual backgrounds 2021-11-19 08:10:24 -03:00
Anton Georgiev
542db847ff
Merge pull request #13574 from Tainan404/smooth-reconnection-25
Improve data structure to not break on reconnections
2021-11-17 15:55:21 -05:00
Ramón Souza
e5293d9109 only use colorBackground in backgrounds 2021-11-16 17:15:02 +00:00
Joao Victor
2176898c9f fix: video preview alignment 2021-11-11 16:42:07 -03:00
Joao Victor
cc85b58ef4 improves video preview modal 2021-11-09 08:36:06 -03:00
Tainan Felipe
f5eef03f3f Improve data structure to not break on reconnections 2021-11-03 14:37:54 -03:00
Ramón Souza
3565c8add0 convert video-preview component 2021-10-28 13:16:36 +00:00
Ramón Souza
6799922131 convert virtual-background component 2021-10-28 11:58:39 +00:00
Anton Georgiev
719afa6cd2 Merge branch 'v2.4.x-release' of github.com:bigbluebutton/bigbluebutton into merge-24-dev 2021-10-14 15:14:22 +00:00
Ramón Souza
9a56848a83 improve video preview - safari 2021-10-13 20:21:54 +00:00
Tainan Felipe
1de8e0779d Add server side reactivity to publications 2021-10-13 15:00:52 -03:00
KDSBrowne
eef95165a6 add aria-pressed to background thumbnails 2021-09-14 13:56:59 +00:00
KDSBrowne
be3bd85bca add group role | aria-label to virtual bg list | cam dropdown activate via keyboard 2021-09-14 01:50:24 +00:00
KDSBrowne
ed4d7a4b5a remove button access from keyboard when disabled 2021-08-31 23:34:16 +00:00
KDSBrowne
a024aaade5 recover greyscale thumbnail styles | fix varying spacing 2021-08-31 23:17:28 +00:00
Anton Georgiev
978d42044b
Merge pull request #13107 from KDSBrowne/bbb-cam-bg-acc
Update Accessibility For Virtual Background Buttons
2021-08-31 09:45:33 -04:00
KDSBrowne
228a40c8ed fix tooltip on mouseover 2021-08-30 21:21:41 +00:00
KDSBrowne
c136addca8 fix focus ring issue with mouse 2021-08-30 19:56:29 +00:00
KDSBrowne
c3ef38d73c update virtual background image tooltip text 2021-08-30 00:45:31 +00:00
Ramon Souza
d96d037ff6 fix uneven spacing - video-preview modal 2021-08-24 08:42:39 -03:00
KDSBrowne
b3ed3c842c update styles for virtual background thumbnails 2021-08-20 00:21:34 +00:00
Ramon Souza
b8e80644cf add focus and tooltips to virtual backgrounds 2021-08-18 14:24:19 -03:00
Max Franke
21ff6c545a style(virtual-backgrounds): disabled when env. is not supported
Disabled virtual backgrounds for not supported
devices, changing the label text.
2021-08-06 13:14:04 +00:00
prlanzarin
9071ba8bc4 refactor(virtual-backgrounds): re-organize virtual background code
Changes (maybe not a complete list):
  - Disable virtualbgs by default
  - Move the virtualbg selector in video-preview to the side below the
profile selection
  - Restore old video-preview sizes
  - Add a wrapper class for MediaStreams (BBBVideoStream)
  - Centralize virtualbg services and business logic code into BBBVideoStream
  - Refactor and centralize virtualbg constant fetching
  - Refactor and centralize virtualbg config fetching
  - Organize virtualbg type definitions
  - Remove added states in video-provider to prevent further bloat
  - Remove added states in video-preview to prevent further bloat
  - Lock virtual bg switching while video-preview itself is locked
  - Add proper virtualbg error surfacing via toasts
  - Refactor iOS availability detection to use centralized UA checker
  - Avoid calling gUM when toggling virtualbgs on/off
  - Make virtualbg video-list-item action a toggle instead of a
state-aware action
  - Make virtualbg switching work in video-preview for cameras that are
already shared. Especially useful when there are multiple source
cameras, and will be important in the near future
  - Add Derivative Work notices in files that are partially copied from
jitsi-meet
  - Simplify track replacing in video-provider
  - Split video-preview UI code for virtualbgs into a separate functional component
2021-07-22 18:53:42 +00:00
Bartu Bazna
9f791a8892 Squashed virtual background commits 2021-07-21 20:00:19 +00:00
prlanzarin
0e6a900635 fix(webcams): avoid leaking media streams on webcam profile changes
Fix regression introduced by commit 0ddf02e
2021-07-07 02:54:19 +00:00
prlanzarin
d8dae1ec90 fix(webcams): handle Firefox video stream cleanup edge case
Firefox doesnt fire the ended evt/onended callback for live video mediastreamtracks. That caused the stream storage to not run the cleanup procedure in some scenarios

Manually emit the ended event which works with the onended callback when a track is stopped
2021-07-05 16:26:24 +00:00
prlanzarin
60dd10510c fix(webcams): add fallback labels for devices in video-preview
In cases where fingerprinting protection is so adamant that we are
unable to get device labels

Fixes #9053
2021-07-05 16:03:30 +00:00
prlanzarin
0ddf02e954 refactor(webcams): improve skipVideoPreview handling, add error handling to it
Also organized video-preview a little better overall
2021-07-05 16:03:15 +00:00
prlanzarin
0453e9e842 fix(webcams): reduce number of gUM calls
Shave off the number of calls in video-preview and video-provider by
using a stream storage

We don´t call an upfront gUM in video-preview anymore to lift the
fingerprinting barrier on device labels and IDs. Flow has been reversed:
upfront enumerate, load first preview, then check if previous
enumeration was obfuscated.

Add a stream storage in video-preview`s service to avoid re-fetching
them in video-providerj

Remove some unneeded video-preview container props

Improve some of video-preview`s error locales
2021-07-02 16:13:31 +00:00
Mario Jr
e69421e671 fix: Do not show unsupported browser warning for microsoft edge
This was being shown in both audio in video modal.
Related to #11865.
2021-04-02 15:12:40 -03:00
Ramon Souza
05a0d5afbf move browser info to helper + remove unused libs 2021-04-01 08:14:24 -03:00
Anton Georgiev
85a84f7cbf
Revert "Change browser detection library from browser-detect to bowser" 2021-03-30 13:16:10 -04:00
Ramon Souza
3fa193005b change browser detection lib to bowser 2021-03-30 09:53:47 -03:00
Ramon Souza
78b61103da fix video preview blink when skip preview = true 2021-02-05 14:30:58 -03:00
Ramon Souza
b1cb4435ee introduce userdata-bbb_skip_video_preview_on_first_join parameter 2021-02-04 15:05:48 -03:00
Anton Georgiev
09e6ba8dfd Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into merge-Jan30 2021-01-29 20:58:05 +00:00
Pedro Beschorner Marin
4e370d28ec Add timeout at video's preview modal
Some browsers seem to (occasionally) not return the getUserMedia promise call and the
user gets stuck in this state unable to share her/his webcam.

Since enumerateDevices still works even on a gUM rejection this includes a racing
timeout that skips gUM. Configured at settings `gUMTimeout`.

Reproduced with Windows 10 Chrome 87.
2020-12-22 20:10:19 +00:00
Pedro Beschorner Marin
c8ace18f85 Enumerate devices even if first getUserMedia fails
The first getUserMedia was not supposed to be considered critical to the whole
video preview flow.

Scenarios where the user has multiple media sources and one of them was already
in use or had some malfunction problem were forcing a global skip at the video
preview modal even if one of them was available to be used.
2020-12-22 19:26:28 +00:00