Commit Graph

68 Commits

Author SHA1 Message Date
GuiLeme
c1676004d4 [issue-16954] - migration of audio modal 2023-03-24 12:29:09 -03: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
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
1e37924e41 refactor(audio): local echo initial hearing state is configurable, ...
public.media.showVolumeMeterInSettings => public.media.showVolumeMeter

public.media.simplifiedEchoTest => public.media.localEchoTest.enabled

Initial hearing state can be configured in public.media.localEchoTest.initialHearingState
2022-04-11 21:04:08 +00:00
prlanzarin
d6c7f23a0e feat(audio): local echo test and audio energy meter
New features:
  - A simplified echo test mode that only does a local loopback (instead of
  going to FS and back)
  - A volume meter for microphone streams to the AudioSettings view

Those two features are experimental and disabled by default; see
public.app.media.simplifiedEchoTest and public.app.media.showVolumeMeter configs

Collateral changes:
  - fix: localize fallback device strings in AudioSettings/DeviceSelector
  - Refactor on some media stream utils to be re-usable across components
  - Refactor in AudioSettings to keep gUM #uses stable.
    * TODO: need to pass streams through AudioManager to avoid the surplus gUM.
  - fix(audio): drop ScriptProcessorNode usage (deprecated)
    * Used in volume meter for tracking - use hark instead
2022-04-11 19:21:56 +00:00
Ramón Souza
1d1375b3cf move modal component to common folder 2022-02-15 15:54:55 +00:00
Tainan Felipe
f5eef03f3f Improve data structure to not break on reconnections 2021-11-03 14:37:54 -03:00
Anton Georgiev
c5dff32aaf
Merge pull request #13562 from mariogasparoni/remove-ios-chrome-audio-check
update(audio): do not check for chrome in iOS devices in audio modal
2021-10-25 12:00:26 -04:00
Mario Jr
05686baed6 update(audio): do not check for chrome in iOS devices in audio modal
We are now leaving the check for the minBrowserVersions object in settings.yml
If the settings enables chrome iOS, audio should allow users to be joining
with audio.

This is related to recent Chrome update (iOS 14.3+) that now allows
camera/microphone to be captured. We are looking for enabling this for
Chrome 93 in iOS (chromeMobileIOS version in settings.yml)
2021-10-22 18:14:12 -03:00
Tainan Felipe
1de8e0779d Add server side reactivity to publications 2021-10-13 15:00:52 -03:00
Vitor Mateus De Almeida
145ca61d40 linting some files 2021-08-09 11:24:02 -03:00
Mario Jr
db4158dc30 fix: first audio join in breakout fails with specific config
When listenOnlyMode=false, skipCheck=true and skipCheckOnJoin=true, the
audio tries to start a session more than one time, causing it to fail
at the first one (and reconnect after that).

Now we check if user is already connecting before trying to start a new
audio session.

Added some info in settings.yml for the options related to this commit
Closes #12190
2021-05-04 10:11:33 -03:00
Mario Jr
bf17b385b6 fix: breakout autojoin audio with wrong behavior
When joining/returning breakouts, audio would always connect
with full audio. This can lead to a performance problem, once
all listenonly users would join full audio, increasing the
number of streams in FreeSWITCH.

We now have a consistent behavior, which is:
1 - The choice made by the user in the main room is predominant:
    if mic is active in main room, user will automatically
    join mic in breakout room. When returning from breakout
    room, user will also join with mic again.
2 - Changes made in breakout room won't have effect when
    returning to the main room. This means if user, for example,
    change from listenonly to mic in breakout room, the returning
    will consider the option choosen previously (listenonly) and
    listenonly will be active again in the main room.
3 - If user didn't join audio in the main room, the audio modal
    will be prompted when joining the breakout room (this is
    a special case of (1))


The following is some technicall information:
InputStreamLiveSelector (component.jsx) now calls
'handleLeaveAudio' function, which is the default
function when user leaves audio (also used when
dynamic devices are inactive).

