{"version":3,"sources":["../src/frame_processor.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { type AudioFrame } from './audio_frame.js';\nimport { type VideoFrame } from './video_frame.js';\n\nexport type FrameProcessorStreamInfo = {\n  roomName: string;\n  participantIdentity: string;\n  publicationSid: string;\n};\n\nexport type FrameProcessorCredentials = {\n  token: string;\n  url: string;\n};\n\nexport const FrameProcessorSymbol = Symbol.for('lk.frame-processor');\n\nexport function isFrameProcessor<\n  T extends FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame> | unknown,\n>(\n  maybeProcessor: unknown,\n): maybeProcessor is T extends FrameProcessor<AudioFrame>\n  ? FrameProcessor<AudioFrame>\n  : T extends FrameProcessor<VideoFrame>\n    ? FrameProcessor<VideoFrame>\n    : FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame> {\n  return (\n    maybeProcessor !== null &&\n    typeof maybeProcessor === 'object' &&\n    'symbol' in maybeProcessor &&\n    maybeProcessor.symbol === FrameProcessorSymbol\n  );\n}\n\nexport abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {\n  readonly symbol = FrameProcessorSymbol;\n\n  abstract isEnabled(): boolean;\n  abstract setEnabled(enabled: boolean): void;\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onStreamInfoUpdated(_info: FrameProcessorStreamInfo): void {}\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onCredentialsUpdated(_credentials: FrameProcessorCredentials): void {}\n\n  abstract process(frame: Frame): Frame;\n  abstract close(): void;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAgC;AAChC,yBAAgC;AAazB,MAAM,uBAAuB,OAAO,IAAI,oBAAoB;AAE5D,SAAS,iBAGd,gBAK4D;AAC5D,SACE,mBAAmB,QACnB,OAAO,mBAAmB,YAC1B,YAAY,kBACZ,eAAe,WAAW;AAE9B;AAEO,MAAe,eAAsD;AAAA,EAArE;AACL,SAAS,SAAS;AAAA;AAAA;AAAA,EAMlB,oBAAoB,OAAuC;AAAA,EAAC;AAAA;AAAA,EAE5D,qBAAqB,cAA+C;AAAA,EAAC;AAIvE;","names":[]}