Commit Graph

40 Commits

Author SHA1 Message Date
prlanzarin
325887e325 feat(audio): rework audio join without listen only
This is a rework of the audio join procedure whithout the explict listen
only separation in mind. It's supposed to be used in conjunction with
the transparent listen only feature so that the distinction between
modes is seamless with minimal server-side impact. An abridged list of
changes:
  - Let the user pick no input device when joining microphone while
    allowing them to set an input device on the fly later on
  - Give the user the option to join audio with no input device whenever
    we fail to obtain input devices, with the option to try re-enabling
    them on the fly later on
  - Add the option to open the audio settings modal (echo test et al)
    via the in-call device selection chevron
  - Rework the SFU audio bridge and its services to support
    adding/removing tracks on the fly without renegotiation
  - Rework the SFU audio bridge and its services to support a new peer
    role called "passive-sendrecv". That role is used by dupled peers
    that have no active input source on start, but might have one later
    on.
  - Remove stale PermissionsOverlay component from the audio modal
  - Rework how permission errors are detected using the Permissions API
  - Rework the local echo test so that it uses a separate media tag
    rather than the remote
  - Add new, separate dialplans that mute/hold FreeSWITCH channels on
    hold based on UA strings. This is orchestrated server-side via
    webrtc-sfu and akka-apps. The basic difference here is that channels
    now join in their desired state rather than waiting for client side
    observers to sync the state up. It also mitigates transparent listen
    only performance edge cases on multiple audio channels joining at
    the same time.

The old, decoupled listen only mode is still present in code while we
validate this new approach. To test this, transparentListenOnly
must be enabled and listen only mode must be disable on audio join so
that the user skips straight through microphone join.
2024-08-15 00:43:28 +00:00
Ramón Souza
af8556e026 Merge remote-tracking branch 'upstream/v2.6.x-release' into 26-27-apr24 2023-04-24 17:15:47 -03:00
Daniel Schreiber
68c583f53e Fix: Workaround firefox' missing audio output selection
Firefox does not support selecting an audio output device in its default
configuration. This works around this flaw by just displaying default
output instead of no device found.

Fixes #16057
2023-04-11 10:41:32 +02:00
Ramón Souza
4ed09c89cf replace lodash uniqueId 2023-02-23 11:23:51 -03:00
prlanzarin
cdbbb49d64 refactor(audio): style adjustments to AudioSettings device selectors
Similar to what video-preview does: dropdown icon indicator, focus/hover handling, ...
2022-05-03 16:25:02 +00:00
prlanzarin
b428221f7e fix(audio): guarantee consistency of selected input devices in AudioSettings
The initial selected input device in AudioSettings could be the wrong one if
 - 1) gUM outputs an user-selected device rather than the default
 - 2) no previous device was selected for that domain and the enumeration
      list order caused the default not to be the first

The issue is tackled re-extracting the deviceId from an input stream if it
exists and making the DeviceSelector value follow what is defined in the client
(audio-manager) via a trackable prop
2022-04-28 14:38:37 +00:00
prlanzarin
e0bda16c06 refactor(audio): linter pass over local echo/volume meter
Address linter warnings before any further changes in that area
2022-04-18 20:05:26 +00:00
prlanzarin
c9eeffb71e fix(audio): guarantee audio settings devices are present and labelled
For scenarios where streams are produced in AudioSettings (local echo,
volume meter), force gUM resolution before devices are enumerated.
This effectively guarantees that all devices are present, labelled and
with deviceIds.
2022-04-12 21:33:17 +00:00
prlanzarin
17e5d95d7a refactor(audio): clean unused code in local echo/volume code 2022-04-11 19:40:16 +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
b611afbed4 convert audio device-selector component 2021-11-09 16:08:01 +00:00
Ramón Souza
af8959fe95 convert audio settings component 2021-11-09 14:33:40 +00:00
Vitor Mateus De Almeida
145ca61d40 linting some files 2021-08-09 11:24:02 -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
Chad Pilkey
c71de81b03 fix audio input selector 2019-07-06 22:04:05 +00:00
Anton Georgiev
3fcb95ab44 log structure {logCode, extraInfo}, comment 2019-06-28 21:45:50 +00:00
Gustavo Trott
eedbe93906 Show 'Default' in Speaker list when browser is Safari 2019-02-06 09:48:01 -02:00
Maxim Khlobystov
b86a990612 Add logCode and build number to log messages 2019-02-01 14:12:06 -05:00
Anton Georgiev
22a4c495a8 add logs for audio input/output devices to debug iOS 2018-12-03 21:24:18 +00:00
Oleksandr Zhurbenko
ce1f40ac9a Updated Meteor to 1.6.0.1 2018-01-07 22:17:18 -08:00
Gabriel Carvalho de Campes
2cca0c1724 change device selector key generation 2017-10-31 15:34:06 -02:00
Gabriel Carvalho de Campes
cf73251feb Merge remote-tracking branch 'upstream/v2.0.x-release' into audio-refactor 2017-10-26 16:26:19 -02:00
Oswaldo Acauan
45d604c63d Refactor logger from client to server 2017-10-24 10:58:46 -02:00
gcampes
ff35ad9602 delete unused files, cleanup code 2017-10-23 10:41:09 -02:00
gcampes
6b44504e5d Adds timeout to transfer, fix css, remove logs 2017-10-12 11:49:50 -03:00
KDSBrowne
10f95f11e1 fix merge conflicts 2017-10-02 12:37:51 -07:00
KDSBrowne
e78e59e659 add focus style to device selectors 2017-09-18 09:43:21 -07:00
Oleksandr Zhurbenko
251bd22738 PR review fixes 2017-09-06 12:36:52 -07:00
Oswaldo Acauan
1c5c74db67 Fix merge conflicts 2017-06-05 13:52:46 +00:00
Oleksandr Zhurbenko
06493fda7f Switched to prop-types package to remove new React 15 warnings 2017-06-03 19:40:14 -07:00
Oswaldo Acauan
e6412275a6 Linter auto fix 2017-06-02 19:25:02 +00:00
Anton Georgiev
038405f907 some changes to logClient api 2017-05-03 13:19:21 -04:00
Klaus Klein
131f23f42d Fix lint problems 2017-05-02 08:30:32 -03:00
Klaus Klein
5a4f05a41a Fix requests on PR #3865 2017-04-28 14:12:08 -03:00
Klaus Klein
245ba3c4e3 Add client log, HTML5 2017-04-28 10:47:07 -03:00
gcampes
3243ff32cf Changes to settings modal 2017-02-15 16:49:40 -02:00
Oswaldo Acauan
37942569fb Prevent blank device selector comobos 2016-12-19 17:11:43 +00:00
Oswaldo Acauan
cb28149e4f Add audio device selector and mic volume checker 2016-12-08 16:17:17 -02:00