Commit Graph

775 Commits

Author SHA1 Message Date
Gustavo Trott
09697948e1
Merge pull request #15708 from danielpetri1/breakout-upload-ui 2022-10-31 08:29:56 -03:00
Ramón Souza
8d0316ed31
Merge pull request #15747 from JoVictorNunes/issue-15713
improvement: add internationalization singleton
2022-10-28 13:24:03 -03:00
prlanzarin
401ddc4014 fix: guarantee cleanup of stale data on re-subscriptions
Currently, collection cleanup code is only run when an added event
is received from the server. Where that fails is in scenarios where
a server-side collection turns empty while an affected users is
disconnected - and then reconnects. There's no removed (or updated)
event so no cleanup code is run and you have stale data.

This commit guarantees a stale data check is run whenever a subscription
is established again. The `added` check was also maintained, although
I'm not too sure anymore it's is still needed. That may need to be
revisited.
2022-10-28 13:37:41 +00:00
Daniel Petri Rocha
0a2b4186a2 Merge branch 'v2.6.x-release' into breakout-upload-ui 2022-10-19 19:51:05 +02:00
Joao Victor
d628131e64 improvement: error screen messages and logs 2022-10-14 14:47:27 -03:00
Daniel Molkentin
25b81b6de1 fix: spelling errors in session keys 2022-10-10 14:09:18 +02:00
Daniel Petri Rocha
184b1c2169 Merge branch 'v2.6.x-release' into capture-shared-notes 2022-10-08 11:24:22 +02:00
Joao Victor
7e8cee7340 improvement: error screen messages 2022-10-05 11:30:12 -03:00
Daniel Petri Rocha
26a93f6853
Merge branch 'v2.6.x-release' into capture-shared-notes 2022-10-03 11:03:24 +02:00
Joao Victor
50d92925f7 fix: add empty string fallback config 2022-09-28 14:24:27 -03:00
Joao Victor
f8279ab5b4 improvement: add internationalization singleton 2022-09-28 13:48:27 -03:00
Ramón Souza
2b0971e2c8 Merge tag 'v2.5.6' into merge-256-26 2022-09-26 09:17:59 -03:00
Ramón Souza
6d1463e03b add disableWebsocketFallback settings 2022-09-21 11:03:21 -03:00
Daniel Petri Rocha
e23d00004f 'Capture Shared Notes' button in front-end 2022-09-20 17:43:13 +02:00
prlanzarin
0f24e5634d fix(audio): bypass overconstrained errors in SFU-based audio 2022-09-15 20:42:43 +00:00
prlanzarin
b3eebbb926 fix(audio): retry gUM without pre-set deviceIds on OverconstrainedError(s)
There are some situations where previously set deviceIds (
local/session storage) may become stale. This causes an unexpected
behavior where audio is temporarily borked until the user clears their
local storage.
This issue has been seen more recently on Safari endpoints when switching
back-and-forth breakout rooms in environments running under iframes.
Also seen randomly on endpoints with virtual input devices.

This centralizes audio gUM calling into a single method that retries the
gUM procedure without pre-set deviceIds only if the initial call fails
due with an OverconstrainedError - hopefully circumventing the issue.
2022-09-15 19:25:30 +00:00
Paulo Lanzarin
9c4707b56d
Merge pull request #15582 from prlanzarin/u26/refactor/mic-inout-logs-26
fix(audio): review in/out device management and switching
2022-09-09 09:22:40 -03:00
prlanzarin
646db91367 fix(webcam): add MediaStream id to 'inactive' event handlers
BBBVideoStream 'inactive' event currently does not send the
MediaStream id as the payload for handlers. This can cause theoretical
race conditions due to media stream mismatches in places where
'inactive' handling is done globally (eg video-preview).

This adds the MediaStream id to BBBVideoStream's 'inactive' event
and uses it in video-preview to avoid such race conditions.
2022-09-06 12:31:26 +00:00
Ramón Souza
4e46284a3b
Merge pull request #15603 from JoVictorNunes/camera-brightness
feat(camera): set camera brightness
2022-08-31 17:00:34 -03:00
Ramón Souza
62f8ab3cb2 Merge remote-tracking branch 'upstream/v2.6.x-release' into pr-15460-aug26 2022-08-26 14:05:45 -03:00
Joao Victor
396f5320a4 feat(camera): set camera brightness 2022-08-26 11:50:46 -03:00
prlanzarin
ec1879f96b fix(audio): add inputDeviceId enforcement for post-join/gUM
Extract the deviceId again from the stream to guarantee consistency
between stream DID vs chosen DID. That's necessary in scenarios where,
eg, there's no default/pre-set deviceId ('') and the browser's
default device has been altered by the user (browser default != system's
default).
2022-08-24 14:39:09 +00:00
prlanzarin
89e814d570 fix(audio): centralize device change code, add rollbacks, surface errors
There's no rollback procedure in case a device switch fails right now,
nor does the code entrypoints that call the switching procedures wait
for resolution or failure before marking the new device as chosen. That
may cause inconsistent states in a couple of ways:
  - No rollback: switch fails, audio is still on but no actual
    microphone input is being transmitted
  - Not waiting for resolutions: inconsistent chosen devices on failures
