(frontend) disable noise reduction on mobile devices

Prevent enabling noise reduction on mobile to avoid performance issues
from resource-intensive audio processing.
This commit is contained in:
lebaudantoine
2025-06-25 00:36:41 +02:00
committed by aleb_the_flash
parent 1fe1a557ad
commit 3de4cc01dc
2 changed files with 23 additions and 16 deletions

View File

@@ -3,9 +3,11 @@ import { Track } from 'livekit-client'
import { useRoomContext } from '@livekit/components-react'
import { RnnNoiseProcessor } from '../processors/RnnNoiseProcessor'
import { usePersistentUserChoices } from './usePersistentUserChoices'
import { useIsMobile } from '@/utils/useIsMobile'
export const useNoiseReduction = () => {
const room = useRoomContext()
const isMobile = useIsMobile()
const {
userChoices: { noiseReductionEnabled },
@@ -16,7 +18,7 @@ export const useNoiseReduction = () => {
)?.audioTrack
useEffect(() => {
if (!audioTrack) return
if (!audioTrack || isMobile) return
const processor = audioTrack?.getProcessor()
@@ -26,5 +28,5 @@ export const useNoiseReduction = () => {
} else if (!noiseReductionEnabled && processor) {
audioTrack.stopProcessor()
}
}, [audioTrack, noiseReductionEnabled])
}, [audioTrack, noiseReductionEnabled, isMobile])
}

View File

@@ -14,6 +14,7 @@ import { ActiveSpeaker } from '@/features/rooms/components/ActiveSpeaker'
import { usePersistentUserChoices } from '@/features/rooms/livekit/hooks/usePersistentUserChoices'
import { ReactNode } from 'react'
import { css } from '@/styled-system/css'
import { useIsMobile } from '@/utils/useIsMobile'
type RowWrapperProps = {
heading: string
@@ -141,6 +142,8 @@ export const AudioTab = ({ id }: AudioTabProps) => {
return defaultItem.value
}
const isMobile = useIsMobile()
return (
<TabPanel padding={'md'} flex id={id}>
<RowWrapper heading={t('audio.microphone.heading')}>
@@ -190,20 +193,22 @@ export const AudioTab = ({ id }: AudioTabProps) => {
<SoundTester />
</RowWrapper>
)}
<RowWrapper heading={t('audio.noiseReduction.heading')} beta>
<Switch
aria-label={t(
`audio.noiseReduction.ariaLabel.${noiseReductionEnabled ? 'disable' : 'enable'}`
)}
isSelected={noiseReductionEnabled}
onChange={(v) => {
saveNoiseReductionEnabled(v)
}}
>
{t('audio.noiseReduction.label')}
</Switch>
<div />
</RowWrapper>
{!isMobile && (
<RowWrapper heading={t('audio.noiseReduction.heading')} beta>
<Switch
aria-label={t(
`audio.noiseReduction.ariaLabel.${noiseReductionEnabled ? 'disable' : 'enable'}`
)}
isSelected={noiseReductionEnabled}
onChange={(v) => {
saveNoiseReductionEnabled(v)
}}
>
{t('audio.noiseReduction.label')}
</Switch>
<div />
</RowWrapper>
)}
</TabPanel>
)
}