This commit is contained in:
fkwp
2026-03-26 15:51:46 +01:00
parent c9be83b27d
commit 239480e1f3
5 changed files with 63 additions and 44 deletions

View File

@@ -7,7 +7,10 @@ Please see LICENSE in the repository root for full details.
import { useEffect, useRef } from "react";
import { noiseSuppressionEnabled, noiseSuppressionLevel } from "../settings/settings";
import {
noiseSuppressionEnabled,
noiseSuppressionLevel,
} from "../settings/settings";
import { useBehavior } from "../useBehavior";
import { NoiseSuppressionTransformer } from "../livekit/NoiseSuppressionTransformer";
@@ -16,42 +19,43 @@ import { NoiseSuppressionTransformer } from "../livekit/NoiseSuppressionTransfor
* Synchronizes the transformer with the noise suppression settings.
* Returns the transformer instance for use in Publishers.
*/
export const useNoiseSuppressionTransformer = (): NoiseSuppressionTransformer => {
const transformerRef = useRef<NoiseSuppressionTransformer | null>(null);
const enabledValue = useBehavior(noiseSuppressionEnabled.value$);
const levelValue = useBehavior(noiseSuppressionLevel.value$);
export const useNoiseSuppressionTransformer =
(): NoiseSuppressionTransformer => {
const transformerRef = useRef<NoiseSuppressionTransformer | null>(null);
const enabledValue = useBehavior(noiseSuppressionEnabled.value$);
const levelValue = useBehavior(noiseSuppressionLevel.value$);
// Initialize transformer on first mount
useEffect(() => {
if (!transformerRef.current) {
transformerRef.current = new NoiseSuppressionTransformer();
// Initialize with current settings
void transformerRef.current.initialize(levelValue, enabledValue);
}
}, []);
// Sync enabled state when setting changes
useEffect(() => {
if (transformerRef.current) {
transformerRef.current.setEnabled(enabledValue);
}
}, [enabledValue]);
// Sync level when setting changes
useEffect(() => {
if (transformerRef.current) {
transformerRef.current.setSuppressionLevel(levelValue);
}
}, [levelValue]);
// Cleanup on unmount
useEffect(() => {
return () => {
if (transformerRef.current) {
transformerRef.current.destroy();
// Initialize transformer on first mount
useEffect(() => {
if (!transformerRef.current) {
transformerRef.current = new NoiseSuppressionTransformer();
// Initialize with current settings
void transformerRef.current.initialize(levelValue, enabledValue);
}
};
}, []);
}, []);
return transformerRef.current!;
};
// Sync enabled state when setting changes
useEffect(() => {
if (transformerRef.current) {
transformerRef.current.setEnabled(enabledValue);
}
}, [enabledValue]);
// Sync level when setting changes
useEffect(() => {
if (transformerRef.current) {
transformerRef.current.setSuppressionLevel(levelValue);
}
}, [levelValue]);
// Cleanup on unmount
useEffect(() => {
return () => {
if (transformerRef.current) {
transformerRef.current.destroy();
}
};
}, []);
return transformerRef.current!;
};