Commit Graph

712 Commits

Author SHA1 Message Date
Anton Georgiev
54403fb587
Merge pull request #20121 from prlanzarin/u27/fix/ff-pairselection
fix(audio): broken connection stats on Firefox >= 125
2024-04-30 14:42:35 -04:00
Anton Georgiev
d0307e6f21
Merge pull request #20010 from prlanzarin/u27/fix/review-mobile-audio-join
[2.7] fix(audio): review audio modal help screen
2024-04-30 14:41:54 -04:00
prlanzarin
f91402bc4a fix(audio): remove listen only retry routines
Listen only has a built-in retry routine on join failures that's
convoluted half-broken. It stems from the Kurento era where it could
fail randomly due to a myriad of reasons.
Production logs indicate that the retry is seldom used nowadays in
mediasoup-based environments. The presence of the retry also breaks
the error troubleshooting modal when actual failures happening, leaving
users in the dark about what's happening.

Remove the listen only retry code from AudioManager and bubble up any
join failure to the callers.
2024-04-30 13:58:06 -03:00
prlanzarin
a2e22fffb3 fix(audio): broken connection stats on Firefox >= 125
WebRTC-based stats generation in the connection status modal is broken
on Firefox >= 125. A broken type check coupled with a new partially
implemented RTCIceTransport dictionary causes and undefined function
call when fetching the selected candidate pair. Since that error is
unhandled, collection breaks.

Correctly check for the getSelectedCandidatePair method availability in
RTCIceTransport so that it skips to pair inference from getStats if
necessary.
2024-04-30 13:44:29 -03:00
Anton Georgiev
6eaf8cd44d
Merge pull request #20004 from prlanzarin/u27/fix/audio-less-toasts
[2.7] fix(audio): minimize redundant audio exit toasts
2024-04-12 15:53:18 -04:00
Anton Georgiev
2f3e709324
Merge pull request #20007 from prlanzarin/u27/fix/invalid-metadataprop-access
[2.7] fix(bbb-html5): crash due to undefined metadataProp access
2024-04-12 15:32:17 -04:00
Anton Georgiev
711487c2c9
Merge pull request #20009 from prlanzarin/u27/fix/onconnectionstatechange-crash-rc
[2.7] fix(bbb-html5): crash when stopping WebRTC peers
2024-04-12 15:15:03 -04:00
prlanzarin
68f66a1fbb fix(audio): handle NotAllowedError in skipCheck:true scenarios
In scenarios where the join audio flow skips echo test, NotAllowedError
(and any other errors) are all being mashed together under a generic
MEDIA_ERROR object.

Properly handle specific errors in audio-manager so they're correctly
render in the audio modal help screen.
2024-04-12 14:40:51 -03:00
prlanzarin
610f3b165b fix(bbb-html5): crash when stopping WebRTC peers
There's a race condition that may cause a client crash whenever a
connectionstatechange callback is cleaned up in a peer without a
valid peer connection present in our custom RTCPeerConnection wrapper.

Check for peerConnection availability in the WebRtcPeer wrapper before
trying to clean up its connectionstatechange callback.
2024-04-12 14:38:34 -03:00
prlanzarin
71f958ca47 fix(bbb-html5): crash due to undefined metadataProp access
A client crash may happen if either the Meeting collection or the
document's metadataProp attribute are undefined whenever the
getFromMeetingSettings util is called to fetch metadata.
It's debatable whether anything is working in the client if the
documents being accessed here are unavailable, but it'll still be logged
and might bork an ongoing reconnect.

Use optional chaining + nullish coalescing to avoid causing TypeErrors
in those situations while also returning default metadata values
properly.
2024-04-12 14:31:38 -03:00
prlanzarin
555a8f6522 fix(audio): acquire streams before negotiation when peer is answerer
When a sendrecv peer acts as the answerer, gUM is only called _after_
the remote offer is received. This is fine, but the error handling runs
different in that scenario in a way that eventual gUM errors are treated
as negotiation errors, leading to inconsistencies when surfacing the
error to end users.

If a peer is acting as answerer and is a transceiver, acquire the local
streams _before_ actual negotiation so that gUM errors are surfaced
correctly (and we spare uneeded negotiation steps).
2024-04-12 14:29:38 -03:00
prlanzarin
4e93a4de72 fix(audio): minimize redundant audio exit toasts
Audio exit toasts are fired in some redundant situations, e.g.: when the
error help screen is toast.

