Function fixedLiteralEncoder [src]

Generates a HuffmanCode corresponding to the fixed literal table

Prototype

pub fn fixedLiteralEncoder(codes: *[max_num_frequencies]Code) HuffmanEncoder

Parameters

codes: *[max_num_frequencies]Code

Source

pub fn fixedLiteralEncoder(codes: *[max_num_frequencies]Code) HuffmanEncoder { var h: HuffmanEncoder = undefined; h.codes = codes; var ch: u16 = 0; while (ch < max_num_frequencies) : (ch += 1) { var bits: u16 = undefined; var size: u16 = undefined; switch (ch) { 0...143 => { // size 8, 000110000 .. 10111111 bits = ch + 48; size = 8; }, 144...255 => { // size 9, 110010000 .. 111111111 bits = ch + 400 - 144; size = 9; }, 256...279 => { // size 7, 0000000 .. 0010111 bits = ch - 256; size = 7; }, else => { // size 8, 11000000 .. 11000111 bits = ch + 192 - 280; size = 8; }, } h.codes[ch] = .{ .code = bitReverse(u16, bits, @as(u5, @intCast(size))), .len = size }; } return h; }