Commit Graph

153 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
prlanzarin
2d436977cb video-provider: add pagination page change timer to prevent spamming 2020-08-19 13:56:22 +00:00
prlanzarin
28e826118a video-provider: first version of video pagination 2020-08-18 17:00:47 +00:00
Anton Georgiev
5be5aed1d9 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2020-08-12 2020-08-12 17:12:58 +00:00
prlanzarin
c524abf05b video-provider: normalize hidden cameraProfiles constraints
Also add some inlined docs to settings.yml
2020-08-11 14:51:50 +00:00
prlanzarin
1d52b158f8 video-provider: fix safari resolution change on applyConstraints, only reapply bitrate when needed 2020-08-05 16:56:18 +00:00
prlanzarin
642de5076a video-provider: first, simplified version of dynamic camera profile control 2020-08-05 16:55:41 +00:00
Pedro Beschorner Marin
7b3505acff Enumerating devices after video preview gUM 2020-08-05 15:06:44 +00:00
Pedro Beschorner Marin
40908a51a8 Postponing get from user settings 2020-08-05 14:56:20 +00:00
prlanzarin
fab6d96769 video-provider: reimplement PR #9407
Some weird merged regressed #9407 when merging 2.2 in 2.3, and backporting the VP from 2.3 to 2.2 reintroduced the issue, so I reimplemented it
2020-08-05 14:35:08 +00:00
Pedro Beschorner Marin
b74bd0283e Fix webcamsOnlyForModerator 2020-08-05 14:32:51 +00:00
prlanzarin
dac3259c48 Merge remote-tracking branch 'pedrobmarin/bbb-multiple-webcams' into upstream-2.2-vpeg-base 2020-08-05 14:20:58 +00:00
Joao Siebel
6987ab988c Restore activity check modal.
If activity check was enabled in server, the activity check modal wasn't showed
to users and after a given time the user was disconnect, also fix the meeting-end
and error-screen messages, informing the user the reason why he was kicked.
2020-08-03 09:44:21 -03:00
Pedro Beschorner Marin
526f79e8f2 Merge remote-tracking branch 'bigbluebutton/v2.2.x-release' into bigbluebutton/develop 2020-06-30 18:15:18 -03:00
mw781
2da9028c0b Extract constant for convenience 2020-06-15 21:51:46 +01:00
mw781
f4dc8d9d69 Fix critical issue with video-preview arguments
After the code to mirror the video-preview component was added
I noticed that I improperly used the userId property of an undefined
argument as the video-preview does not have a user as a prop. This
commit decouples the logic to verify if the webcam should be mirrored
and whether the webcam belongs to that user. In the latter, we verify
if the user parameter exists and use it in a conditional, otherwise
we simply return true (applies with the video preview component),
where there is only one video stream.
2020-06-15 21:49:00 +01:00
mw781
bf68d2c76f Refactor code and implement mirroring for video-preview 2020-06-14 20:13:47 +01:00
Pedro Beschorner Marin
362317e8d0 Enumerating devices after video preview gUM 2020-05-08 13:43:29 -03:00
KDSBrowne
741455aeba remove hideUserList() from video-provider service 2020-05-06 15:14:07 +00:00
KDSBrowne
e82e0f5be9 fix see views in user list lock affecting webcams 2020-05-02 16:50:40 +00:00
Pedro Beschorner Marin
ef48ea2e8c Postponing get from user settings 2020-03-26 19:31:08 -03:00
Pedro Beschorner Marin
66878174bb Fix webcamsOnlyForModerator 2020-03-26 15:28:58 -03:00
Chad Pilkey
0853298c49 fix client crash when client is unsecured 2020-03-09 17:47:47 +00:00
Pedro Beschorner Marin
9b450ae1d9 Check Safari before listening for ondevicechange 2019-12-20 17:21:40 -03:00
Pedro Beschorner Marin
78b0d0276a Avoid multiple cameras sharing in mobile and safari 2019-12-20 17:21:23 -03:00
Pedro Beschorner Marin
8e129fb961 Included multiple cameras UI 2019-12-18 14:44:56 -03:00
Pedro Beschorner Marin
5c71e2d0bb Included new getStats monitor for audio and video 2019-12-10 09:07:06 -03:00
Pedro Beschorner Marin
a434f61052 Reverting file mode changes 2019-12-10 09:05:04 -03:00
Pedro Beschorner Marin
f5d7be7f00 Making the interface functional for the multiple webcams. This must change after thinking on a design 2019-12-10 09:05:03 -03:00
Pedro Beschorner Marin
3b591a086b Unified video providers 2019-12-10 09:02:16 -03:00
prlanzarin
4e55145381 Change VideoService userName fetch to Auth and pass it again to video-provider 2019-11-28 18:49:20 +00:00
Tainan Felipe
957225fabf Rename collection to video-streams 2019-09-06 13:50:31 -03:00
Tainan Felipe
c27ff18958 Merge remote-tracking branch 'upstream/master' into video-performance 2019-09-06 10:16:22 -03:00
Tainan Felipe
3d8e0be9fe Filter user collection fields 2019-09-05 17:03:22 -03:00
Tainan Felipe
060e82dddf Move hasStream to video-users collection 2019-09-05 15:29:30 -03:00
Anton Georgiev
ea18b09311 add a few more collection lookups "fields" delimiters 2019-08-29 12:26:07 -04:00
Chad Pilkey
027c28c320 add lock setting option to hide viewers from each other 2019-08-09 16:45:26 -07:00
Chad Pilkey
6e76dd584b improve user fetch and sort, and webcam fetch 2019-08-09 15:39:55 -07:00
Pedro Beschorner Marin
3f2cb781d7 Adjusted lockSettingsProps for the HTML5 client 2019-04-10 13:04:27 +00:00
Anton Georgiev
1d4b21d9f7 handle meeting not found 2018-12-14 22:33:52 +00:00
Bobak Oftadeh
95ddb01666 Improved fix on VideoService.isLocked error 2018-12-06 22:41:09 +00:00
Bobak Oftadeh
cdc6033c45 fixed VideoService.isLocked error 2018-11-30 16:41:08 +00:00
prlanzarin
d652eb7f9b Added voiceBridge prop to video-provider and forward it to SFU 2018-11-20 13:05:16 +00:00
Lucas Fialho Zawacki
b667c53590 Get more detailed logs from the video component 2018-07-25 18:53:12 -03:00
prlanzarin
d2bdb67ed3 Propagating configs to WebRTC screenshare script and added support for STUN/TURN config to SFU components 2018-07-09 21:29:59 +00:00
Oswaldo Acauan
fb6aeb90f9 Fix autosharewebcam option not working on first join 2018-04-25 11:23:44 -03:00
Oswaldo Acauan
46559833e2 Add metatag html5autosharewebcam 2018-04-24 12:51:41 -03:00
prlanzarin
c9cdb08095 Fixed WebRTC video viewer stop, media flow error handling and state inconsistensies 2018-04-18 18:16:26 +00:00
Oswaldo Acauan
5b9433fc9f Fix webcams/sfu reconnect on every render and styles for 4:3 2018-04-11 15:50:14 -03:00
Oswaldo Acauan
fe11dd9a90 Improve media overlay/content styles 2018-04-09 15:28:54 -03:00
Oswaldo Acauan
5918fc4483 Impl new webcam design 2018-04-09 11:39:27 -03:00