{"version":3,"file":"encoder-client-DcI9qHTz.mjs","names":[],"sources":["../src/video/encoder/encoder-client.ts"],"sourcesContent":["/* SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD */\n/* SPDX-License-Identifier: Apache-2.0 */\n\nimport {\n  callServiceFunction,\n  closeService,\n  isServiceAvailable,\n  openService,\n  resolveHost,\n  type ServiceClientOptions,\n  type ServiceHandle,\n} from '../../common/service-rpc.ts';\nimport type { VideoEncoderConfig } from './encoder-types.ts';\n\n/** Default registered name (`helper::VideoEncoder<0>::get_name()`). */\nexport const VIDEO_ENCODER_DEFAULT_SERVICE_NAME = 'VideoEncoder0';\n\n/** RPC function names (`helper::Video::EncoderFunctionId`). */\nexport const VIDEO_ENCODER_FUNCTIONS = {\n  Open: 'Open',\n  Close: 'Close',\n  Start: 'Start',\n  Stop: 'Stop',\n  FetchFrame: 'FetchFrame',\n} as const;\n\nexport type VideoEncoderClientOptions = ServiceClientOptions & {\n  /** Override service instance name (default `VideoEncoder0`). */\n  serviceName?: string;\n};\n\nexport { type ServiceHandle as VideoEncoderHandle };\n\nfunction resolveServiceName(options?: VideoEncoderClientOptions): string {\n  return options?.serviceName ?? VIDEO_ENCODER_DEFAULT_SERVICE_NAME;\n}\n\nexport function isVideoEncoderAvailable(options?: VideoEncoderClientOptions): boolean {\n  return isServiceAvailable(resolveServiceName(options), options);\n}\n\nexport function openVideoEncoder(options?: VideoEncoderClientOptions): ServiceHandle {\n  return openService(resolveServiceName(options), options);\n}\n\nexport function closeVideoEncoder(\n  handle: ServiceHandle,\n  options?: VideoEncoderClientOptions,\n): void {\n  closeService(handle, options);\n}\n\nfunction callVideoEncoder<T>(\n  handle: ServiceHandle,\n  functionName: string,\n  params: Record<string, unknown>,\n  options?: VideoEncoderClientOptions,\n): T {\n  return callServiceFunction<T>(resolveHost(options), handle, functionName, params);\n}\n\nexport function openEncoder(\n  handle: ServiceHandle,\n  config: VideoEncoderConfig,\n  options?: VideoEncoderClientOptions,\n): void {\n  callVideoEncoder<void>(handle, VIDEO_ENCODER_FUNCTIONS.Open, { Config: config }, options);\n}\n\nexport function closeEncoder(handle: ServiceHandle, options?: VideoEncoderClientOptions): void {\n  callVideoEncoder<void>(handle, VIDEO_ENCODER_FUNCTIONS.Close, {}, options);\n}\n\nexport function startEncoder(handle: ServiceHandle, options?: VideoEncoderClientOptions): void {\n  callVideoEncoder<void>(handle, VIDEO_ENCODER_FUNCTIONS.Start, {}, options);\n}\n\nexport function stopEncoder(handle: ServiceHandle, options?: VideoEncoderClientOptions): void {\n  callVideoEncoder<void>(handle, VIDEO_ENCODER_FUNCTIONS.Stop, {}, options);\n}\n\nexport function fetchEncoderFrame(\n  handle: ServiceHandle,\n  sinkIndex = 0,\n  options?: VideoEncoderClientOptions,\n): void {\n  callVideoEncoder<void>(\n    handle,\n    VIDEO_ENCODER_FUNCTIONS.FetchFrame,\n    { SinkIndex: sinkIndex },\n    options,\n  );\n}\n"],"mappings":";;;AAeA,MAAa,qCAAqC;;AAGlD,MAAa,0BAA0B;CACrC,MAAM;CACN,OAAO;CACP,OAAO;CACP,MAAM;CACN,YAAY;AACd;AASA,SAAS,mBAAmB,SAA6C;CACvE,OAAO,SAAS,eAAA;AAClB;AAEA,SAAgB,wBAAwB,SAA8C;CACpF,OAAO,mBAAmB,mBAAmB,OAAO,GAAG,OAAO;AAChE;AAEA,SAAgB,iBAAiB,SAAoD;CACnF,OAAO,YAAY,mBAAmB,OAAO,GAAG,OAAO;AACzD;AAEA,SAAgB,kBACd,QACA,SACM;CACN,aAAa,QAAQ,OAAO;AAC9B;AAEA,SAAS,iBACP,QACA,cACA,QACA,SACG;CACH,OAAO,oBAAuB,YAAY,OAAO,GAAG,QAAQ,cAAc,MAAM;AAClF;AAEA,SAAgB,YACd,QACA,QACA,SACM;CACN,iBAAuB,QAAQ,wBAAwB,MAAM,EAAE,QAAQ,OAAO,GAAG,OAAO;AAC1F;AAEA,SAAgB,aAAa,QAAuB,SAA2C;CAC7F,iBAAuB,QAAQ,wBAAwB,OAAO,CAAC,GAAG,OAAO;AAC3E;AAEA,SAAgB,aAAa,QAAuB,SAA2C;CAC7F,iBAAuB,QAAQ,wBAAwB,OAAO,CAAC,GAAG,OAAO;AAC3E;AAEA,SAAgB,YAAY,QAAuB,SAA2C;CAC5F,iBAAuB,QAAQ,wBAAwB,MAAM,CAAC,GAAG,OAAO;AAC1E;AAEA,SAAgB,kBACd,QACA,YAAY,GACZ,SACM;CACN,iBACE,QACA,wBAAwB,YACxB,EAAE,WAAW,UAAU,GACvB,OACF;AACF"}