We now store information about user's choice (mic or listenonly)
using local storage, instead of the previous cookie method (this
was triggering some warnings in browser's console).

Also did a small refactoring to match eslint rules.
Fixes #11662.
2021-04-20 14:38:11 -03:00
Mario Jr
e69421e671 fix: Do not show unsupported browser warning for microsoft edge
This was being shown in both audio in video modal.
Related to #11865.
2021-04-02 15:12:40 -03:00
Ramon Souza
05a0d5afbf move browser info to helper + remove unused libs 2021-04-01 08:14:24 -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
b01246f23f rework on echo test flow 2021-02-22 15:09:14 -03:00
Ramon Souza
11d924af70 fix bbb_skip_check_audio_on_first_join 2021-02-22 10:43:58 -03:00
Ramon Souza
0034b1bccc resolve conflicts 2021-02-11 10:23:38 -03:00
Ramon Souza
46af7880d6 Merge remote-tracking branch 'upstream/develop' into PR-8696 2021-02-11 09:12:13 -03:00
KDSBrowne
0abdf00a25
Add new join param skip echo test on first join only (#11284)
* add param to force echo test when user joins audio after init

* fix UI stuck on connecting when userdata-bbb_auto_join_audio=false

* fix conditions for joinFullAudioImmediately and joinFullAudioEchoTest | remove old format

* remove extra param in getItem

* recover audioLocked | only set getEchoTest if doesnt exist
2021-02-04 13:42:31 -05:00
Tainan Felipe
8f1000437a Clean up the code 2020-03-03 10:59:01 -03:00
Tainan Felipe
c451666d52 WIP Implements skip to audio check in breakout rooms 2020-03-02 17:49:15 -03:00
Anton Georgiev
42d640f3e2 Merge branch 'issue7791-add-support-to-new-parameters-name' of github.com:diegobenetti/bigbluebutton into test-7805 2019-11-05 11:59:00 -05:00
KDSBrowne
89853dc026 move microphone error codes to const 2019-09-30 14:54:34 +00:00
Anton Georgiev
4a335a1db6 reduce db probes for getAvailableActions; simplify SaveUsernames 2019-09-06 16:28:02 -04:00
Chad Pilkey
304bb2c103
Merge pull request #8030 from antobinary/chat-ids-2
Reduced client load via slight refactor
2019-09-05 13:23:37 -04:00
Anton Georgiev
ea18b09311 add a few more collection lookups "fields" delimiters 2019-08-29 12:26:07 -04:00
KDSBrowne
a209449891 fix Join by phone icon placement RTL 2019-08-26 20:47:54 +00:00
prlanzarin
8d65ce565d Add UI prompts when autoplay is blocked for video/screenshare/listen only 2019-08-02 21:32:42 +00:00
Diego Benetti
c4462c4cb0 Fixes errors and improves parameters setting proccess 2019-08-02 15:38:38 -03:00
Diego Benetti
3458458cfd Fixes proptypes errors 2019-07-26 15:44:56 -03:00
Diego Benetti
016088ec82 Fixes proptype error 2019-07-26 15:06:12 -03:00
Diego Benetti
3090950957 Fixes proptype error 2019-07-26 14:55:40 -03:00
Diego Benetti
f13239674b Changes other parameters to the new pattern 2019-07-24 14:04:46 -03:00
Diego Benetti
4a764f8f6c Implements new name for parameters and the support to the old names 2019-07-22 11:28:13 -03:00
KDSBrowne
dbf8938d24 fix chrome on ios blue screen after selecting share webcam / lint issues 2019-06-27 16:02:42 +00:00
Tainan Felipe
6a4103c559 Add context to manage locksettings 2019-05-23 13:47:56 -03:00
Anton Georgiev
4e902ff22e
Add another default dial in number to be ignored 2019-04-17 16:36:15 -04:00
bobakoftadeh
9d11c0ad1f update invalidDialNumbers 2019-04-16 17:34:12 +00:00
bobakoftadeh
fcf7bc0a73 update audio-dial modal format 2019-04-16 17:08:01 +00:00
bobakoftadeh
2d526a0d4a update audio-dial implementation 2019-04-15 16:39:36 +00:00
bobakoftadeh
465c265d75 Implemented option for audioDial in audio modal 2019-04-10 20:51:06 +00:00
Chad Pilkey
d12707b14d add modal warnings for edge users 2019-03-28 15:18:22 -07:00
Gustavo Trott
fe99ea889a Hide Mic and Camera buttons if userAgent contains bbbnative 2019-01-31 15:17:03 -02:00
João Francisco Siebel
4c35608c2b Add users-settings collection and handle dynamic configuration 2018-09-13 15:09:30 -03:00
Tainan Felipe
e424970018 Comply audio lock setting 2018-07-09 16:23:16 -03:00
KDSBrowne
7b739a9163 swap browser / os checks done by deviceInfo in favor of detect-browser 2018-06-11 23:12:43 +00:00
Joao Siebel
48cc9f3ca9 Handle join audio connection errors and update production settings 2018-03-08 10:38:18 -03:00