Commit Graph

229 Commits

Author SHA1 Message Date
Joao Victor
4c6050521b feat: pin/unpin shared notes on media area (HTML5 portion) 2022-10-24 10:11:28 -03:00
Joao Victor
b782a7fc06 fix: screenshare volume control 2022-09-01 13:48:59 -03:00
prlanzarin
b8811bafd4 fix(layout): use actual screen share size when calculating smart layout
Smart layout (et al) presumes screen sharing will always use 100%
width of the media area. That causes cameras to always be positioned on
top, which is not always the optimal position depending on the viewport
and stream aspect ratio/resolution - so space is wasted.

This commit uses the actual screen sharing video size as provided by
HTMLVideo's videoWidth/videoHeight properties. The calculation uses the
same logic as the one used for presentation/slides, which should make it
a bit familiar.

There's also a handler for HTMLVideo's `resize` event for those browsers
that support it - which enables handling of variable-sized screen
sharing streams. That handler is debounced at 500 ms to prevent
excessive CPU use.

Extra testing is needed with the widest range possible of
browsers/environments and feature combinations.
2022-07-22 13:28:43 +00:00
Tiago Jacobs
75c8dcd491 Merge 2.6 2022-06-29 17:38:21 -03:00
Paulo Lanzarin
d5b1bba975
Merge pull request #14981 from prlanzarin/u26-form-revealer
fix(screenshare): check packet flow to detect unhealthy streams earlier
2022-05-10 13:11:34 -03:00
prlanzarin
83e26b7f63 fix(screenshare): race condition - local stream ends while broker stars
There could be a race condition where the local getDisplayMedia stream ends
(eg via Chrome`s stop sharing toast) while the broker hasn't finished starting.
That would lead to a scenario where the broker wouldn't emit an end event,
causing screen sharing to be flagged as started with a blank/invalid stream.
2022-05-09 18:00:30 +00:00
prlanzarin
d350afd194 fix(screenshare): check packet flow to detect unhealthy streams earlier
Screen streams were only deemed unhealthy when the transport's ICE state
transitioned to failed. That was as good as nothing because the stream would
stay frozen with no visual UI feedback until it reconnected. Bad UX.

This commit addresses that issue via two changes:
  - A stream is deemed *potentially* unhealthy now if the transport's
    state becomes disconnected
  - If a stream is deemed potentially unhealthy, a monitor probe is
    started to check whether there is media/packet flow (every 500ms).
    If there's no packet flow, the stream is flagged is factually unhealthy and
    UI feedback about that is rendered.

It's still not as good as it could be - relying on disconnected still
leaves a couple of seconds of silence to be dealt with. For that to be
addressed the prober would have to run nonstop, but that's for later.
2022-05-09 01:59:32 +00:00
Lucas Zawacki
140e08a730 Adapt code for merge 2022-03-02 11:24:54 -03:00
Lucas Zawacki
830c44702f feature(layout): Only use one place to store presentationIsOpen 2022-02-24 15:30:53 -03:00
Ramón Souza
b55fb32f6e move loading-screen component to common folder 2022-02-15 14:55:08 +00:00
Ramón Souza
0377854b98 move fullscreen-button component to common folder 2022-02-15 14:42:02 +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
443e5a1555
Merge pull request #14300 from ramonlsouza/issue-13990
fix: Smart layout under some circumstances not behaving as expected when sharing video or screen
2022-02-07 14:57:45 -05:00
Ramón Souza
b028e4f4aa do not use presentation size for screenshare and external video in smart layout 2022-02-07 19:29:27 +00:00
Joao Victor
5cde2aae8a Reorder if/else chain 2022-02-07 14:46:45 -03:00
Joao Victor
b43075f815 Changes toast notification for when screenshare has stopped due to data saving 2022-02-07 14:27:14 -03:00
Anton Georgiev
46cb753c44 Merge branch 'dev-24-0125' of github.com:ramonlsouza/bigbluebutton into merge-jan-27 2022-01-27 16:03:12 +00:00
Ramón Souza
08e13d4fe0 fix screenshare position regression 2022-01-26 16:55:01 +00: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
Ramón Souza
6ad5ae2baa only restore presentation after screenshare ends if it is open when screenshare starts 2022-01-14 12:43:48 +00:00
Ramón Souza
f6e65f58c5 merge 2.4 into develop and resolve conflicts - partial 2022-01-12 16:40:45 +00:00
Max Franke
d043066a3c fix(style): custom style in video container
Now the screenshare container change color according to the style applied
2022-01-03 15:57:21 -03:00
Paulo Lanzarin
775150471c
Merge pull request #13688 from Arthurk12/screenshare-volume
feat(screenshare): volume control
2021-12-14 14:06:37 -03:00
prlanzarin
fb2f2da9d9 fix(screenshare): properly handle mobile hover for volume controls 2021-12-14 16:35:52 +00:00
Anton Georgiev
797fc49633 TEMP 2021-12-09 20:37:05 +00:00
prlanzarin
e49aa1c959 refactor(screenshare): revert volume control to HTMLMediaElement, make it configurable
I have growing concerns about gain node`s effect on audio quality the way it
was implemented, so I opted to fall back to HTMLMediaElement`s volume control
for the time being until we can gauge quality impacts properly later on

Add a new configuration flag enableVolumeControl, false by default while the
feature undergoes a field trial
2021-12-08 16:24:31 +00:00
Ramón Souza
53c0c990f1 other components isPresenter rework 2021-11-23 16:43:49 +00:00
Ramón Souza
51b5cc4f3a remove isPresenter methods from services 2021-11-23 16:40:14 +00:00
Ramón Souza
d6f160d00f screenshare component isPreenter rework; 2021-11-23 14:20:29 +00:00
Arthurk12
96965ebeed fix(layout): unable resize side panel
Sets z-index attribute to screenshare component, only when it is in
fullscreen mode. This is the same way it is done for presentation
component.
2021-11-19 18:51:42 +00: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
Arthurk12
c2e90ede11 feat(screenshare): gain node
Splits screenshare stream into video and audio and adds gain node to audio
stream in order to permit volume control by the user. Volume is normalized
between [0, 2](muted and 2x boost).
2021-11-12 16:30:39 +00:00
Arthurk12
350b155309 feat(screenshare): add volume slider
Adds volume slider UI to screen sharing's viewer container
2021-11-11 17:38:18 +00:00
Ramón Souza
6e7f35270e convert screenshare component 2021-11-05 16:36:03 +00:00
prlanzarin
86f8e03e97 fix(screenshare): bad isPresenter transition check
Fixes #13245
2021-11-04 14:47:35 +00:00
Tainan Felipe
f5eef03f3f Improve data structure to not break on reconnections 2021-11-03 14:37:54 -03:00
Anton Georgiev
022f125e15 Merge branch 'v2.4.x-release' of github.com:bigbluebutton/bigbluebutton into merge-24-dev 2021-10-29 13:24:51 +00:00
Max Franke
664bad7d08 feat(screenshare): UX updates
Reduce the font size to 21px (1.3rem) and font weight to 600.
2021-10-27 11:51:39 -03:00
Anton Georgiev
1622425cbc Merge branch 'develop' of github.com:bigbluebutton/bigbluebutton into 2.4-into-develop 2021-10-22 19:12:58 +00:00
Ramón Souza
9e71583ec7 restore old minimize presentation button and add a flag to switch 2021-10-14 19:31:47 +00:00
Anton Georgiev
24d672a832 Merge branch 'v2.4.x-release' of github.com:bigbluebutton/bigbluebutton into merge-24-dev 2021-10-14 15:13:17 +00:00
Tainan Felipe
1de8e0779d Add server side reactivity to publications 2021-10-13 15:00:52 -03:00
Anton Georgiev
5202cd47ca
Merge pull request #13306 from lfzawacki/develop-minimize-all
feature: Allow external video and screenshare to be minimized just like the presentation area
2021-10-04 11:45:51 -04:00
Lucas Fialho Zawacki
d7f3924350 Enable swap layout for screenshare and external video 2021-09-27 21:03:20 +00:00
Ramon Souza
2b2792102b fix hidePresentation parameter 2021-09-27 17:13:41 -03:00
Anton Georgiev
aa2089887c Merge branch 'v2.4.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2.4 2021-09-25 14:59:22 +00:00
Anton Barboza
dce318e1ad avoid using static timeouts and fix Random Poll test 2021-09-22 13:52:27 -03:00
Ramon Souza
098826c70a rename layout functions 2021-09-10 17:48:52 -03:00
Ramon Souza
981e707612 add selector to containers, remove old layoutContext + convert base component into function 2021-09-10 14:21:04 -03:00
Ramon Souza
1bea5551ff hide screenshare when sidebar content is closed - focus on video 2021-08-31 13:21:31 -03:00
Anton Georgiev
4ecb24b4fa Merge branch 'v2.3.x-release' of github.com:bigbluebutton/bigbluebutton into merge-aug30 2021-08-30 18:11:16 +00:00
Mario Jr
00e01c1872 add screenshare's peer information to video stats in connection status modal
Added support for getStats in screenshare's service. This works similar
to the getStats for video provider, and the information retrieved from
screenshare is added to the video information for cameras.
2021-08-23 12:36:01 -03:00
Ramon Souza
84b1651302 Merge remote-tracking branch 'upstream/develop' into issue-12953 2021-08-11 16:38:13 -03:00
Ramon Souza
be4859df6d remove fullscreen state 2021-08-11 13:29:09 -03:00
Ramon Souza
53d0b8b949 exit fullscreen when component is unmounted 2021-08-11 13:19:24 -03:00
Ramon Souza
f4df88bf8d fix screenshare with hidden presentation 2021-08-09 16:12:41 -03:00
Vitor Mateus De Almeida
145ca61d40 linting some files 2021-08-09 11:24:02 -03:00
Vitor Mateus De Almeida
1b18977eac rename all NewLayout.. to Layout.. 2021-08-05 08:03:24 -03:00
Vitor Mateus De Almeida
09082734c9 remove old media, webcam draggable and panel components 2021-08-05 04:26:03 -03:00
Vitor Mateus De Almeida
abf089ae73 remove layout manager legacy 2021-08-05 01:22:07 -03:00
Max Franke
eac5bbd851 fix(screenshare): broken maximized ui before fully loaded
Fixes a small bug which allows the user to use the
shrink/expand button before the display it is
fully loaded
2021-08-02 13:32:44 -03:00
Ramon Souza
d3ed4d6ea6 rtl smart layout 2021-07-26 17:45:03 -03:00
Ramon Souza
116da0c6a8 move screenshare notifications to screenshare component 2021-07-21 10:38:48 -03:00
Ramon Souza
43eda61beb set presentation isOpen on toggleSwapLayout 2021-07-16 15:48:48 -03:00
Vitor Mateus De Almeida
f0145e001e Add resizable and draggable in cameras dock
Remove settings and change resizable context data

Add resizable draggable drop areas in cameras dock
2021-07-13 04:25:03 -03:00
Anton Georgiev
36595c7375
Merge pull request #12729 from ramonlsouza/fullscreen-camera
feat: fullscreen cameras and screenshare in new Layout Manager
2021-07-12 14:33:35 -04:00
Pedro Beschorner Marin
e6c43f282a fix(screenshare): fullscreen status from state
isFullscreen is a state property and is being fetched from the component
props. I think this is something I messed up while resolving a cherry-pick
conflict.
2021-07-12 11:01:23 -03:00
Max Franke
5d0ae8ff04 feat(screenshare): change loading icon
Change the previous loading spinner to the new loading dots, ensuring
a bit more UI consistency.
Add the "unhealthy stream" filter to make the dots a little more visible and
remove the loading spinner.
2021-07-09 14:51:38 -03:00
Ramon Souza
07ab688a4a fullscreen screenshare 2021-07-06 16:27:28 -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
e1f1b2e49f screenshare layout values 2021-06-15 10:47:37 -03:00
Ramon Souza
d2e2a34dfe screenshare size 2021-06-15 08:51:44 -03:00
Arthur B. Grossi
cdd688000c style(layout): buttons outline
Adds margin to presentation and screenshare buttons
in order to prevent outline cut.
2021-06-14 14:53:21 -03:00
Max Franke
f2c95c61e3 feat(screenshare): reduce mirror effect
Add the shrink/expand button in the screenshare layout to reduce the mirror/tunnel
effect, when the presenter is sharing the same screen as the application is.
2021-06-07 09:11:32 -03:00
Ramon Souza
75b9261f6f remove unused imports/variables 2021-04-22 13:17:20 -03:00
prlanzarin
1e199097b4 screenshare: check if the user is still presenter after gDM resolves
If the presenter gets changed while the user kept the getDisplayMedia browser picker open, accepting the getDisplayMedia prompt might get the previous presenter´s client-side state inconsistent as if they were sharing. The screen sharing is a no-op though

This adds a check after gDM resolves to see whether the user is still the presenter; if they aren`t, just clean up the gDM stream and make it a full no op
2021-03-24 18:41:14 +00:00
Anton Georgiev
e673fb2cf4
Merge pull request #11630 from prlanzarin/u23-sculptor
listenonly,video-provider,screenshare: remove ICE gathering pre-flight check
2021-03-12 12:58:43 -05:00
prlanzarin
ab17b10c38 listenonly,video-provider,screenshare: remove ICE gathering pre-flight check 2021-03-12 02:51:45 +00:00
prlanzarin
ef4ad8820d screenshare: adapt shutdown on breakout room joins, only stop sharers
Adapted the breakout room screen sharing shutdown to use the new refactor calls

Also changed the behaviour a bit to only trigger the stop code for presenters/sharers, mimicking the camera behaviour and not leaving viewer with stuck screens
2021-03-12 01:31:46 +00:00
prlanzarin
775cbf4124 screenshare: move end alert sound to a reliable place 2021-03-12 00:44:38 +00:00
prlanzarin
7eb91f9273 Merge branch 'u22-screenshare18102020' of https://github.com/prlanzarin/bigbluebutton-1 into u23-ilgiardino 2021-03-11 18:49:14 +00:00
Ramon Souza
08067e905f polling component also checks if screenshare is fullscreen 2021-02-23 14:04:00 -03:00
hiroshisuga
91f6bc752a
show polling button in fullscreen mode 2021-02-15 17:54:02 +09:00
prlanzarin
03cd3af26c screenshare: change the reconnection UI style trigger to avoid false positives
Mainly: track unhealthy fatal states instead of supposedly healthy states

Avoids unwarranted UI reconnecting states or flickering on low end devices or struggling networks

Also added a version of isVideoBroadcasting for presenters which only accounts for the server state, so that we can deal with the presnter`s sharing state with more fidelity in the UI
2021-02-05 19:54:12 -03:00
prlanzarin
1383ab4def screenshare/html5: rewrite most of the client side code
Added new SFU broker for screen sharing

Removed kurento-extension entirely

Added inbound and outbound reconnection procedures

Improve UI responsiveness when sharing

Add reconnection UI states

Redo error handling

Refactor actions-bar screen share components. Make it smarter with less prop drilling and less re-rendering. Also more readable. Still work to do in that I think

Add a connection retry procedure for screen presenters when they are sharing; try a configurable amount of times when failure is triggered, with configurable min and max reconn timeouts and timeout increase factor

Make local preview attachment smarter

ADD PARTIAL SUPPORT FOR AUDIO SHARING VIA SCREEN SHARING WITH GET DISPLAY MEDIA, RECORDING STILL NOT SUPPORTED!!!
2020-12-09 22:00:54 +00:00
prlanzarin
69e5891624 [screenshare]: improve screenshare service findOne calls 2020-12-08 20:30:40 +00:00
prlanzarin
f24460192c screeshare+audio: reorganize some audio checks, pass the flag to SFU 2020-12-08 20:30:30 +00:00
germanocaumo
83fe68db08 Play screenshare audio when present 2020-12-08 20:30:22 +00:00
Anton Georgiev
f34826718d include instanceId in resources url 2020-11-30 16:09:35 +00:00
Mohamed Amine Ben Salah
bf45dbc7f9 adds visual regressions test with snapshots ready to use 2020-10-27 12:54:55 -03:00
Anton Georgiev
0c7ead1916 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into oct16-merge 2020-10-21 14:48:02 +00:00
Mario Jr
e9e436378a Correctly set audio input/output devices
When refusing ("thumbs down" button) echo test, user is able to select a different input device. This should work fine for chrome, firefox and safari (once user grants permission when asked by html5client).
For output devices, we depend on setSinkId function, which is enabled by default on current chrome release (2020) but not in Firefox (user needs to enable "setSinkId in about:config page). This implementation is listed as (?) in MDN.
In other words, output device selection should work out of the box for chrome, only.
When selecting an outputDevice, all alert sounds (hangup, screenshare , polling, etc) also goes to the same output device.
This solves #10592
2020-10-06 20:37:55 -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
33a71e5f67
Merge pull request #10218 from Tainan404/unsafe-media-and-presentation-components
Remove unsafe lifecycle from all media and presentation components
2020-09-10 15:23:48 -04:00
prlanzarin
aae7a19d50 screenshare: Remove unused amIPresenter from kurentoViewScreen call 2020-09-10 14:12:44 +00:00
prlanzarin
18c2d33ff1 video-provider/screenshare: streamline isUserPresenter usage 2020-09-10 14:11:18 +00:00
prlanzarin
7b7c10db64 screenshare: make presenter preview local
Also some much needed code movearound in Kurento`s bridge
2020-09-10 13:48:05 +00:00
Anton Georgiev
d8b185f2b3 Merge branch 'issue-9219' of github.com:Tainan404/bigbluebutton into locales-total 2020-09-09 19:29:18 +00:00
KDSBrowne
77b71a4d1f fix duplicate css variables being loaded (improve imports) 2020-09-01 18:46:13 +00:00