Device switching errors are also not surfaced to the end user

This commit:
  - Adds device rollback and proper resolution/failure response
    awaits to try and make the state a bit more consistent.
  - Centralizes the input device switching code to be reused between
    different bridges
  - Centralizes device ID state management in audio-manager to try and
    mantain them a bit more consistent across the board
  - Surface device switching failures to the end user
  - Guarantee device IDs are set to the session storage on all
    appropriate scenarios
2022-08-24 13:28:27 +00:00
prlanzarin
ac71167ba5 refactor(audio): add debug logs for microphone device changes
In/out device changes are mostly silent which makes it hard to track
them to look for problems.
2022-08-23 14:50:50 +00:00
Joao Victor
66403fe5fe fix: check virtual background type on change 2022-08-17 15:14:14 -03:00
prlanzarin
0e162f1cda feat: configurable DSCP marking for WebRTC media
RTCRTPSender exposes DSCP marking via `networkPriority` in the encodings
configuration dictionaries. That should allow us to control
QoS priorities for different media streams, eg audio with higher network
priority than video. The only browser that implements that right
now is Chromium.

To use this, the public.app.media.networkPriorities configuration in
settings.yml. Audio, camera and screenshare priorities can be controlled
separately. For further info on the possible values, see:
  - https://www.w3.org/TR/webrtc-priority/
  - https://datatracker.ietf.org/doc/html/rfc8837#section-5
2022-08-15 21:24:05 +00:00
Daniel Petri Rocha
3529fe9f28 Rename parameters; hide download button and label when disabled 2022-08-02 15:53:40 +02:00
Daniel Petri Rocha
5dfc9293fb Merge branch 'v2.6.x-release' into pdf-disabledFeatures-tldraw 2022-08-02 12:29:38 +02:00
Gabriel Porfirio
8198953f30 removing unused imports 2022-07-28 16:50:31 -03:00
Joao Victor
34aaf07fed Merge branch v2.6.x-release into virtual-backgrounds-skeleton-preview 2022-07-15 17:14:16 -03:00
Paulo Lanzarin
383fe89653
Merge pull request #15364 from prlanzarin/u26/refactor/kutils-kboom
refactor: remove kurento-utils-js
2022-07-15 14:53:10 -03:00
prlanzarin
d06ae5ce40 fix: add default gUM factory to new peer wrapper
For scenarios such as preview-less camera sharing, old echo test
2022-07-15 17:07:15 +00:00
prlanzarin
cd9b8ccef4 fix: handle Firefox stream cleanup edge case (peer.js)
Firefox doesn't fire the ended evt/onended callback for live
 MediaStreamTrack(s). We rely on that event.

 Manually emit the ended event which works with the onended callback
 when a track is stopped
2022-07-15 14:25:37 +00:00
Ramon Souza
db5ac1428a Merge tag 'v2.5.3' into merge25-26-jul14 2022-07-15 11:08:02 -03:00
prlanzarin
45049cbd65 refactor: swap kurento-utils for new peer wrapper in screen sharing and audio 2022-07-15 14:00:12 +00:00
prlanzarin
7281475271 feat: add new peer wrapper to phase out kurento-utils
kurento-utils is unmaintained. It's served us well, but its age
shows.  We need to transition to something else if we want to
have better  maintainability and include simulcast, multistream, ...

