import EventController from '../eventcontroller/EventController'; import Logger from '../logger/Logger'; import VideoFrameBuffer from '../videoframeprocessor/VideoFrameBuffer'; import VideoFrameProcessor from '../videoframeprocessor/VideoFrameProcessor'; import { BackgroundSegmentationVideoFrameProcessorConfig, ModelType } from './BackgroundSegmentationConstants'; import { BackgroundSegmentationMetricsObserver } from './BackgroundSegmentationMetrics'; /** * Thin wrapper around the CDN-hosted background segmentation processor. * * All calls pipe through to the underlying CDN processor instance. If the * CDN processor fails to load, this falls back to a no-op passthrough that * returns frames unmodified. */ export default class BackgroundSegmentationVideoFrameProcessor implements VideoFrameProcessor { private logger; private cdnProcessor; private metrics; private eventController?; private constructor(); /** * Load the CDN processor script, instantiate it, and return a wrapper. * On failure, returns a no-op wrapper that passes frames through unchanged. */ static create(logger: Logger, config: BackgroundSegmentationVideoFrameProcessorConfig, modelType?: ModelType, cpuUsagePercentage?: number, eventController?: EventController, metricsCollector?: BackgroundSegmentationMetricsObserver): Promise; process(buffers: VideoFrameBuffer[]): Promise; destroy(): Promise; getConfig(): BackgroundSegmentationVideoFrameProcessorConfig | undefined; setConfig(config: BackgroundSegmentationVideoFrameProcessorConfig): void; getModelType(): ModelType | undefined; setModelType(newModelType: ModelType): void; getMaxCPUUsagePercentage(): number | undefined; setMaxCPUUsagePercentage(percentage: number): void; subscribeToProcessorMetrics(): void; private publishProcessorConfigEvent; private static publishFilterFailedEvent; }