From 465bf293f0dbed0957d84a667ccb97eb4bc9977e Mon Sep 17 00:00:00 2001 From: Nathan Vasse Date: Fri, 31 Jan 2025 15:42:28 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(front)=20add=20BackgroundVirtualTrack?= =?UTF-8?q?ProcessorJsWrapper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a wrapper around track-processor-js virtual background processor. This is needed in order to be used in a generic way in our code between firefox processors. --- ...ackgroundVirtualTrackProcessorJsWrapper.ts | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/frontend/src/features/rooms/livekit/components/blur/BackgroundVirtualTrackProcessorJsWrapper.ts diff --git a/src/frontend/src/features/rooms/livekit/components/blur/BackgroundVirtualTrackProcessorJsWrapper.ts b/src/frontend/src/features/rooms/livekit/components/blur/BackgroundVirtualTrackProcessorJsWrapper.ts new file mode 100644 index 00000000..0a2525ad --- /dev/null +++ b/src/frontend/src/features/rooms/livekit/components/blur/BackgroundVirtualTrackProcessorJsWrapper.ts @@ -0,0 +1,61 @@ +import { ProcessorOptions, Track } from 'livekit-client' +import { + BackgroundOptions, + BackgroundProcessorInterface, + ProcessorType, +} from '.' +import { + BackgroundTransformer, + ProcessorWrapper, + VirtualBackground, +} from '@livekit/track-processors' + +export class BackgroundVirtualTrackProcessorJsWrapper + implements BackgroundProcessorInterface +{ + name = 'virtual' + + processor: ProcessorWrapper + + opts: BackgroundOptions + + constructor(opts: BackgroundOptions) { + this.processor = VirtualBackground(opts.imagePath!) + this.opts = opts + } + + async init(opts: ProcessorOptions) { + return this.processor.init(opts) + } + + async restart(opts: ProcessorOptions) { + return this.processor.restart(opts) + } + + async destroy() { + return this.processor.destroy() + } + + update(opts: BackgroundOptions): void { + this.processor.updateTransformerOptions(opts) + } + + get processedTrack() { + return this.processor.processedTrack + } + + get options() { + return (this.processor.transformer as BackgroundTransformer).options + } + + clone() { + return new BackgroundVirtualTrackProcessorJsWrapper(this.options) + } + + serialize() { + return { + type: ProcessorType.VIRTUAL, + options: this.options, + } + } +}