This introduces a simplified/leaner wrapper kit that's almost
API-compatible with what we use right now - so widespread changes
are minimal). It's easier to maintain/read/transition from. This
can be read as an intermediate step to transitioning to
something definitive (ie mediasoup-client).
2022-07-15 13:51:03 +00:00
prlanzarin
e93440e15a refactor(webcam): fix linter errors in BBBVideoStream 2022-07-12 17:50:16 +00:00
Daniel Petri Rocha
5f98290413 Add presentationWithAnnotationDownload, exportPresentationWithAnnotation to disabledFeatures 2022-07-12 18:58:56 +02:00
Joao Victor
2f78edddf3 fix: add suport for disabling upload of custom backgrounds through custom parameter 2022-07-08 17:01:57 -03:00
prlanzarin
a6861a16d5 fix: don`t ignore settings.yml virtualBackgrounds.enabled config 2022-07-07 12:37:32 +00:00
Mario Junior
72854de683
Merge pull request #15295 from iMDT/v2.6.x-mobile
feat (mobile screenshare): Add replacement webRTC methods for screenshare and full audio in mobile (when running in BigBlueButtonMobile app)
2022-07-06 15:46:25 -03:00
Tiago Jacobs
9ea4171af6 Add support to 2.6 by initializing stream active flag 2022-07-04 16:19:38 -03:00
prlanzarin
0c7c628f7a fix(webcam): prevent camera freeze due to _renderMask exceptions
Under some scenarios, cameras are freezing when the virtual background
code is running due to runPostProcessing(_renderMask) throwing
NS_ERROR_FAILURE - mainly on Firefox - consequently preventing
subsequent TimerWorker ticks from being scheduled.
Cases where I've seen that happen are:
  - conferences running under an iframe where the iframe is briefly
    stalled for some reason

Address the issue with a try-catch and a log for debugability (it's high
frequency, hence why not error level). We should probably remove the log
entirely once we figure out why the post-processing method is failing.
2022-06-30 13:50:53 +00:00
Gustavo Emanuel Farias Rosa
b13039c31f Detect screen share stop and propagate it to the application 2022-06-29 17:38:40 -03:00
Tiago Jacobs
2b953a47bb Add structure to detect and forward full audio calls to mobile application 2022-06-29 17:38:38 -03:00
Tiago Jacobs
092f5bcafd Add logic to skip webRTC replacement methods when it's not a screenshare 2022-06-29 17:38:34 -03:00
Tiago Jacobs
f459aec949 Fixes variable name to avoid colision with reserved arguments variable 2022-06-29 17:38:29 -03:00
Tiago Jacobs
75c8dcd491 Merge 2.6 2022-06-29 17:38:21 -03:00
prlanzarin
602238b84e refactor(audio): remove caller ID from fullaudio bridge start request
The callerId is assembled server-side as of bbb-webrtc-sfu
v2.9.0-alpha.3 based on the work done in commit
d940bff541b6fe3c4976428ca471457bc67ac97e.
2022-06-28 20:33:36 +00:00
Ramon Souza
edeb70de0d Merge tag 'v2.5.1' into merge25-26-jun16 2022-06-16 13:58:54 -03:00
Joao Victor
2a1401f2ae Merge remote-tracking branch v2.6.x-release into virtual-background-upload 2022-06-01 16:50:29 -03:00
prlanzarin
1d860d64d0 fix(audio): remove deprecated getLocalStreams usage
Use the built-in getLocalStream from the peer wrapper instead (which
relies on getSenders - the proper, spec-compliant way).

Two different issues are addressed:
  - RTCPeerConnection.getLocalStreams is a pre-1.0 WebRTC spec which is
    deprecated and not recommended.
  - Fixed an issue where a switch from full audio to listen only could
  cause the latter to be rejected with an error 1004 in rare scenarios.
2022-05-27 14:02:10 +00:00
Ramon Souza
8986fe2853 prevent disconnect in same tab 2022-05-17 13:09:41 -03:00
Joao Victor
a7e5869c91 feat(video): upload of own webcam virtual background 2022-05-10 14:17:16 -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
6a0e0a87c2 fix(audio): abide to signalCandidates configuration flag 2022-05-02 13:49:47 +00:00
prlanzarin
ccc95583ee refactor(audio): restore trickle candidate filtering in new audio bridge
+ better error handling, log messages for that code
2022-04-25 16:45:18 +00:00
prlanzarin
459e1a9514 refactor(audio): remove old listen only bridge (kurento.js)
- Remove the old listen only bridge (kurento.js), superseded by the equivalent
  and equally stable (AS FAR AS LISTEN ONLY IS CONCERNED) sfu-audio-bridge
  - Rename FullAudioBridge.js -> sfu-audio-bridge.js
    * A more generic name that better represents the capabilities and
      the nature of the bridge
    * The bridge name identifier in configuration is still the same
      ('fullaudio')
  - Remove the FreeSWITCH listen only fallback
  - Temporarily disable the "trickle ICE" pair gathering feature used
    in SIP.js (which was always experimental, nonstandard and disabled
    by default)
  - Updates to settings.yml keys in places where relevant
2022-04-20 20:46:32 +00:00
prlanzarin
6fd6a52d47 fix(audio): prevent uncaught rejections in the experimental audio bridge startup 2022-04-20 17:40:06 +00:00
prlanzarin
1e80d050b7 refactor(audio): generic use of sfu audio broker to cover mic and listen only 2022-04-20 17:26:52 +00:00
prlanzarin
2eaf96ae95 refactor(audio): address linter warnings in fullaudio-broker.js 2022-04-20 13:52:16 +00:00
prlanzarin
bae731e59e fix(audio): PC loopback workaround for local echo in Chrome
Works around the fact that Chrome doesnt have AEC on streams that dont go through PCs
2022-04-13 14:37:39 +00:00
prlanzarin
f4ba6dd9a2 refactor(audio): use preloaded audio stream if provided
Avoids a surplus gUM with local echo test et al
2022-04-11 22:29:20 +00:00
prlanzarin
0d85905c83 fix(audio): centralize default in/out device id definitions, make them an empty string
"default" is not an universally valid default value for deviceIds which was causing issues with Firefox and Safari in some specific scenarios where exact deviceId constraints were being used
2022-04-11 19:23:32 +00:00
Anton Georgiev
33575e60e6 Merge branch 'develop' of github.com:bigbluebutton/bigbluebutton into v2.5.x-release 2022-04-09 00:48:14 +00:00
Anton Georgiev
3cee20c489 fix: Drop old postMessage leftover 2022-04-07 15:27:41 +00:00
Ramon Souza
4da4b8d7a9 Merge remote-tracking branch 'upstream/develop' into pr-issue-14493 2022-03-29 17:27:20 -03:00
Gustavo Trott
a6c3af7b0f Add disabledFeatures=virtualBackgrounds 2022-03-22 16:01:27 -03:00
Gustavo Trott
fb587f8c84
Merge branch 'v2.5.x-release' into disabledFeatures-layouts 2022-03-18 15:46:45 -03:00
Anton Georgiev
adfbaa4409
Merge pull request #14599 from gustavotrott/disabledFeatures-breakoutRooms
feat: Support to disable breakout rooms via disabledFeatures
2022-03-18 14:41:02 -04:00
Paulo Lanzarin
5fa7c18b43
Merge pull request #14621 from prlanzarin/u25-victorio-fuzz
fix(audio): clean up sfu broker, guarantee peer exists in getLocalStream
2022-03-17 14:39:41 -03:00
prlanzarin
13c6b12f89 fix(audio): clean up sfu broker, guarantee peer exists in getLocalStream 2022-03-17 11:20:19 -03:00
Gustavo Trott
6562cbc6e7
Merge branch 'v2.5.x-release' into disabledFeatures-breakoutRooms 2022-03-16 14:57:46 -03:00
Anton Georgiev
0d1d45245c
Merge pull request #14570 from gustavotrott/disabledFeatures-notes
feat: Support to disable shared notes and captions via disabledFeatures
2022-03-16 11:45:52 -04:00
Paulo Lanzarin
e9c400e61b
Merge pull request #14211 from prlanzarin/u25-victorio-fuzz
feat(fullaudio): implement echo test, device change and audio filters (new bridge)
2022-03-16 12:36:50 -03:00
Gustavo Trott
c214a479f9 Implements disabledFeatures=layouts 2022-03-15 10:40:02 -03:00
Gustavo Trott
adc1c8cef8 Implements disabledFeatures=breakoutRooms 2022-03-14 15:30:41 -03:00
Tainan Felipe
fbb0f23510
Merge branch 'v2.5.x-release' into wip-notifications 2022-03-10 16:42:43 -03:00
Tainan Felipe
8858878d0d Add server side notification 2022-03-10 16:33:25 -03:00
Gustavo Trott
9f939513b0 Implements disabledFeatures=captions 2022-03-10 15:02:20 -03:00
prlanzarin
d9c329df27 refactor(fullaudio): remove server-provided RPC parameters 2022-03-10 14:59:43 -03:00
prlanzarin
b9f9043d9c feat(fullaudio): handle forceRelayOnFirefox flag 2022-03-10 14:31:42 -03:00
Gustavo Trott
537704ef0e Implements disabledFeatures=sharedNotes 2022-03-09 16:23:38 -03:00
Gustavo Trott
057b7514b1 Implements disabledFeatures-chat 2022-03-09 11:19:25 -03:00
Gustavo Trott
2719bd4f65 Implements disabledFeatures=externalVideos 2022-03-09 10:33:18 -03:00
Gustavo Trott
6f24d36ed1 Remove unecessary import 2022-03-08 15:08:35 -03:00
Gustavo Trott
3013c2792b Implements disabledFeatures/polls 2022-03-08 15:05:24 -03:00
prlanzarin
53115ccaa2 fix: missing import in load-play util script (webrtc) 2022-03-03 19:49:53 -03:00
Anton Georgiev
212578b7c8
Merge branch 'v2.5.x-release' into disabledFeatures-learningDashboard 2022-03-02 08:46:31 -05:00
Gustavo Trott
9d6eaead02 Move api param learningDashboardEnabled to disabledFeatures 2022-03-01 17:27:54 -03:00
prlanzarin
adc13add67 refactor(audio): remove duplicated loadBridges method definition
Seems to have been introduced by a partial merge commit

There were a bunch of style changes introduced by that partial commit as well; I kept those changes to avoid introducing further conflicts between v2.4-2.5...
2022-02-22 13:42:20 -03:00
Ramón Souza
7145d37066 move toast component to common folder 2022-02-15 17:57:50 +00:00
Anton Georgiev
006a9f9ffc
Merge pull request #14293 from gustavotrott/api-param-disabledFeatures
feat: new api Create param: disabledFeatures
2022-02-10 15:51:34 -05: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
f13266e3b9
Merge pull request #14295 from Tainan404/backport-validatonAuthToken
Backport the validationAuthToken refactor
2022-02-07 14:59:28 -05:00
Gustavo Trott
580ebdc066 Move disabledFeatures to meetingProp, and rename feat screensharing to screenshare 2022-02-07 15:55:45 -03:00
Gustavo Trott
de4688bcdc Implement new param disabledFeatures 2022-02-07 10:22:52 -03:00
Joao Victor
587f1762e0 Check for existing Tracker.Dependency() instance 2022-02-03 14:47:24 -03:00
prlanzarin
ed89f6e4a5 feat(fullaudio): implement input/output device change in new bridge 2022-02-01 17:19:50 -03:00
prlanzarin
cb84e34833 feat(fullaudio): implement echo test in new full audio bridge
Partially addresses https://github.com/bigbluebutton/bigbluebutton/issues/14191
2022-01-26 11:03:27 -03: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
Tainan Felipe
4946c1ff41 Backport the validationAuthToken refactor 2022-01-21 21:25:53 -03:00
Gustavo Trott
7d55cac005 Implements virtualBackgroundsDisabled param to API /create 2022-01-12 18:21:58 -03:00
Ramón Souza
f6e65f58c5 merge 2.4 into develop and resolve conflicts - partial 2022-01-12 16:40:45 +00:00
Anton Georgiev
2690327943
Merge pull request #13865 from JoVictorNunes/virtual-bg-drawing
refactor: virtual background drawing
2021-12-23 14:42:22 -05:00
Anton Georgiev
f1cdcf7854
Merge pull request #13855 from drlight17/develop
added drawImageProp function
2021-12-23 14:41:48 -05:00
Anton Georgiev
797fc49633 TEMP 2021-12-09 20:37:05 +00:00
drlight17
250eab08bb
refactored drawImageProp call 2021-12-09 15:51:20 +03:00
prlanzarin
93b5f4c93d feat(bbb-html5): add a general forceRelay flag
public.media.forceRelay forces relay usage on all browsers, environments and media modules

If true, overrides public.kurento.[4~forceRelayOnFirefox
2021-12-09 11:35:56 +00:00
Joao Victor
b25dd800b6 refactor: virtual background drawing 2021-12-08 16:24:34 -03:00
drlight17
255b8b3462
added drawImageProp function
to cover container with Virtual background instead of stretch
2021-12-08 11:45:48 +03:00
Anton Georgiev
3998b6e736
Merge pull request #13822 from JoVictorNunes/issue-13796
fix: unexpected blurred effect
2021-12-06 12:35:27 -05:00
Anton Georgiev
abb3ea618b
Merge pull request #13821 from ramonlsouza/issue-7903
fix: Cannot interrupt audio Connecting process
2021-12-03 14:20:49 -05:00
Joao Victor
380e2009d3 fix: unexpected blurred effect 2021-12-03 09:49:32 -03:00
Ramón Souza
16fd642e33 interrupt connection proccess if audio modal is closed 2021-12-03 11:45:07 +00:00
prlanzarin
da6ab02122 chore: add forceRelayOnFirefox option (false by default)
- forceRelayOnFirefox: whether TURN/relay usage should be forced to work
around Firefox's lack of support for regular nomination when dealing with
ICE-litee peers (e.g.: mediasoup).
  * See: https://bugzilla.mozilla.org/show_bug.cgi?id=1034964
- iOS endpoints are ignored from the trigger because _all_ iOS browsers
  are either native WebKit or WKWebView based (so they shouldn't be affected)
2021-11-30 20:31:12 +00:00
Maxim Khlobystov
b7cf670aec Remove the support for iframe postMessage API (recording and self-muting) 2021-11-29 22:53:12 +00:00
João Victor
0a80af51d9 fix: settings state restore 2021-11-25 10:22:53 -03:00
Anton Georgiev
5162b4c403
Merge pull request #13679 from JoVictorNunes/issue-13241
fix: virtual background not kept when switching from breakout to main room
2021-11-19 15:11:21 -05:00
João Victor
6524f70941 support for storing multiple virtual backgrounds 2021-11-19 08:10:24 -03: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
Ramón Souza
4207502db1 remove unused imports/exports 2021-11-17 12:26:26 +00:00
Mario Jr
9578efbcd3 fix(audio): prevent audio to hang when user is transferred to breakout room
When joining breakouts, we now wait for the bridge to be loaded before
automatically start user's audio.
This problems happens only on fullaudio bridge
2021-11-09 15:04:10 -03:00
Mario Jr
a719f8f5e4 fix(audio): update fullaudio bridge according to sonar's checks 2021-11-09 12:10:44 -03:00
Mario Jr
70815fad4f feat(audio): add meta param for selecting fullaudio bridge
This can be passed through API. For example, for setting fullaudio bridge, you
can pass the param "meta_fullaudio-bridge=fullaudio"
2021-11-09 12:09:36 -03:00
Mario Jr
f9dbefe764 feat(audio): basic funcionality for fullaudio bridge
This commit allows user to join/leave audio using the fullaudio bridge.
This is still under development, but to use this now we must set values of
skipCheck to false, and defaultFullAudioBridge to fullaudio. This
depends on newest version of bbb-webrtc-sfu
2021-11-09 12:09:18 -03:00
Mario Jr
42778adeaf feat(audio): add base code for fullaudio bridge
This bridge will work with bbb-webrtc-sfu to handle microphone audio.
2021-11-09 12:08:45 -03:00
Mario Jr
cf2d595f12 fix(audio): correctly retrieve Object class from bridge module 2021-11-09 12:08:31 -03:00
Mario Jr
5c85f4c5b2 fix(audio): promisify loadBridges function
New bridges were being loaded with undefined value, since we didn't
wait for this to fully load before instantiating it
2021-11-09 12:08:25 -03:00
Mario Jr
86ef834476 fix(audio): bridges can be dynamically imported
Added bridge whitelist , to allow bridge modules to be dynamically imported.
2021-11-09 12:08:18 -03:00
Mario Jr
7e218c3eca feat(audio): add bridge configurable scheme
we are now able to switch between audio bridges, by selecting it in
config files.
2021-11-09 12:08:09 -03:00
Mario Jr
b70e330109 Merge branch 'develop' into allow-chrome-in-ios 2021-11-03 14:39:44 -03:00
Tainan Felipe
f5eef03f3f Improve data structure to not break on reconnections 2021-11-03 14:37:54 -03:00
Tainan Felipe
3e7d88586e Enhances authToken validation to solely use Meteor.call 2021-10-28 15:16:16 -03:00
Mario Jr
c1c0a2341f Merge branch 'develop' into allow-chrome-in-ios 2021-10-28 13:38:18 -03:00
Mario Jr
35cac1eb8e fix(video): typo in iOS detection
No big problems caused by typo so far, once isSafari flag was being used
to validate supported devices (safari is always used in iOS)
2021-10-27 11:28:52 -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
Anton Georgiev
6e0c74e02f style: Pulled latest fonts, audio icon swap 2021-10-18 20:26:01 +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
17bf52fe5b
Merge pull request #13279 from prlanzarin/u24-trash-stratum
chore(virtual-backgrounds): cleanup and update tflite resources
2021-10-04 10:30:33 -04:00
Mario Jr
7ed1cbfc30 Merge branch 'v2.4.x-release' into fix-13242 2021-09-29 09:20:58 -03:00
prlanzarin
1cb412529d feat(webrtc): add EXPERIMENTAL option to disable ICE candidate signaling
ICE lite servers (eg mediasoup) dont need candidates signaled out-of-band; neither does KMS in certain scenarios

Disable their signaling saves us some ticks in bbb-webrtc-sfu and some bandwidth all around
2021-09-24 17:24:06 +00:00
prlanzarin
46f281ec6b chore(virtual-backgrounds): move tensorflow wrappers to compatibility 2021-09-23 17:06:42 +00:00
prlanzarin
42b53749f1 chore(virtual-backgrounds): update tflite backends wrappers and WASMs
Use the latest version in the volcomix repo

Add coments to the wrappers stating which changes we did manually in them
2021-09-23 14:46:33 +00:00
Anton Georgiev
7c11600518
Merge pull request #13266 from mariogasparoni/dynamic-bridges
feat(audio): add bridge configurable scheme
2021-09-22 16:00:46 -04:00
Tainan Felipe
543b57dff5 Improve readability 2021-09-22 11:52:01 -03:00
Tainan Felipe
6a480a4946 Implements collection hooks to chat context 2021-09-22 11:51:50 -03:00
prlanzarin
9574548e22 refactor(virtual-backgrounds): remove unused tflite resources 2021-09-22 12:27:59 +00:00
Mario Jr
1c08fc852a fix(audio): audio controls crash when ending call during brekout audio transfer
Restored the old behavior when ending breakout rooms while user is in the
breakout audio transfer, which is to the trigger the reconnection to the audio
in the main room.
This behavior could be improved by (instead of reconnecting) transfering user
back to the main room, but this requires some changes in akka-apps/fsesl
which can be treated in a different issue.

Closes #13242
2021-09-21 11:22:05 -03:00
Mario Jr
7d3a03854e fix(audio): correctly retrieve Object class from bridge module 2021-09-09 10:15:06 -03:00
Mario Jr
da92122a90 fix(audio): promisify loadBridges function
New bridges were being loaded with undefined value, since we didn't
wait for this to fully load before instantiating it
2021-09-08 16:24:15 -03:00
Mario Jr
b74e4c6ca5 fix(audio): bridges can be dynamically imported
Added bridge whitelist , to allow bridge modules to be dynamically imported.
2021-09-01 13:22:43 -03:00
Mario Jr
4fcd051223 feat(audio): add bridge configurable scheme
we are now able to switch between audio bridges, by selecting it in
config files.
2021-08-31 15:50:53 -03:00
prlanzarin
fe5e86052a refactor(html5): media server adapter config is undefined by default
Undefined by default means that the governing configuration is in bbb-webrtc-sfu

Also add some inline docs in settings.yml about the media server adapter configs
2021-08-31 01:58:51 +00:00
prlanzarin
58a8e99195 feat: add media server configuration via metadata
Applies to video, listen only and screen sharing

New metadata values: media-server-video, media-server-listenonly, media-server-screenshare; parameter is a String
2021-08-31 00:39:45 +00:00
prlanzarin
c57fb0b388 feat(audio): add media server adapter config for listen only in bbb-html5
Allows configuring, via bbb-html5, which media server adapter will be used by listen only; server wide
2021-08-31 00:24:41 +00:00
prlanzarin
86a715dc15 feat(screenshare): add media server adapter config in bbb-html5
Allows configuring, via bbb-html5, which media server adapter will be used by screen sharing; server wide
2021-08-31 00:19:51 +00:00
Anton Georgiev
bc8b3ff691
Merge pull request #13104 from antobinary/merge-aug30
chore: Merge 2.3.13 into develop
2021-08-30 14:14:29 -04: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
KDSBrowne
3844890ad7 fix screen reader announcement of toasts in firefox 2021-08-29 23:43:20 +00:00
Mario Jr
8997b68a3c Support firefox and other browser in network stats monitor
For browsers that don't support headerBytesSent in RTCOutboundRtpStreamStats
neither headerBytesReceived in RTCInboundRtpStreamStats, we are now able
to calculate upload and download rates.
We are also able to get transportStats information for browsers that
don't support iceTransport attribute of RTCDtlsTransport.
2021-08-25 16:27:46 -03: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
Mario Jr
148704cdec fix docs for getStats in audio and video services 2021-08-23 11:07:12 -03:00
Mario Jr
a4f7447b65 Add information about using turn in audio stats
This information is also retrieved when copying data to clipboard
2021-08-17 16:54:49 -03:00
Mario Jr
65e6e70d24 update audio-manager docs for getStats and related functions 2021-08-13 09:46:19 -03:00
Mario Jr
cf366e5090 Get user and audio data, shows it and allows it to be copied to clipboard
Using getStats api and peer information to retrieve upload/download rates
and transport information
2021-08-12 16:39:04 -03:00
prlanzarin
54d04fdb77 refactor(listen-only): let the server generate subscriber offers 2021-08-12 13:45:18 +00:00
prlanzarin
387c453076 refactor(screnshare): let the server generate subscriber offers 2021-08-12 13:45:04 +00:00
prlanzarin
455fb8426f feat(sfu): add both ways negotiation to SFU broker 2021-08-11 19:35:16 +00:00
Max Franke
21ff6c545a style(virtual-backgrounds): disabled when env. is not supported
Disabled virtual backgrounds for not supported
devices, changing the label text.
2021-08-06 13:14:04 +00:00
prlanzarin
e15aa2054f fix(virtual-backgrounds): disable on Safari
Safari is not properly supported with this feature (yet)
2021-07-27 17:14:15 +00:00
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
Joao Siebel
6906b927af Fix race condition that caused the client to get stuck with the three dots on join 2021-07-15 14:01:21 -03:00
Mario Jr
9dbfc41dac Merge branch 'v2.3.x-release' into develop 2021-07-14 09:29:38 -03:00
Mario Jr
4e1eb7318d chore(audio): add audio join time in extraInfo of server log 2021-07-09 13:43:43 -03:00
Anton Georgiev
b9cc633286 Merge branch 'v2.3.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2.3.5-into-develop 2021-07-06 19:36:19 +00:00
Anton Georgiev
0150862eb1
Merge pull request #12705 from mariogasparoni/feat-trickle-ice-mic
feat(audio): use kurento's trickle-ice to improve mic negotiation
2021-07-02 17:44:05 -04:00
Mario Jr
c4abd274e8 feat(audio): add option for enabling/disabling kms's trickle for mic 2021-07-02 12:51:00 -03:00
Ramon Souza
36c9176b3d always get token info from current connectionId 2021-07-02 10:33:17 -03:00
Mario Jr
287c4eb682 feat(audio): use kurento's trickle-ice to improve mic negotiation
Here's what we do when user activates mic:
1 - When we do something similar to listenonly's joining process
until we find a valid candidate-pair. The information about this
local candidate is store.
2 - We then start a new userAgent, and as soon as browser finds
a candidate with the same local ip address, we leave only this
candidate in the SDP and send this to FreeSWITCH. SDP should
contain only a single candidate.
3 - The rest of signaling process is basically the same.
2021-07-01 16:26:44 -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
Ramon Souza
3c41c6fd83 lint + cleanup 2021-05-27 15:12:49 -03:00
Ramon Souza
94436d2630 chat alerts refactor 2021-05-27 14:46:27 -03:00
prlanzarin
84cbda75a3 feat(screenshare): add screen bitrate config in bbb-html5 2021-04-24 19:12:59 +00:00
Anton Georgiev
36b67971ee
Merge pull request #12054 from mariogasparoni/fix-12023-and-other-two-fixes
fix: mic selection (firefox/all browsers) and muted alert when mic is changed
2021-04-20 13:40:54 -04:00
Anton Georgiev
5566941ad1
Merge pull request #12003 from ramonlsouza/issue-11985
Fix join webcam breakout room
2021-04-16 10:46:04 -04:00
Mario Jr
e8d59ed14a fix: mic selection (firefox/all browsers) and muted alert when mic is changed
This commit contains three fixes: one already reported and two detected
during the investigation of the solution.
This started as a fix for firefox (#12023), but i also fixed the muted
alert/banner when device changes: the banner wasn't detecting device changes,
unless audio was deactived/actived.

There's another fix for the microphone stream: we now keep sender's track
disabled if it was already disabled for the sender's track of the previous
selected device.

Also did small refactor for eslint checking.

Some technical information: in sip bridge (bridge/sip.js), setInputStream and
liveChangeInputDevice function were both fully turned into promises, which
guarantees we have everything ready when it resolves to the respective values.
This helps AudioManager (audio-manager/index.js) to sequentially sets and
tracks the state of the current microphone stream (inputStream), when calling
liveChangeInputDevice function: we first set the current stream to null,
creats a new one and then set it to the newly created value - this is needed
because MutedAlert (muted-alert/component.jsx) can then gracefully
allocate/deallocate the cloned stream when it is set to a non-null/null value
(the cloned stream is used for speech detection with hark).
In MutedAlert we also make sure to enable the cloned stream's audio
tracks, just in case the user change the device when muted (audio track is
disabled in this case), which also leaves the cloned stream muted (we then
enable the track to allow speech detection).

Closes #12023
2021-04-16 10:45:40 -03:00
Anton Georgiev
f51c1a23bb
Merge pull request #11992 from ramonlsouza/fix-chat-alerts
Fix chat alerts
2021-04-13 08:48:39 -04:00
Ramon Souza
e7366485aa removing unused imports 2021-04-13 08:43:08 -03:00
Ramon Souza
32dec42264 fix join webcam breakout room 2021-04-12 15:59:43 -03:00
Ramon Souza
d90e889394 fix active poll refresh crash 2021-04-12 13:57:02 -03:00
Ramon Souza
f6b70600d0 fix chat alerts 2021-04-12 08:16:57 -03:00
Mario Jr
951fc0ade8 fix: MEDIA_ERROR when joining room using Firefox
Firefox doesn't create a  device called 'default' and we were trying
to set this when user is joining the room. We don't do this anymore, letting
devices to be changed when there's some user request.

Moved outputDeviceId inputDeviceId information to be managed in bridge
(just like we do with inputDeviceId), we don't store this duplicated
information in audio container anymore.

Fixed the eslint warning in "playAlertSound(url) { ..."

We are safe to let users try to change input/output devices because the
device list is retrieved from enumerateDevices.
2021-04-01 15:53:43 -03:00
Anton Georgiev
6695f7a119
Merge pull request #11813 from mariogasparoni/merge-update-pr-10129
Update and some improvements on PR #10129 - dynamic change audio device
2021-03-30 13:50:30 -04:00
Joao Siebel
c1503a2931 Remove banned users structure and handle reasonCode in validateAuthToken 2021-03-30 10:09:25 -03:00
Mario Jr
60378e8c63 Merge branch 'develop' into merge-update-pr-10129 2021-03-29 19:07:27 -03:00
Mario Jr
cddca95ad1 Fixes and improvements on pr #10129 - dynamic change audio device
Allow listenonly users to change output devices
Fixed dynamic audio device change for firefox
Fixed shortcuts for audio join/leave
Show (with a bold font) the current selected device
[performance] Prevent calling mediaDevices.enumerateDevices every time we render
the selector. This adds a delay (~200ms, on my chrome setup) to render this component
[performance] Do not call enumerateDevices to search for new devices, instead we listen on mediaDevices.deviceChange event
Small refactoring and fixed a few errors that were being throw in browser's console
Fixed device selection when this is done in audio-settings modal
Fallback to default device when current device is removed
Truncate device name length
Renamed "Input","Output" labels to "Microphone","Speakers", respectively
Update eslint rule for accessKey
2021-03-29 18:55:17 -03:00