UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

46 lines (42 loc) 1.25 kB
/** * * @param {Uint8Array} codeLengths * @param {Uint8Array} values * @return {[]} */ export function buildHuffmanTable(codeLengths, values) { let k = 0; const code = []; let i, j, length = 16; while (length > 0 && !codeLengths[length - 1]) { length--; } code.push({ children: [], index: 0 }); let p = code[0], q; for (i = 0; i < length; i++) { for (j = 0; j < codeLengths[i]; j++) { p = code.pop(); p.children[p.index] = values[k]; while (p.index > 0) { if (code.length === 0) throw new Error('Could not recreate Huffman Table'); p = code.pop(); } p.index++; code.push(p); while (code.length <= i) { code.push(q = { children: [], index: 0 }); p.children[p.index] = q.children; p = q; } k++; } if (i + 1 < length) { // p here points to last code code.push(q = { children: [], index: 0 }); p.children[p.index] = q.children; p = q; } } return code[0].children; }