Commit Graph

103 Commits

Author SHA1 Message Date
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
Anton Georgiev
472c9a6107 Merge branch 'v2.3.x-release' of github.com:bigbluebutton/bigbluebutton into 237-into-develop 2021-07-20 15:21:21 +00:00
Ramon Souza
a281aeb11d fix unlocked viewer webcam 2021-07-07 14:00:47 -03:00
Pedro Beschorner Marin
6264caccd9
Merge pull request #12700 from prlanzarin/u24-gum-store
Webcams: reduce number of gUM calls, refactor in video-preview, fix #9053
2021-07-05 14:13:36 -03: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
Ramon Souza
d8e19dbd9f remove unused variables 2021-06-28 08:20:49 -03:00
Pedro Beschorner Marin
068b82b1fa refactor(connection status): remove legacy monitor
Remove parts of a previous connection monitor.

To add some context (as far as my memory goes) to the multiple connection
monitor features the product has, `stats` (currently named `connection status`)
was introduced at the Flash client back in ~2016. @fcecagno and I did it
as a BigBlueButton's Summit activity. Our work was squashed into a single
commit in 92554f8b3e :).

I'm not sure about the whole story behind `network information` (the late
connection monitor added to the HTML5 client) but I assume it should work
as a collector for a bunch of different connectivity monitors. I remember
when it was introduced but I don't know why it wasn't adopted. My best guess
would be because of some performance issues the `user list` had back then.

