import { clContext as nodenCLContext, OpenCLProgram, KernelParams } from 'nodencl'; import { ClJobs, JobCB, JobID } from '../clJobQueue'; export declare enum Interlace { Progressive = 0, TopField = 1, BottomField = 3 } export declare abstract class PackImpl { protected readonly name: string; protected readonly width: number; protected readonly height: number; protected interlaced: boolean; readonly kernel: string; readonly programName: string; numBits: number; lumaBlack: number; lumaWhite: number; chromaRange: number; protected isRGB: boolean; protected numBytes: Array; protected globalWorkItems: number; protected workItemsPerGroup: number; constructor(name: string, width: number, height: number, kernel: string, programName: string); getName(): string; getWidth(): number; getHeight(): number; getNumBytes(): Array; getNumBytesRGBA(): number; getIsRGB(): boolean; getTotalBytes(): number; getGlobalWorkItems(): number; getWorkItemsPerGroup(): number; abstract getKernelParams(params: KernelParams): KernelParams; } export default abstract class Packer { protected readonly clContext: nodenCLContext; protected readonly packImpl: PackImpl; protected readonly clJobs: ClJobs; protected program: OpenCLProgram | null; constructor(clContext: nodenCLContext, packImpl: PackImpl, clJobs: ClJobs); init(): Promise; abstract run(params: KernelParams, id: JobID, cb: JobCB): void; }