UNPKG

image-in-browser

Version:

Package for encoding / decoding images, transforming images, applying filters, drawing primitives on images on the client side (no need for server Node.js)

34 lines 1.48 kB
import { HuffmanCodeList } from './webp-huffman-code-list.js'; import { HuffmanCode32 } from './webp-huffman-code-32.js'; import { VP8L } from './vp8l.js'; import { ArrayUtils } from '../../common/array-utils.js'; export class HuffmanTreeGroup { constructor() { this.isTrivialLiteral = false; this.literalArb = 0; this.isTrivialCode = false; this.usePackedTable = false; this.htrees = ArrayUtils.generate(VP8L.huffmanCodesPerMetaCode, () => HuffmanCodeList.sized(0)); this.packedTable = ArrayUtils.generate(VP8L.huffmanPackedTableSize, () => new HuffmanCode32()); } get(index) { return this.htrees[index]; } readSymbol(table, br) { let val = br.prefetchBits(); let tableIndex = val & HuffmanTreeGroup._huffmanTableMask; const nbits = this.htrees[table].get(tableIndex).bits - HuffmanTreeGroup._huffmanTableBits; if (nbits > 0) { br.bitPos += HuffmanTreeGroup._huffmanTableBits; val = br.prefetchBits(); tableIndex += this.htrees[table].get(tableIndex).value; tableIndex += val & ((1 << nbits) - 1); } br.bitPos += this.htrees[table].get(tableIndex).bits; return this.htrees[table].get(tableIndex).value; } } HuffmanTreeGroup._huffmanTableBits = 8; HuffmanTreeGroup._huffmanTableMask = (1 << HuffmanTreeGroup._huffmanTableBits) - 1; //# sourceMappingURL=webp-huffman-tree-group.js.map