Fix mute flickering. (#2350)

Use `useMeme` to not change the parameters that are used to call usePreviewDevice.

Signed-off-by: Timo K <toger5@hotmail.de>
This commit is contained in:
Timo
2024-04-30 19:57:36 +02:00
committed by GitHub
parent cfe0b4d8e4
commit 2ab909fab1

View File

@@ -68,8 +68,8 @@ export const VideoPreview: FC<Props> = ({
deviceId: devices.audioInput.selectedId,
};
const tracks = usePreviewTracks(
{
const deviceConfig = useMemo(() => {
return {
// The only reason we request audio here is to get the audio permission
// request over with at the same time. But changing the audio settings
// shouldn't cause this hook to recreate the track, which is why we
@@ -80,13 +80,15 @@ export const VideoPreview: FC<Props> = ({
video: muteStates.video.enabled && {
deviceId: devices.videoInput.selectedId,
},
},
(error) => {
logger.error("Error while creating preview Tracks:", error);
muteStates.audio.setEnabled?.(false);
muteStates.video.setEnabled?.(false);
},
);
};
}, [devices.videoInput.selectedId, muteStates.video.enabled]);
const tracks = usePreviewTracks(deviceConfig, (error) => {
logger.error("Error while creating preview Tracks:", error);
muteStates.audio.setEnabled?.(false);
muteStates.video.setEnabled?.(false);
});
const videoTrack = useMemo(
() =>
tracks?.find((t) => t.kind === Track.Kind.Video) as