/// import { BitQueue, LRUCache } from '../utils'; import { DvcEncryption } from './telnet'; export declare enum Command2 { MOUSE_MOVE = 208, BUTTON_PRESS = 209, BUTTON_RELEASE = 210, BUTTON_CLICK = 211, BYTE = 212, SET_MODE = 213, ENCRYPT = 192 } export declare enum MessageChannel { STATUS_FIELD_3 = 1, STATUS_FIELD_4 = 2, CONSOLE = 3, REPLACE_SCREEN = 4 } export declare enum State { RESET = 0, BEGIN = 1, PIXEL_BEGIN = 2, PIXCODE_1 = 3, PIXCODE_0 = 4, PIXCODE_1B = 5, PIXCODE_2B = 6, PIXCODE_3B = 7, SET_GRAYSCALE = 8, SET_RED = 9, AFTER_COLOR = 10, PIXEL_FILL = 11, PIXEL_FILL2 = 12, PIXEL_FILL_PLUS8 = 13, PIXEL_FILL_N = 14, OTHER = 15, OTHER1 = 16, SET_POSITION = 17, OTHER2 = 18, SET_X = 19, SET_X_RELATIVE = 20, SET_X_ABSOLUTE = 21, ADVANCE_BLOCKS = 22, OTHER3 = 23, COMMAND_READ = 24, OTHER4 = 25, SET_WIDTH = 26, N_27 = 27, ADVANCE_BLOCKS2 = 28, ADVANCE_BLOCKS_PLUS2 = 29, ADVANCE_BLOCKS_N = 30, PIXCODE_OR_RGB = 31, PIXCODE_4B = 32, PIXEL_FILL_1 = 33, ADVANCE_BLOCKS_1 = 34, BEGIN_RGB = 36, N_37 = 37, FATAL_ERROR = 38, SET_POSITION_Y = 39, SET_HEIGHT = 40, SET_GREEN = 41, SET_BLUE = 42, RESYNCING = 43, STRING_START = 44, STRING_READ = 45, COMMAND_MORE = 46, SET_YCLIPPED = 47 } interface StateData { bits: number; next: State; next0?: State; } export declare const STATE_DATA: { [state: number]: StateData; }; /** * Video decoder state machine. Process incoming bitstream and * reconstructs screen blocks, etc. generating events that are * dispatched to the appropriate methods. * * To use this, subclass and implement all methods after * the "Methods for subclasses to implement" marker at the end. */ export declare class DvcDecoder { debug: boolean; byteCount: number; readonly bitQueue: BitQueue; dvc_zero_count: number; fatal_count: number; timeout_count: number; dvc_decoder_state: State; dvc_next_state: State; video_detected: boolean; size: [number, number]; position: [number, number]; dvc_newx: number; bitsPerColor: number; dvc_pixcode: number; dvc_last_color: number; currentColor: [number, number, number]; cache: LRUCache; block: Uint32Array; blockWidth: number; blockHeight: number; dvc_pixel_count: number; currentCommand: number[]; currentString?: { channel: MessageChannel; data: string; }; protected initQueue(): void; init(): void; constructor(); protected consumeBits(byte: number): void; /** Main method: iteration of the state machine. Returns `true` to stop */ protected processBits(): true | undefined; /** * Process a received command * @param command command bytes (minimum length 1) */ protected processCommand(commandBuffer: Buffer): void; protected setPixcodeFromCacheEntries(): void; protected setBitsPerColor(arg: number): void; protected getBitsToRead(n: number): number; protected addPixel(): true | undefined; protected next_block(nblocks: number): void; process(byte: number): void; get ok(): boolean; protected setVideoDecryption(cipher: DvcEncryption): void; protected setFramerate(n: number): void; protected setPowerStatus(hasPower: boolean): void; protected setInfo(licensed: number, flags: number): void; protected setTsType(t: number): void; protected printString(channel: MessageChannel, data: string): void; protected noVideo(): void; protected seize(): void; protected ping(): void; protected requestResync(): void; protected exitDvc(): void; protected setScreenDimensions(x: number, y: number): void; protected renderBlock(block: Uint32Array, x: number, y: number, width: number, height: number): void; protected clearScreen(): void; protected repaintScreen(): void; protected invalidateScreen(): void; } export default DvcDecoder;