Commit Graph

971 Commits

Author SHA1 Message Date
Paulo Lanzarin
14c92a3843
feat: add experimental support for ICE restart (#21208)
We currently use full renegotiation for audio, video, and screen sharing
reconnections, which involves re-creating transports and signaling channels
from scratch. While effective in some scenarios, this approach is slow and,
especially with outbound cameras and screen sharing, prone to failures.

To counter that, WebRTC provides a mechanism to restart ICE without needing
to re-create the peer connection. This allows us to avoid full renegotiation
and bypass some server-side signaling limitations. Implementing ICE restart
should make outbound camera/screen sharing reconnections more reliable and
faster.

This commit implements the ICE restart procedure for all WebRTC components'
*outbound* peers. It is based on bbb-webrtc-sfu >= v2.15.0-beta.0, which
added support for ICE restart requests. This feature is *off by default*.
To enable it, adjust the following flags:
- `/etc/bigbluebutton/bbb-webrtc-sfu/production.yml`: `allowIceRestart: true`
- `/etc/bigbluebutton/bbb-html5.yml`: `public.kurento.restartIce`
  * Refer to the inline documentation; this can be enabled on the client side
    per media type.
  * Note: The default max retries for audio is lower than for cameras/screen
    sharing (1 vs 3). This is because the full renegotiation process for audio
    is more reliable, so ICE restart is attempted first, followed by full
    renegotiation if necessary. This approach is less suitable for cameras/
    screen sharing, where longer retry periods for ICE restart make sense
    since full renegotation there is... iffy.

Endpoints that are inbound/`recvonly` only (client's perspective) do *not*
support ICE restart yet. There are two main reasons:
  - Server-side changes are required to support `recvonly` endpoints,
    particularly the proper handling of the server’s `setup` role in the
    its SDPs during an ICE restart. These changes are too broad for now,
    so they are deferred to future releases (SFU@v2.16).
  - Full reconnections for `recvonly` endpoints are currently reliable,
    unlike for `send*` endpoints. ICE restarts could still provide benefits
    for `recvonly` endpoints, but we need the server updates first.
2024-09-20 06:35:32 -04:00
André Castro
b8f3a090bd
Fix: Errors and warnings (#20975)
* bad set state (actionsBarContainer)

* bad set state (appContainer)

* isMobile should be ismobile warning

* bad setState (notes)

* bad setState (user-notes)

* bad setState (user-participants-title)

* bad setState (webCamContainer)

* bad setState (PresentationMenuContainer)

* fix webCams not working issue

* fix userList user counter not working issue

* fix TS lint

* fix TS lint

* fix TS lint

* Later changes
2024-09-10 16:10:28 -04:00
Anton Georgiev
f16eefade2
Merge pull request #21004 from GuiLeme/fix-dom-element-manipulation
fix(plugins): fix useUserCameraDomElement behavior and did some refactor
2024-09-10 14:18:47 -04:00
Guilherme Leme
09f280f4d3 [fix-dom-element-manipulation] Changes in review 2024-09-10 08:46:27 -03:00
André Castro
531859fd52
Client: Adding loading animation to mute/unmute and toggle animation (#20918)
* Client: Adding loading animation tu mute/unmute and toggle animation

* Update bigbluebutton-html5/imports/ui/components/audio/audio-graphql/audio-controls/input-stream-live-selector/buttons/muteToggle.tsx

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>

* TS lint

---------

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>
2024-09-09 08:49:10 -03:00
Guilherme Leme
22453dafd4 [fix-dom-element-manipulation] add userId and streamId to onclick callback arguments of userCameraHelperButton 2024-09-03 11:37:35 -03:00
João Victor Nunes
fe67566334
[3.0] feat: Accept custom webcamBackgroundURL (#20920)
* [3.0] feat: Accept custom webcamBackgroundURL

* docs: webcamBackgroundURL

* test: Update virtual background thumbnail image

* fix: tweak error logs for the webcamBackgroundURL fetching procedure

* test: Update virtual background thumbnail image

* fix(logging): do not specify null extraInfo object

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>

* fix(logging): extract fields from error object for building extraInfo object

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>

---------

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>
2024-08-23 09:04:56 -03:00
Guilherme Leme
bc6a6cbe9b [fix-dom-element-manipulation] Added new extensible area userCameraHelper 2024-08-22 10:51:00 -03:00
Guilherme Leme
137af4e421 [fix-dom-element-manipulation] fix user-camera-dom-element-manipulation hook, refactored several hooks and added onclick event in dropdown 2024-08-20 10:42:05 -03:00
Ramón Souza
32f42163fa
fix(client): add doctype + remove extra styles (#20911) 2024-08-12 17:36:41 -04:00
Tainan Felipe
4d6f4b3ded
Refactor: Make bundle using webpack (#20811)
* Refactor: Make bundle using webpack

* Fix: restore after install codes and a few settings

* Fix: build script folder permission

* Refactor: Remove support to async import on audio bridges

* Upgrade npm using nvm

* Avoid questions on npm ci execution

* Let npm ci install dev dependencies (as we need the build tools here)

* Fix: enconding

* Fix: old lock files

* Remove: bbb-config dependency to bbb-html5 service, bbb-html5 isn't a service anymore

* Fix: TS errors

* Fix: eslint

* Fix: chat styles

* npm install with "lockfileVersion": 3 (newer npm)

* build: allow nodejs 22

* node 22; drop meteor from CI and bbb-conf

* TEMP: use bbb-install without mongo but with node 22 and newer image

* build: relax nodejs condition to not trip 22.6

* build: ensure dir /usr/share/bigbluebutton/nginx exists

* init sites-available/bbb; drop disable-transparent-

* nginx complaining of missing file and ;

* TMP: print status of services

* WIP: tweak nginx location to debug

* Fix: webcam widgets alignments

* akka-apps -- update location of settings.yml

* build: add locales path for nginx

* docs and config changes for removal of meteor

* Fix: build encoding and locales enpoint folder path

* build: set wss url for media

* Add: Enable minimizer and modify to Terser

* Fix: TS errors

---------

Co-authored-by: Tiago Jacobs <tiago.jacobs@gmail.com>
Co-authored-by: Anton Georgiev <anto.georgiev@gmail.com>
Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
2024-08-09 13:58:44 -04:00
Anton Georgiev
46de3f7efd
Merge pull request #20806 from JoVictorNunes/webcam-patch-0724
fix(webcam): fixes related to graphql subscriptions, et al.
2024-08-09 10:53:31 -04:00
Tiago Jacobs
24d91214a9
Merge pull request #20820 from GuiLeme/video-control-plugin-sdk
feat(plugin): userCameraDropdown enhancements, user-camera dom-element and screenshareHelper
2024-08-07 15:21:31 -03:00
André Möller
9d26c41655 Additional changes 2024-08-07 11:01:02 -03:00
André Möller
cdfbc5a276 Additional changes 2024-08-05 14:19:34 -03:00
André Möller
5e1434b188 Additional changes 2024-08-05 14:12:22 -03:00
André Möller
31cc71e2d4 Change of approach 2024-08-05 14:05:04 -03:00
João Victor
1303420157 fix(webcam): ignore connecting streams when sorting 2024-08-01 15:22:45 -03:00
Guilherme Leme
da62c1068e [video-control-plugin-sdk] created useUserCameraDomElement as a dom element manipulation hook 2024-07-31 14:44:55 -03:00
Guilherme Leme
3b3b0dfc51 [video-control-plugin-sdk] added display function and onclick arguments to user-camera dropdown option 2024-07-31 14:40:24 -03:00
André Möller
f18d201de2 Client: Adding loading status to buttons 2024-07-30 15:53:49 -03:00
João Victor
8b4a2f39e0 fix(webcam): turn useGetStats hook into a service method to avoid function re-instantiation 2024-07-30 10:20:18 -03:00
João Victor
62662ee415 refactor(webcam): remove adapter; turn it into a hook 2024-07-30 09:35:47 -03:00
João Victor
00e5cd5909 fix(webcam): sort connecting streams first 2024-07-29 11:08:35 -03:00
João Victor
d24c63db2b fix(webcam): store grid items in a ref to avoid a quick blink when the subscription is loading 2024-07-29 10:42:00 -03:00
João Victor
30a955cd2d fix(webcam): use aggregate filter to filter grid items instead of proxying which items not to bring 2024-07-29 10:37:38 -03:00
João Victor Nunes
b0498d29b2
fix(webcam): a couple of pagination fixes, improvements, et al. (#20720) 2024-07-19 08:52:55 -04:00
germanocaumo
cbe0b4f6ae
feat(webcams): skip video preview if valid input devices stored (#20696)
* feat(webcams): skip video preview if valid input devices stored

Additionally:

- refactor: re-use the existing VirtualBackground_* storage info instead
  of creating a new one
- fix: store background choices per deviceId instead of globally
- fix: guarantee background restore attempts are *critical* when
  video-preview is supposed to be skipped. We want the preview to be
  shown if the previous background could not be restored to preserver
  the user's privacy choice
- fix: cameras could not be shared if no previous device info was in
  the user's session
- fix: uploaded background images were not correctly restored
- fix: do not spin up virtual bg workers for brightness if it has not
  been altered by the user
- refactor: remove old video-provider background restore routine,
  centralize it in video-preview

* fix(skip-video-preview): correct storage check and add playwright test and docs

---------

Co-authored-by: prlanzarin <4529051+prlanzarin@users.noreply.github.com>
2024-07-18 16:24:10 -04:00
Gustavo Trott
c6b9ab35ae
refactor: Remove old userStatus Emoji (#20717)
* Remove old userStatus Emoji

* tweak docs

* fix bkroom errors
2024-07-18 08:58:38 -04:00
Ramón Souza
e72d6d3f19 remove useStreamUsers useMemo 2024-07-12 14:47:17 -03:00
João Victor
12f39c7cf7 Fix typings 2024-07-02 17:11:16 -03:00
João Victor Nunes
d016b69b0c
refactor: remove standalone voice user subscription (#20600) 2024-06-28 16:58:29 -03:00
João Victor Nunes
54aeb7a9dc
refactor: remove remaining Meteor imports (#20602) 2024-06-28 16:44:14 -03:00
João Victor Nunes
9801905960
fix: improve the hooks of voice activity (#20589)
* fix: improve the hooks of voice activity

* Add check for users who haven't talked
2024-06-27 14:31:20 -03:00
André Castro
76c25f0fcc
Fix: Webcam display of emoji can trigger elements rearrangement (#20573) 2024-06-26 13:45:37 -03:00
João Victor
fbf72650b9 Add useMemo 2024-06-24 12:46:46 -03:00
João Victor
09fe35b1f0 Merge branch 'v3.0.x-release' into use-who-is-talking 2024-06-24 11:31:13 -03:00
Ramón Souza
2d8a964ec0
Merge pull request #20555 from JoVictorNunes/webcam-enhancements-0620
fix(webcam): webcam button flickering on join
2024-06-24 10:35:15 -03:00
João Victor
17b734e642 refactor(core-html5): custom hooks for voice data 2024-06-21 18:45:05 -03:00
João Victor
dd635c1404 fix(webcam): webcam button flickering on join 2024-06-20 11:42:44 -03:00
Tiago Jacobs
ba02a327e1
Revert "refactor(core-html5): custom hook for voice data" 2024-06-19 14:18:58 -03:00
João Victor
7ede343490 refactor(core-html5): custom hook for voice data 2024-06-18 15:40:14 -03:00
germanocaumo
d00454136b Merge branch 'v3.0.x-release' of https://github.com/bigbluebutton/bigbluebutton into new-video-preview-design 2024-06-17 15:27:36 -03:00
germanocaumo
47630895ca Merge branch 'v3.0.x-release' of https://github.com/bigbluebutton/bigbluebutton into new-video-preview-design 2024-06-17 09:35:06 -03:00
João Victor
5483099739 Remove 'graphql' tag from component names 2024-06-17 08:58:33 -03:00
João Victor
13425335df Fix imports 2024-06-17 08:54:03 -03:00
João Victor
452867246a Delete and move files 2024-06-17 08:35:11 -03:00
João Victor
6fdfc21532 Remove Meteor import 2024-06-14 17:20:09 -03:00
João Victor
7c5b6230f6 Tweak webcam sorting 2024-06-14 14:32:22 -03:00
AtilaU19
ff4fe80e80 fix(video-preview): corrections of new modal 2024-06-14 12:22:39 -03:00