structstd.compress.zstandard.types.frame[src]

Source Code

Source code
pub const frame = struct {
    pub const Kind = enum { zstandard, skippable };

    pub const Zstandard = struct {
        pub const magic_number = 0xFD2FB528;

        header: Header,
        data_blocks: []Block,
        checksum: ?u32,

        pub const Header = struct {
            descriptor: Descriptor,
            window_descriptor: ?u8,
            dictionary_id: ?u32,
            content_size: ?u64,

            pub const Descriptor = packed struct {
                dictionary_id_flag: u2,
                content_checksum_flag: bool,
                reserved: bool,
                unused: bool,
                single_segment_flag: bool,
                content_size_flag: u2,
            };
        };

        pub const Block = struct {
            pub const Header = struct {
                last_block: bool,
                block_type: Block.Type,
                block_size: u21,
            };

            pub const Type = enum(u2) {
                raw,
                rle,
                compressed,
                reserved,
            };
        };
    };

    pub const Skippable = struct {
        pub const magic_number_min = 0x184D2A50;
        pub const magic_number_max = 0x184D2A5F;

        pub const Header = struct {
            magic_number: u32,
            frame_size: u32,
        };
    };
}