To follow on why `connection status` replaced `network information` at the
HTML5 client, when I did the `multiple webcams` feature I had to refactor
a big chunk of the `video provider` (#8374). Something that wasn't really
helping there was the adaptation of `stats` that was made to show local
feedback for each webcam connection. Although this feature wasn't being
used anymore, `network information` did rely on that to build up data. With
this monitor gone I assumed it was my responsibility to provide an alternative
so I promoted Mconf's port of the Flash `stats` monitor to BigBlueButton's
HTML5 client (#8579).

Well, that's my perspective on how things went for those features. If
anyone would like to correct me on something or add something else on
that history I would appreciate to know.
2021-06-13 14:02:46 -03:00
Anton Georgiev
78385ab3ea
Merge pull request #12569 from pedrobmarin/f-v-ds
feat(video): data savings
2021-06-12 16:59:38 -04:00
Arthur
78047eb68e feat(video): data savings
Enable video sharing when data savings is activated.
2021-06-12 14:16:32 -03:00
Max Franke
8b274476b1 feat(video): indicate who is sharing webcam
Add the `camera` icon in the user list for whoever is sharing,
in order to improve the understanding of who is sharing the webcam.
It is possible to enable/disable this indication in the settings.yml
2021-06-12 13:40:47 -03:00
prlanzarin
61cb8457d6 fix(video): check if encodings array is empty before trying to apply bitrate 2021-05-12 19:42:07 +00:00
prlanzarin
1686225748 fix(video): check if pagination is in effect before choosing sort 2021-05-04 16:34:02 +00:00
Ramon Souza
75b9261f6f remove unused imports/variables 2021-04-22 13:17:20 -03:00
prlanzarin
001ab9554c video: added voice activity stream sorting, made stream sorting extensible
Video streams can be sorted by voice floor activity in the client according to FreeSWITCH´s floor events. The feature works together with pagination, essentially giving an Last-N like experience while not disrupting too much

Made video stream sorting extensible in a way. The sorting modes for pagination and unbounded can be configured in settings.yml and new sorting modes can be added to the stream sorting util under video-provider. Inline docs explain how to do that

Changed how the stream ID attribute from video-streams collection was passed to downstream components; we had an array map that was executed every change just to map stream to cameraId, which is bizarre. So I changed the cameraId usage in downstream components to be conformat with the collection attributes and shaved off the map where it wasnt needed

Add better selectors to video-list-item container´s VoiceUser fetch
2021-04-12 19:06:07 +00:00
Ramon Souza
05a0d5afbf move browser info to helper + remove unused libs 2021-04-01 08:14:24 -03:00
Ramon Souza
9218262e0a all device info moved to helper 2021-03-31 14:13:36 -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
5fe5705ac0 auto-reconnect webcam after leaving breakout room 2021-03-26 16:54:58 -03:00
prlanzarin
0a0a4b4915 video-provider: add dynamic video page sizes based on number of users
New config called paginationThreshold defines classes of page sizes that depend on the number of participants of a meeting

The rationale is pretty much the same as the cameraQualityThresholds, but the thresholds are users here and the ceilings are the page sizes
2021-03-16 20:15:13 +00:00
prlanzarin
cf8b5e422f video-provider: add pagination settings toggle 2021-03-10 18:44:23 +00: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
prlanzarin
c37c3d0c7b video-provider: fix inconsistent client state when a webcam being shared timed out (1020)
Recent fix to the stop all cameras behaviour exposed a bug where the local camera connecting state wasnt being cleared up when a camera timed out before being successfully shared
2021-01-26 11:49:39 -03:00
Pedro Beschorner Marin
cc9b552e2a Fix stream stop for multiple webcams
Video provider's service for local stream control was wrongly setting the disconnected
state when a multiple webcam user tried to stop a single cam. The `stopVideo` method
was inconsistent when called multiple times for the same `cameraId`.

Included a better testing scope for event dispatching and disconnected state handling.
2021-01-12 13:24:40 -03:00
Joao Siebel
b2adffa4c2 Merge remote-tracking branch 'upstream/develop' into connection-manager 2020-09-18 16:30:20 -03:00
Anton Georgiev
377dc27a8d Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into 09-16-merge 2020-09-17 14:37:28 +00:00
Anton Georgiev
ed9c8af1e7
Merge pull request #10431 from prlanzarin/upstream-2.2-spl
screenshare: make presenter's screenshare preview local instead of remote
2020-09-10 14:40:29 -04:00
Anton Georgiev
2d0e37b4a9
Merge pull request #10429 from prlanzarin/upstream-2.2-fmsmc
video-provider: fix mesh stream sorting with multiple cameras
2020-09-10 10:41:48 -04:00
prlanzarin
18c2d33ff1 video-provider/screenshare: streamline isUserPresenter usage 2020-09-10 14:11:18 +00:00
prlanzarin
259a780303 video-provider: fix mesh stream sorting with multiple cameras 2020-09-10 13:33:22 +00:00
Tainan Felipe
1d0e5e5cdc Add individual messages to video disable 2020-09-09 15:07:32 -03:00
Joao Siebel
6e4e0a510a Merge branch 'remove-user-on-exit' into connection-manager 2020-09-08 16:36:01 -03:00
Anton Georgiev
8cc8474655 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into 08-26-merge 2020-08-27 19:09:07 +00:00
Anton Georgiev
4476df6f09
Merge pull request #10318 from prlanzarin/upstream-2.2-vpeg-pagination
video-provider: prioritise presenter in pagination ordering, restore pre-.22 full mesh ordering
2020-08-24 17:14:43 -04:00
Anton Georgiev
b8959be312
Merge pull request #10304 from pedrobmarin/individual-video-record-control
Add individual video record control
2020-08-24 16:58:16 -04:00
prlanzarin
f3674335a4 video-provider: prioritise presenter in pagination ordering
Also restore the old full mesh, pre-.22 ordering where outbound streams were put first
2020-08-24 19:55:29 +00:00
Anton Georgiev
89319787f8
Merge pull request #10317 from prlanzarin/upstream-2.2-vpeg-pagination
video-provider: fix dynamic profile accounting when using pagination
2020-08-24 15:14:00 -04:00
prlanzarin
e7323ee6a5 video-provider: fix dynamic profile accounting when using pagination 2020-08-24 18:30:24 +00:00
Anton Georgiev
59ab8e215d
Merge pull request #10315 from prlanzarin/upstream-2.2-vpeg-pagination
video-provider: fix pagination edge case
2020-08-24 10:42:07 -04:00
prlanzarin
2e6627b820 video-provider: fix pagination edge case where pages would be calculated as NaN 2020-08-24 14:35:28 +00:00
Pedro Beschorner Marin
8b54c01898 Add hack to avoid recording viewers video stream
If, at the time the video is shared, the user has a viewer role and
meta_hack-record-viewer-video is false this user won't have this video
stream recorded.
2020-08-22 21:00:31 -03:00
Pedro Beschorner Marin
95bc7cd59e Add individual video record control
This adds bbb_record_video userdata that, when is set to false, signals
bbb-webrtc-sfu to avoid generating the stream recording assets for a
particular user.

By default, bbb_record_video is true.
2020-08-21 19:10:25 -03:00
Anton Georgiev
4fb301c48b
Merge pull request #10293 from prlanzarin/upstream-2.2-vpeg-pagination
video-provider: first tackle at video pagination
2020-08-20 15:24:57 -04:00
prlanzarin
0b29b5a812 video-provider: enrich pagination enabled checks 2020-08-20 17:26:32 +00:00
prlanzarin
a98c476239 video-provider: remove page change lock in favor of a debounced approach 2020-08-20 15:43:02 +00:00
prlanzarin
5f72cecf4f video-provider: fix mirrorOwnWebcam behaviour (regression from #10208) 2020-08-20 01:12:56 +00:00
prlanzarin
bc4ce58251 video-provider: make pagination circular 2020-08-19 22:27:47 +00:00
Joao Siebel
f33bd10640 Remove user from collection when leaves 2020-08-19 13:22:43 -03:00