struct compressed_block [src]

Alias for std.compress.zstandard.types.compressed_block

Members

Source

pub const compressed_block = struct { pub const LiteralsSection = struct { header: Header, huffman_tree: ?HuffmanTree, streams: Streams, pub const Streams = union(enum) { one: []const u8, four: [4][]const u8, }; pub const Header = struct { block_type: BlockType, size_format: u2, regenerated_size: u20, compressed_size: ?u18, }; pub const BlockType = enum(u2) { raw, rle, compressed, treeless, }; pub const HuffmanTree = struct { max_bit_count: u4, symbol_count_minus_one: u8, nodes: [256]PrefixedSymbol, pub const PrefixedSymbol = struct { symbol: u8, prefix: u16, weight: u4, }; pub const Result = union(enum) { symbol: u8, index: usize, }; pub fn query(self: HuffmanTree, index: usize, prefix: u16) error{NotFound}!Result { var node = self.nodes[index]; const weight = node.weight; var i: usize = index; while (node.weight == weight) { if (node.prefix == prefix) return Result{ .symbol = node.symbol }; if (i == 0) return error.NotFound; i -= 1; node = self.nodes[i]; } return Result{ .index = i }; } pub fn weightToBitCount(weight: u4, max_bit_count: u4) u4 { return if (weight == 0) 0 else ((max_bit_count + 1) - weight); } }; pub const StreamCount = enum { one, four }; pub fn streamCount(size_format: u2, block_type: BlockType) StreamCount { return switch (block_type) { .raw, .rle => .one, .compressed, .treeless => if (size_format == 0) .one else .four, }; } }; pub const SequencesSection = struct { header: SequencesSection.Header, literals_length_table: Table, offset_table: Table, match_length_table: Table, pub const Header = struct { sequence_count: u24, match_lengths: Mode, offsets: Mode, literal_lengths: Mode, pub const Mode = enum(u2) { predefined, rle, fse, repeat, }; }; }; pub const Table = union(enum) { fse: []const Fse, rle: u8, pub const Fse = struct { symbol: u8, baseline: u16, bits: u8, }; }; pub const literals_length_code_table = [36]struct { u32, u5 }{ .{ 0, 0 }, .{ 1, 0 }, .{ 2, 0 }, .{ 3, 0 }, .{ 4, 0 }, .{ 5, 0 }, .{ 6, 0 }, .{ 7, 0 }, .{ 8, 0 }, .{ 9, 0 }, .{ 10, 0 }, .{ 11, 0 }, .{ 12, 0 }, .{ 13, 0 }, .{ 14, 0 }, .{ 15, 0 }, .{ 16, 1 }, .{ 18, 1 }, .{ 20, 1 }, .{ 22, 1 }, .{ 24, 2 }, .{ 28, 2 }, .{ 32, 3 }, .{ 40, 3 }, .{ 48, 4 }, .{ 64, 6 }, .{ 128, 7 }, .{ 256, 8 }, .{ 512, 9 }, .{ 1024, 10 }, .{ 2048, 11 }, .{ 4096, 12 }, .{ 8192, 13 }, .{ 16384, 14 }, .{ 32768, 15 }, .{ 65536, 16 }, }; pub const match_length_code_table = [53]struct { u32, u5 }{ .{ 3, 0 }, .{ 4, 0 }, .{ 5, 0 }, .{ 6, 0 }, .{ 7, 0 }, .{ 8, 0 }, .{ 9, 0 }, .{ 10, 0 }, .{ 11, 0 }, .{ 12, 0 }, .{ 13, 0 }, .{ 14, 0 }, .{ 15, 0 }, .{ 16, 0 }, .{ 17, 0 }, .{ 18, 0 }, .{ 19, 0 }, .{ 20, 0 }, .{ 21, 0 }, .{ 22, 0 }, .{ 23, 0 }, .{ 24, 0 }, .{ 25, 0 }, .{ 26, 0 }, .{ 27, 0 }, .{ 28, 0 }, .{ 29, 0 }, .{ 30, 0 }, .{ 31, 0 }, .{ 32, 0 }, .{ 33, 0 }, .{ 34, 0 }, .{ 35, 1 }, .{ 37, 1 }, .{ 39, 1 }, .{ 41, 1 }, .{ 43, 2 }, .{ 47, 2 }, .{ 51, 3 }, .{ 59, 3 }, .{ 67, 4 }, .{ 83, 4 }, .{ 99, 5 }, .{ 131, 7 }, .{ 259, 8 }, .{ 515, 9 }, .{ 1027, 10 }, .{ 2051, 11 }, .{ 4099, 12 }, .{ 8195, 13 }, .{ 16387, 14 }, .{ 32771, 15 }, .{ 65539, 16 }, }; pub const literals_length_default_distribution = [36]i16{ 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, -1, -1, -1, -1, }; pub const match_lengths_default_distribution = [53]i16{ 1, 4, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, }; pub const offset_codes_default_distribution = [29]i16{ 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, }; pub const predefined_literal_fse_table = Table{ .fse = &[64]Table.Fse{ .{ .symbol = 0, .bits = 4, .baseline = 0 }, .{ .symbol = 0, .bits = 4, .baseline = 16 }, .{ .symbol = 1, .bits = 5, .baseline = 32 }, .{ .symbol = 3, .bits = 5, .baseline = 0 }, .{ .symbol = 4, .bits = 5, .baseline = 0 }, .{ .symbol = 6, .bits = 5, .baseline = 0 }, .{ .symbol = 7, .bits = 5, .baseline = 0 }, .{ .symbol = 9, .bits = 5, .baseline = 0 }, .{ .symbol = 10, .bits = 5, .baseline = 0 }, .{ .symbol = 12, .bits = 5, .baseline = 0 }, .{ .symbol = 14, .bits = 6, .baseline = 0 }, .{ .symbol = 16, .bits = 5, .baseline = 0 }, .{ .symbol = 18, .bits = 5, .baseline = 0 }, .{ .symbol = 19, .bits = 5, .baseline = 0 }, .{ .symbol = 21, .bits = 5, .baseline = 0 }, .{ .symbol = 22, .bits = 5, .baseline = 0 }, .{ .symbol = 24, .bits = 5, .baseline = 0 }, .{ .symbol = 25, .bits = 5, .baseline = 32 }, .{ .symbol = 26, .bits = 5, .baseline = 0 }, .{ .symbol = 27, .bits = 6, .baseline = 0 }, .{ .symbol = 29, .bits = 6, .baseline = 0 }, .{ .symbol = 31, .bits = 6, .baseline = 0 }, .{ .symbol = 0, .bits = 4, .baseline = 32 }, .{ .symbol = 1, .bits = 4, .baseline = 0 }, .{ .symbol = 2, .bits = 5, .baseline = 0 }, .{ .symbol = 4, .bits = 5, .baseline = 32 }, .{ .symbol = 5, .bits = 5, .baseline = 0 }, .{ .symbol = 7, .bits = 5, .baseline = 32 }, .{ .symbol = 8, .bits = 5, .baseline = 0 }, .{ .symbol = 10, .bits = 5, .baseline = 32 }, .{ .symbol = 11, .bits = 5, .baseline = 0 }, .{ .symbol = 13, .bits = 6, .baseline = 0 }, .{ .symbol = 16, .bits = 5, .baseline = 32 }, .{ .symbol = 17, .bits = 5, .baseline = 0 }, .{ .symbol = 19, .bits = 5, .baseline = 32 }, .{ .symbol = 20, .bits = 5, .baseline = 0 }, .{ .symbol = 22, .bits = 5, .baseline = 32 }, .{ .symbol = 23, .bits = 5, .baseline = 0 }, .{ .symbol = 25, .bits = 4, .baseline = 0 }, .{ .symbol = 25, .bits = 4, .baseline = 16 }, .{ .symbol = 26, .bits = 5, .baseline = 32 }, .{ .symbol = 28, .bits = 6, .baseline = 0 }, .{ .symbol = 30, .bits = 6, .baseline = 0 }, .{ .symbol = 0, .bits = 4, .baseline = 48 }, .{ .symbol = 1, .bits = 4, .baseline = 16 }, .{ .symbol = 2, .bits = 5, .baseline = 32 }, .{ .symbol = 3, .bits = 5, .baseline = 32 }, .{ .symbol = 5, .bits = 5, .baseline = 32 }, .{ .symbol = 6, .bits = 5, .baseline = 32 }, .{ .symbol = 8, .bits = 5, .baseline = 32 }, .{ .symbol = 9, .bits = 5, .baseline = 32 }, .{ .symbol = 11, .bits = 5, .baseline = 32 }, .{ .symbol = 12, .bits = 5, .baseline = 32 }, .{ .symbol = 15, .bits = 6, .baseline = 0 }, .{ .symbol = 17, .bits = 5, .baseline = 32 }, .{ .symbol = 18, .bits = 5, .baseline = 32 }, .{ .symbol = 20, .bits = 5, .baseline = 32 }, .{ .symbol = 21, .bits = 5, .baseline = 32 }, .{ .symbol = 23, .bits = 5, .baseline = 32 }, .{ .symbol = 24, .bits = 5, .baseline = 32 }, .{ .symbol = 35, .bits = 6, .baseline = 0 }, .{ .symbol = 34, .bits = 6, .baseline = 0 }, .{ .symbol = 33, .bits = 6, .baseline = 0 }, .{ .symbol = 32, .bits = 6, .baseline = 0 }, }, }; pub const predefined_match_fse_table = Table{ .fse = &[64]Table.Fse{ .{ .symbol = 0, .bits = 6, .baseline = 0 }, .{ .symbol = 1, .bits = 4, .baseline = 0 }, .{ .symbol = 2, .bits = 5, .baseline = 32 }, .{ .symbol = 3, .bits = 5, .baseline = 0 }, .{ .symbol = 5, .bits = 5, .baseline = 0 }, .{ .symbol = 6, .bits = 5, .baseline = 0 }, .{ .symbol = 8, .bits = 5, .baseline = 0 }, .{ .symbol = 10, .bits = 6, .baseline = 0 }, .{ .symbol = 13, .bits = 6, .baseline = 0 }, .{ .symbol = 16, .bits = 6, .baseline = 0 }, .{ .symbol = 19, .bits = 6, .baseline = 0 }, .{ .symbol = 22, .bits = 6, .baseline = 0 }, .{ .symbol = 25, .bits = 6, .baseline = 0 }, .{ .symbol = 28, .bits = 6, .baseline = 0 }, .{ .symbol = 31, .bits = 6, .baseline = 0 }, .{ .symbol = 33, .bits = 6, .baseline = 0 }, .{ .symbol = 35, .bits = 6, .baseline = 0 }, .{ .symbol = 37, .bits = 6, .baseline = 0 }, .{ .symbol = 39, .bits = 6, .baseline = 0 }, .{ .symbol = 41, .bits = 6, .baseline = 0 }, .{ .symbol = 43, .bits = 6, .baseline = 0 }, .{ .symbol = 45, .bits = 6, .baseline = 0 }, .{ .symbol = 1, .bits = 4, .baseline = 16 }, .{ .symbol = 2, .bits = 4, .baseline = 0 }, .{ .symbol = 3, .bits = 5, .baseline = 32 }, .{ .symbol = 4, .bits = 5, .baseline = 0 }, .{ .symbol = 6, .bits = 5, .baseline = 32 }, .{ .symbol = 7, .bits = 5, .baseline = 0 }, .{ .symbol = 9, .bits = 6, .baseline = 0 }, .{ .symbol = 12, .bits = 6, .baseline = 0 }, .{ .symbol = 15, .bits = 6, .baseline = 0 }, .{ .symbol = 18, .bits = 6, .baseline = 0 }, .{ .symbol = 21, .bits = 6, .baseline = 0 }, .{ .symbol = 24, .bits = 6, .baseline = 0 }, .{ .symbol = 27, .bits = 6, .baseline = 0 }, .{ .symbol = 30, .bits = 6, .baseline = 0 }, .{ .symbol = 32, .bits = 6, .baseline = 0 }, .{ .symbol = 34, .bits = 6, .baseline = 0 }, .{ .symbol = 36, .bits = 6, .baseline = 0 }, .{ .symbol = 38, .bits = 6, .baseline = 0 }, .{ .symbol = 40, .bits = 6, .baseline = 0 }, .{ .symbol = 42, .bits = 6, .baseline = 0 }, .{ .symbol = 44, .bits = 6, .baseline = 0 }, .{ .symbol = 1, .bits = 4, .baseline = 32 }, .{ .symbol = 1, .bits = 4, .baseline = 48 }, .{ .symbol = 2, .bits = 4, .baseline = 16 }, .{ .symbol = 4, .bits = 5, .baseline = 32 }, .{ .symbol = 5, .bits = 5, .baseline = 32 }, .{ .symbol = 7, .bits = 5, .baseline = 32 }, .{ .symbol = 8, .bits = 5, .baseline = 32 }, .{ .symbol = 11, .bits = 6, .baseline = 0 }, .{ .symbol = 14, .bits = 6, .baseline = 0 }, .{ .symbol = 17, .bits = 6, .baseline = 0 }, .{ .symbol = 20, .bits = 6, .baseline = 0 }, .{ .symbol = 23, .bits = 6, .baseline = 0 }, .{ .symbol = 26, .bits = 6, .baseline = 0 }, .{ .symbol = 29, .bits = 6, .baseline = 0 }, .{ .symbol = 52, .bits = 6, .baseline = 0 }, .{ .symbol = 51, .bits = 6, .baseline = 0 }, .{ .symbol = 50, .bits = 6, .baseline = 0 }, .{ .symbol = 49, .bits = 6, .baseline = 0 }, .{ .symbol = 48, .bits = 6, .baseline = 0 }, .{ .symbol = 47, .bits = 6, .baseline = 0 }, .{ .symbol = 46, .bits = 6, .baseline = 0 }, }, }; pub const predefined_offset_fse_table = Table{ .fse = &[32]Table.Fse{ .{ .symbol = 0, .bits = 5, .baseline = 0 }, .{ .symbol = 6, .bits = 4, .baseline = 0 }, .{ .symbol = 9, .bits = 5, .baseline = 0 }, .{ .symbol = 15, .bits = 5, .baseline = 0 }, .{ .symbol = 21, .bits = 5, .baseline = 0 }, .{ .symbol = 3, .bits = 5, .baseline = 0 }, .{ .symbol = 7, .bits = 4, .baseline = 0 }, .{ .symbol = 12, .bits = 5, .baseline = 0 }, .{ .symbol = 18, .bits = 5, .baseline = 0 }, .{ .symbol = 23, .bits = 5, .baseline = 0 }, .{ .symbol = 5, .bits = 5, .baseline = 0 }, .{ .symbol = 8, .bits = 4, .baseline = 0 }, .{ .symbol = 14, .bits = 5, .baseline = 0 }, .{ .symbol = 20, .bits = 5, .baseline = 0 }, .{ .symbol = 2, .bits = 5, .baseline = 0 }, .{ .symbol = 7, .bits = 4, .baseline = 16 }, .{ .symbol = 11, .bits = 5, .baseline = 0 }, .{ .symbol = 17, .bits = 5, .baseline = 0 }, .{ .symbol = 22, .bits = 5, .baseline = 0 }, .{ .symbol = 4, .bits = 5, .baseline = 0 }, .{ .symbol = 8, .bits = 4, .baseline = 16 }, .{ .symbol = 13, .bits = 5, .baseline = 0 }, .{ .symbol = 19, .bits = 5, .baseline = 0 }, .{ .symbol = 1, .bits = 5, .baseline = 0 }, .{ .symbol = 6, .bits = 4, .baseline = 16 }, .{ .symbol = 10, .bits = 5, .baseline = 0 }, .{ .symbol = 16, .bits = 5, .baseline = 0 }, .{ .symbol = 28, .bits = 5, .baseline = 0 }, .{ .symbol = 27, .bits = 5, .baseline = 0 }, .{ .symbol = 26, .bits = 5, .baseline = 0 }, .{ .symbol = 25, .bits = 5, .baseline = 0 }, .{ .symbol = 24, .bits = 5, .baseline = 0 }, }, }; pub const start_repeated_offset_1 = 1; pub const start_repeated_offset_2 = 4; pub const start_repeated_offset_3 = 8; pub const table_accuracy_log_max = struct { pub const literal = 9; pub const match = 9; pub const offset = 8; }; pub const table_symbol_count_max = struct { pub const literal = 36; pub const match = 53; pub const offset = 32; }; pub const default_accuracy_log = struct { pub const literal = 6; pub const match = 6; pub const offset = 5; }; pub const table_size_max = struct { pub const literal = 1 << table_accuracy_log_max.literal; pub const match = 1 << table_accuracy_log_max.match; pub const offset = 1 << table_accuracy_log_max.offset; }; }