Change the logic a bit so that it's only fired when the audio help modal
won't be shown, i.e.: when audio had succesfully connected.
2024-04-12 14:23:25 -03:00
Lucas
125d70699b
feat: Initial implementation of Gladia transcriptions to BBB 2.7 (#19091)
* Demo changes

* Revert "feat(captions): no longer writes in the pad"

This reverts commit a76de8c458.

* feat(transcriptoin): Add config options for the transcription backend

* feat(transcription): Add autodetect option to cc chevron

* feat(transcription): Move transcription options into settings modal

* feat(transcription): Set transcription options via userdata

* fix(transcription): Correct userdata for settings transcription params

* feat(transcriptions): options to auto enable caption button

* feat(transcriptions): Option to hide old CC pad funcionality

* fix(transcription): Fix PR comments

* fix(transcription): Refactor updateTranscript to prevent null user and make it more readable

* feat(transcription): bbb_transcription_provider can be set via userdata

* fix(transcription): Use base10 for parseInt

* fix(transcriptions): Fix CC language divider when using webspeech

* fix(transcriptions): Use a default pad in the settings instead of hardcoding 'en'

We still need to use a language pad such as 'en', but in the future we can better
separate these systems.

* fix(transcription): Add a special permission for automatic transcription updates to the pad and restore old per user updates permission

* feature(transcriptions): Include transcriptions submenu and locales

* chore: bump bbb-transcription-controller to v0.2.0

* fix(transcription): Add missing menu files

* fix(transcription): Fix transcription provider options in settings.yml

* fix: setting password for bbb-transcription-controller

* build: add gladia-proxy.log for transcription-controller

* fix(transcriptions): Remove transcript splitting and floor logic from akka apps

* fix(captions): Show long utterances as split captions, show multiple speaker captions

* chore: bump bbb-transcription-controller to 0.2.1

---------

Co-authored-by: Anton Georgiev <anto.georgiev@gmail.com>
2023-11-30 10:10:36 -05:00
GuiLeme
7829702275 [issue-18408-back-end] - merge upstream 2023-08-30 11:04:55 -03:00
GuiLeme
0aacb12cc8 [issue-18408-back-end] - added disabled download of converted presentation 2023-08-25 11:37:32 -03:00
GuiLeme
2cf6720b5f [issue-18408-back-end] - change name of download original pres 2023-08-25 09:27:01 -03:00
Anton Georgiev
1186db7712 Merge remote-tracking branch 'bbb/v2.6.x-release' into aug22merge 2023-08-24 15:05:20 -04:00
Anton Georgiev
cb121f7803 fix(html5): backport Replace wasm detection library #18557 to 2.6 2023-08-17 11:16:39 -04:00
Ramón Souza
94cb2d5d97 only display reactions bar toggle if reactions are enabled 2023-08-11 10:14:16 -03:00
Paulo Lanzarin
d7e9cb05ee
Merge pull request #18461 from prlanzarin/u27/feat/transparent-listen-only
feat(audio): add experimental transparent listen only mode
2023-08-08 09:39:12 -03:00
prlanzarin
8feb934169 feat(audio): add experimental transparent listen only mode
This is an initial, experimental implementation of the feature proposed in
https://github.com/bigbluebutton/bigbluebutton/issues/14021.

The intention is to phase out the explicit listen only mode with two
overarching goals:
  - Reduce UX friction and increase familiarity: the existence of a separate
  listen only mode is a source of confusion for the majority of users
  Reduce average server-side CPU usage while also making it possible for
  having full audio-only meetings.

The proof-of-concept works based on the assumption that a "many
concurrent active talkers" scenario is both rare and not useful. With
that in mind, this including two server-side triggers:
 - On microphone inactivity (currently mute action that is sustained for
   4 seconds, configurable): FreeSWITCH channels are held (which translates
   to much lower CPU usage, virtually 0%). Receiving channels are switched,
   server side, to a listening mode (SFU, mediasoup).
   * This required an extension to mediasoup two allow re-assigning producers
     to already established consumers. No re-negotiation is done.
 - On microphone activity (currently unmute action, immediate):
   FreeSWITCH channels are unheld, listening mode is deactivated and the
   mute state is updated accordingly (in this order).

This is *off by default*. It needs to be enabled in two places:
  - `/etc/bigbluebutton/bbb-webrtc-sfu/production.yml` ->
    `transparentListenOnly: true`
  - End users:
    * Server wide: `/etc/bigbluebutton/bbb-html5.yml` ->
      `public.media.transparentListenOnly: true`
    * Per user: `userdata-bbb_transparent_listen_only=true`
2023-08-07 19:43:18 -03:00
Paulo Lanzarin
5ddf3155c7
Merge pull request #18407 from prlanzarin/u27/fix/audio-retry-timeout-logs
feat(audio): add retryThroughRelay, +...
2023-08-03 15:50:04 -03:00
Ramón Souza
df8e9e9440 split disabled download of presentation params 2023-07-31 17:03:29 -03:00
prlanzarin
26815f4679 chore(audio): add more data to audio_joined/failure logs
Add secondsToActivateAudio, inputDeviceId, outputDeviceId and isListenOnly
to audio_joined.extraInfo

Add inputDeviceId, outputDeviceId and isListenOnly to
audio_failure.extraInfo

Add a try-catch to the device enforcement procedure triggered by
onAudioJoin - it may throw and block the modal.
2023-07-31 11:39:24 -03:00
Anton Georgiev
6b76d9aa66 Merge remote-tracking branch 'bbb/v2.6.x-release' into merge-july-21 2023-07-21 16:24:45 -04:00
GuiLeme
6fb701045a [issue-18259] - fix join audio in breakout room 2023-07-17 09:14:23 -03:00
André Castro
e5268887bd
removing duplicates 2023-06-16 12:13:07 -03:00
André Castro
5af5151219
Merge branch 'v2.7.x-release' into I-18137 2023-06-15 11:50:02 -03:00
André Castro
c1cd4f6c84
Update index.js 2023-06-15 11:24:23 -03:00
Scroody
53fcfd9101 Resolving issues 2023-06-14 16:47:57 -03:00
Scroody
450cbe5451 Client: Timer added as disabled feature 2023-06-13 15:54:16 -03:00
Scroody
294fda2c6f Client: Camera as content as conent added to disabled features 2023-06-13 11:25:09 -03:00
Anton Georgiev
c8b0437df3
Merge pull request #18133 from GuiLeme/port-timer-with-events-suggestions
feat(timer): Port timer (Mconf) with events suggestions
2023-06-08 15:56:10 -04:00
GuiLeme
2cf46e4d05 [port-timer-with-events-suggestions] - made review suggestions 2023-06-08 16:37:32 -03:00
Ramón Souza
d31e56b3fd rename parameter, fix props 2023-06-07 09:35:56 -03:00
Samuel Weirich
ef64c17c3b Add disabled feature snapshot current slide 2023-06-07 08:55:13 -03:00
Paulo Lanzarin
0e8dc2a0cc
Merge pull request #17847 from prlanzarin/u27/feat/fullaudio-bridge-userdata
feat(audio): add userdata-bbb_fullaudio_bridge
2023-05-31 17:07:57 -03:00
prlanzarin
80414a9cc4 feat(audio): add userdata-bbb_fullaudio_bridge
Allows controlling which audio bridge should be used, per user
2023-05-31 17:07:10 -03:00
Paulo Lanzarin
5447666c15
Merge branch 'v2.7.x-release' into port-timer 2023-05-26 10:33:38 -03:00
Anton Georgiev
4948731fe7
Merge pull request #17764 from lfzawacki/reactions-port
feat: Port Mconf Reactions into BBB 2.7
2023-05-26 08:05:02 -04:00
Anton Georgiev
1a1f442d5a
Merge pull request #17746 from Carloshsc/port-present-webcam-27
feat(camera as content): present webcam
2023-05-26 08:01:40 -04:00
prlanzarin
7c77fc7433 Merge remote-tracking branch 'origin/v2.7.x-release' into reactions-port 2023-05-25 19:54:01 -03:00
Arthurk12
701206ee80 feat(reactions): add to disabledFeatures 2023-05-25 18:05:50 -03:00
Carlos Henrique
0659f15211 fix(disabledFeatures) add timer
"disableFeatures=timer"
2023-05-18 15:29:41 -03:00
Scroody
4a6d1258ae Requested changes made and fix of deactivating mutiple cams 2023-05-17 11:30:06 -03:00
Scroody
8272b487f3 Testing 2023-05-16 14:39:56 -03:00
Arthurk12
e902f2ee27 feat(screenshare): add contentType field
This commit adds a contentType field in the back-end components of the
screenshare feature in order to accomodate the new 'camera as content'
feature.
2023-05-09 17:21:47 -03:00
Anton Georgiev
72c575b911 Merge branch 'v2.6.x-release' of github.com:bigbluebutton/bigbluebutton into merge-apr-6 2023-04-06 11:50:26 -04:00
Anton Georgiev
e2dc7da98a
Merge pull request #16828 from prlanzarin/u27/fix/ss-cam-reconn
fix: re-connection improvements for cameras and screen sharing
2023-04-05 16:13:01 -04:00
prlanzarin
c81a7e70f2 fix: properly check constraints before creating transceivers in peer.js
In peer.js offer generation method, the provided constraitns are only
being type checked. It needs a value check when the constraint is a
boolean.

This commit should prevent useless transceivers from being added when
explictly specifying audio/video as `false`
2023-04-05 13:30:30 -03:00