From c02d54b6ff3f990a1f79c0c0246e1a2aa184cb7a Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Tue, 25 Aug 2026 18:29:35 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F(frontend)=20apply=20frugal?= =?UTF-8?q?=20constraint=20to=20the=20active=20meeting=20audio=20track?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apply the `VOICE_AUDIO_CONSTRAINTS` to the audio track used during the active meeting to reduce bandwidth usage. * Originally proposed by trummerschlunk to reduce bandwidth, but previously restricted to the join screen preview. * Backport the standard voice constraints (48 kHz sample rate, mono channel, 16-bit sample size) to the active call session, as requested by the BBBA team. --- CHANGELOG.md | 1 + .../src/features/rooms/components/Conference.tsx | 2 ++ .../src/features/rooms/livekit/hooks/useJoinTracks.ts | 11 +---------- .../src/features/rooms/livekit/utils/constants.ts | 9 +++++++++ 4 files changed, 13 insertions(+), 10 deletions(-) create mode 100644 src/frontend/src/features/rooms/livekit/utils/constants.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a086cd7..c5a94848 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to - ⬆️(frontend) upgrade @tanstack/react-query from 5.101.1 to 5.101.4 - ⬆️(frontend) upgrade @pandacss/preset-panda from 1.11.3 to 1.12.0 - ⬆️(frontend) upgrade posthog-js from 1.404.1 to 1.409.5 +- ⚡️(frontend) apply frugal constraint to the active meeting audio track ## [1.28.0] - 2026-08-24 diff --git a/src/frontend/src/features/rooms/components/Conference.tsx b/src/frontend/src/features/rooms/components/Conference.tsx index 866ce41f..ec877d09 100644 --- a/src/frontend/src/features/rooms/components/Conference.tsx +++ b/src/frontend/src/features/rooms/components/Conference.tsx @@ -43,6 +43,7 @@ import { useSnapshot } from 'valtio' import { userPreferencesStore } from '@/stores/userPreferences' import { userStore } from '@/stores/user' import { WatchMediaDeviceErrors } from './WatchMediaDeviceErrors' +import { VOICE_AUDIO_CONSTRAINTS } from '@/features/rooms/livekit/utils/constants' export const Conference = ({ roomId, @@ -115,6 +116,7 @@ export const Conference = ({ }, audioCaptureDefaults: { deviceId: userConfig.audioDeviceId ?? undefined, + ...VOICE_AUDIO_CONSTRAINTS, }, audioOutput: { deviceId: userConfig.audioOutputDeviceId ?? undefined, diff --git a/src/frontend/src/features/rooms/livekit/hooks/useJoinTracks.ts b/src/frontend/src/features/rooms/livekit/hooks/useJoinTracks.ts index 40ef40be..f536bf78 100644 --- a/src/frontend/src/features/rooms/livekit/hooks/useJoinTracks.ts +++ b/src/frontend/src/features/rooms/livekit/hooks/useJoinTracks.ts @@ -18,6 +18,7 @@ import { noteDeviceReady, onMediaPermissionError, } from '../utils/mediaPermissions' +import { VOICE_AUDIO_CONSTRAINTS } from '../utils/constants' import { saveAudioInputDeviceId, saveAudioInputEnabled, @@ -27,16 +28,6 @@ import { } from '@/stores/userChoices' import { useSyncTrackDeviceId } from './useSyncTrackDeviceId' -const VOICE_AUDIO_CONSTRAINTS = { - noiseSuppression: true, - echoCancellation: true, - autoGainControl: true, - voiceIsolation: false, - sampleRate: 48000, - channelCount: 1, - sampleSize: 16, -} as const - // Module-level: effect dependencies, must be referentially stable. const disableAudio = () => saveAudioInputEnabled(false) const disableVideo = () => saveVideoInputEnabled(false) diff --git a/src/frontend/src/features/rooms/livekit/utils/constants.ts b/src/frontend/src/features/rooms/livekit/utils/constants.ts new file mode 100644 index 00000000..355c7a29 --- /dev/null +++ b/src/frontend/src/features/rooms/livekit/utils/constants.ts @@ -0,0 +1,9 @@ +export const VOICE_AUDIO_CONSTRAINTS = { + noiseSuppression: true, + echoCancellation: true, + autoGainControl: true, + voiceIsolation: false, + sampleRate: 48000, + channelCount: 1, + sampleSize: 16, +} as const