Commit Graph

191 Commits

Author SHA1 Message Date
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
Vitor Mateus De Almeida
3a281adab5 Remove background and commented code
Revert linting
2021-06-22 14:04:56 -03:00
Vitor Mateus De Almeida
6469b68d45 Add webcams component on new Layout Manager 2021-06-21 17:16:59 -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
prlanzarin
d707048c56 fix(video): remove unused floorStream variable 2021-05-12 19:26:26 +00: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
prlanzarin
ab17b10c38 listenonly,video-provider,screenshare: remove ICE gathering pre-flight check 2021-03-12 02:51:45 +00:00
prlanzarin
db15d1b280 video-provider: fix setReconnectionTimeout race condition that caused webcams to drop
Problem: setReconnectionTimeout was being called in the first candidate generation to set the negotiation/reconnection timeout up. That caused some browsers or specific scenarios (mainly envs without STUN) to establish the negotiation (playStart) before generating any useful out-of-band candidates (relay). That would cause the timeout to be set AFTER it is supposed to be cleared due to success (playStart), making the webcam drop after a while

So I moved the setReconnectionTimeout call to a safer spot: right after the first negotiation requisition goes out to bbb-webrtc-sfu
2021-03-10 20:09:55 +00:00
prlanzarin
6418d0f556 video-provider: more logging improvements, clean up playStart restart timers reset 2021-03-10 20:09:00 +00:00
prlanzarin
f85b5dfa5b video-provider: quick logging cleanup
Reduce logging volume and payload size, perf
2021-03-10 20:08:40 +00:00
prlanzarin
ee142501ab video-provider: fix inbound/recvonly video reconnection 2021-03-10 20:08:29 +00:00
Pedro Beschorner Marin
c120dc2859 Avoid dispatching fallback error toast message
There's some scenarios that video errors triggers multiple toast notifications
that don't have any mapped defined message feedback so they all drop to the default
permission error. This leaves the impression that something is broken at the toast
container.

Since those messages don't bring up much information about the problem we can avoid sending
them until we don't have a more informative one to notify the user.
2021-03-10 19:47:25 +00: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
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
3003897bfe
Merge pull request #10336 from prlanzarin/upstream-2.2-vpeg-pagination
video-provider: add missing PropType, remove render socketOpen check
2020-08-27 09:17:04 -04:00
prlanzarin
395de41f60 video-provider: add missing proptype
Also trim down prop assignment in render
2020-08-27 02:20:09 +00:00
prlanzarin
191654814a video-provider: remove socket open state condition for rendering video-list
That check doesnt make sense anymore. Removing it makes the video list load faster and webcam sharing seem more responsive
2020-08-27 02:19:55 +00: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
e7323ee6a5 video-provider: fix dynamic profile accounting when using pagination 2020-08-24 18:30:24 +00: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
prlanzarin
a98c476239 video-provider: remove page change lock in favor of a debounced approach 2020-08-20 15:43:02 +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
642de5076a video-provider: first, simplified version of dynamic camera profile control 2020-08-05 16:55:41 +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
Vitor Mateus
e2db60e662 WIP Resizable works fine 2020-07-20 16:11:09 -03:00
Anton Georgiev
7535e6fa59
Revert "Create layout context and add a layout manager" 2020-07-15 12:44:59 -04:00
prlanzarin
0f8b27d2d8 video-provider: make camera timeouts configurable
Also add missing settings.yml val for wsConnectionTimeout
2020-07-09 17:53:24 +00:00
prlanzarin
72a67bdd63 video-provider: make reconn websocket connectionTimeout configurable
Keep the default value (current) in settings.yml
2020-07-09 17:50:04 +00:00
Vitor Mateus De Almeida
880963e0e7 Merge remote-tracking branch 'upstream/develop' into layout 2020-07-06 13:36:38 -03:00
Anton Georgiev
c9e996de21 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2.2-into-develop 2020-05-25 17:32:24 +00:00
prlanzarin
2cba85e866 html5: refactor STUN/TURN fetch, add fallback STUN, fix deadlock in audio join
Refactored STUN/TURN fetch to be done only once, when successful, per session and cache it in mem to avoid too many reqs. Current way is a bit dumb, this should increase reliability a bit more. The caching is configurable so folks who want to use very short lived TURN credentials can disable it

Add a fallback STUN config option to be used when the default STUN/TURN fetch fails

Clean the safari/no candidate generation pre flight check from 3rd party STUNs

Fix deadlock in audio join when STUN/TURN fetch failed
2020-05-21 04:35:17 +00:00
Vitor Mateus
00259ab371 WIP Resizable works fine 2020-04-23 11:07:44 -03:00
prlanzarin
bf69926576 Fix race condition in video-provider that may cause peers to fail
The peer object was being fetched only once in the ICE candidate callback, and it would fetch a placeholder empty object (sometimes) which would be kept in the callback closure till the end of the peer lifecycle. With that, the didSDPAnswered state variable which released the outbound ICE queue wouldnt be correctly read and the queue would never be flushed
2020-01-31 19:49:12 +00:00
prlanzarin
10b4a60a57 Fix race condition in video-provider that may cause peers to fail
The peer object was being fetched only once in the ICE candidate callback, and it would fetch a placeholder empty object (sometimes) which would be kept in the callback closure till the end of the peer lifecycle. With that, the didSDPAnswered state variable which released the outbound ICE queue wouldnt be correctly read and the queue would never be flushed
2020-01-31 19:32:57 +00:00
Pedro Beschorner Marin
801ed30a8e Missing after rebase 2019-12-10 13:02:18 +00: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
315fa755f0 Removed unused video visibility monitor 2019-12-10 09:02:17 -03:00
Pedro Beschorner Marin
3b591a086b Unified video providers 2019-12-10 09:02:16 -03:00
Pedro Beschorner Marin
debd8f714a Removed unused session vars logic 2019-12-10 08:21:21 -03:00
prlanzarin
19bf430760 Add userId and userName to the SFU start calls where they were missing 2019-11-28 18:46:23 +00:00
prlanzarin
52d69156ca Fix viewer camera reconnection timers
Also try to reconnect when ICE fails, a server-side error comes through or the WebRTC stack throws a tantrum, not only when the first connection fails.
2019-11-28 18:03:14 +00:00
prlanzarin
d3fa2f6508 Add an outbound ice queue to video-provider peers
Only send candidates after the SDP exchange was locked due stop-start glare
2019-11-28 18:01:32 +00:00
prlanzarin
b52214f0b5 Make some imports use absolute paths
Some more linting as well
2019-11-14 19:07:35 +00:00
prlanzarin
215f79f383 Account for mDNS candidates on gUM fallback for recvonly peers
Also added some client logging for those cases

Moved video-provider gUM fallback detection to be used only on recvonly streams
2019-11-14 16:35:56 +00:00
Chad Pilkey
3dd4761889
Merge pull request #8157 from capilkey/viewer-webcam-lock-unshare
Viewer webcam lock unshare
2019-09-27 18:20:26 -04:00
Tainan Felipe
b0f2e16f86 Add propTypes and redo variable types 2019-09-27 15:01:11 -03:00
Chad Pilkey
6c0358ae90 bitrate only webcam profiles and error handling 2019-09-26 18:28:37 +00:00