UNPKG

@elgato-stream-deck/core

Version:

An npm module for interfacing with the Elgato Stream Deck

46 lines 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StreamdeckDefaultImageWriter = exports.StreamdeckOriginalImageWriter = void 0; const headerGenerator_js_1 = require("./headerGenerator.js"); class StreamdeckOriginalImageWriter { headerGenerator = new headerGenerator_js_1.StreamdeckGen1ImageHeaderGenerator(); generateFillImageWrites(props, byteBuffer) { const MAX_PACKET_SIZE = 8191; const PACKET_HEADER_LENGTH = this.headerGenerator.getFillImageCommandHeaderLength(); // The original uses larger packets, and splits the payload equally across 2 const packet1Bytes = byteBuffer.length / 2; const packet1 = new Uint8Array(MAX_PACKET_SIZE); this.headerGenerator.writeFillImageCommandHeader(packet1, props, 0x01, false, packet1Bytes); packet1.set(byteBuffer.subarray(0, packet1Bytes), PACKET_HEADER_LENGTH); const packet2 = new Uint8Array(MAX_PACKET_SIZE); this.headerGenerator.writeFillImageCommandHeader(packet2, props, 0x02, true, packet1Bytes); packet2.set(byteBuffer.subarray(packet1Bytes), PACKET_HEADER_LENGTH); return [packet1, packet2]; } } exports.StreamdeckOriginalImageWriter = StreamdeckOriginalImageWriter; class StreamdeckDefaultImageWriter { headerGenerator; constructor(headerGenerator) { this.headerGenerator = headerGenerator; } generateFillImageWrites(props, byteBuffer) { const MAX_PACKET_SIZE = 1024; const PACKET_HEADER_LENGTH = this.headerGenerator.getFillImageCommandHeaderLength(); const MAX_PAYLOAD_SIZE = MAX_PACKET_SIZE - PACKET_HEADER_LENGTH; const result = []; let remainingBytes = byteBuffer.length; for (let part = 0; remainingBytes > 0; part++) { const packet = new Uint8Array(MAX_PACKET_SIZE); const byteCount = Math.min(remainingBytes, MAX_PAYLOAD_SIZE); this.headerGenerator.writeFillImageCommandHeader(packet, props, part, remainingBytes <= MAX_PAYLOAD_SIZE, byteCount); const byteOffset = byteBuffer.length - remainingBytes; remainingBytes -= byteCount; packet.set(byteBuffer.subarray(byteOffset, byteOffset + byteCount), PACKET_HEADER_LENGTH); result.push(packet); } return result; } } exports.StreamdeckDefaultImageWriter = StreamdeckDefaultImageWriter; //# sourceMappingURL=imageWriter.js.map