diff --git a/frontend/src/pages/public/BackgroundBlurToggle.tsx b/frontend/src/pages/public/BackgroundBlurToggle.tsx index 900a76e..a721291 100644 --- a/frontend/src/pages/public/BackgroundBlurToggle.tsx +++ b/frontend/src/pages/public/BackgroundBlurToggle.tsx @@ -32,6 +32,25 @@ import { Icon } from '../../components/Icon' * przepinana w locie. Tryb `disabled` przepuszcza obraz bez zmian i nie * przerywa publikacji. */ +/** + * Sila rozmycia tla. + * + * Domyslne 10 z biblioteki jest ZA SLABE do tego zastosowania: przy prowadzeniu + * z domu widac przez nie uklad pokoju, zdjecia na polkach i osoby przechodzace + * w tle, czyli dokladnie to, co rozmycie ma zaslonic. Sprawdzone na zywo. + * + * 25 daje tlo nierozpoznawalne, a obrys postaci zostaje czysty: maska pochodzi + * z modelu segmentacji i nie zalezy od tej wartosci, wiec podnoszenie sily nie + * psuje krawedzi. Kosztuje za to nieco mocy procesora, bo rozmycie liczy sie + * dla kazdej klatki. + * + * Model `selfie_segmenter` to wariant "general" (256x256), czyli dokladniejszy + * z dwoch dostepnych. Wariant "landscape" jest szybszy i tego uzywa Google Meet, + * ale przy nieruchomym prelegencie roznica w plynnosci jest niezauwazalna, + * a jakosc obrysu ma tu wieksze znaczenie. + */ +const BLUR_RADIUS = 25 + export function BackgroundBlurToggle({ className = '' }: { className?: string }) { const { cameraTrack } = useLocalParticipant() const [enabled, setEnabled] = useState(false) @@ -79,7 +98,7 @@ export function BackgroundBlurToggle({ className = '' }: { className?: string }) const processor = BackgroundProcessor({ mode: 'background-blur', - blurRadius: 10, + blurRadius: BLUR_RADIUS, assetPaths: { tasksVisionFileSet: '/mediapipe/wasm', modelAssetPath: '/mediapipe/selfie_segmenter.tflite',