X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=include%2Fwimlib%2Fcompress_common.h;h=7913a138734925aaae2a01a965390e33948fe7f7;hp=d2b6310e91534f9f3cf6d3ece57b732d7ac86c3c;hb=90f1e04a2a143876a4413577b25db60b5ba0fe97;hpb=f90b1375dd7d3b64fe823ae693083f82019a02f9 diff --git a/include/wimlib/compress_common.h b/include/wimlib/compress_common.h index d2b6310e..7913a138 100644 --- a/include/wimlib/compress_common.h +++ b/include/wimlib/compress_common.h @@ -2,9 +2,6 @@ * compress_common.h * * Header for compression code shared by multiple compression formats. - * - * The author dedicates this file to the public domain. - * You can do whatever you want with this file. */ #ifndef _WIMLIB_COMPRESS_COMMON_H @@ -12,65 +9,10 @@ #include "wimlib/types.h" -/* Variable type that can represent all possible window positions. */ -#ifndef INPUT_IDX_T_DEFINED -#define INPUT_IDX_T_DEFINED -typedef u32 input_idx_t; -#endif - -/* Structure to keep track of the current state sending bits and bytes to the - * compressed output buffer. */ -struct output_bitstream { - - /* Variable that holds up to 16 bits that haven't yet been flushed to - * the output. */ - u16 bitbuf; - - /* Number of free bits in @bitbuf; that is, 16 minus the number of valid - * bits in @bitbuf. */ - unsigned free_bits; - - /* Pointer to the start of the output buffer. */ - u8 *output_start; - - /* Position at which to write the next 16 bits. */ - u8 *bit_output; - - /* Next position to write 16 bits, after they are written to bit_output. - * This is after @next_bit_output and may be separated from @bit_output - * by literal bytes. */ - u8 *next_bit_output; - - /* Next position to write literal bytes. This is after @bit_output and - * @next_bit_output, and may be separated from them by literal bytes. - */ - u8 *output; - - /* Number of bytes remaining in the @output buffer. */ - input_idx_t bytes_remaining; - - /* Set to true if the buffer has been exhausted. */ - bool overrun; -}; - -extern void -init_output_bitstream(struct output_bitstream *ostream, - void *data, unsigned num_bytes); - -extern input_idx_t -flush_output_bitstream(struct output_bitstream *ostream); - -extern void -bitstream_put_bits(struct output_bitstream *ostream, - u32 bits, unsigned num_bits); - -extern void -bitstream_put_byte(struct output_bitstream *ostream, u8 n); - extern void make_canonical_huffman_code(unsigned num_syms, unsigned max_codeword_len, - const input_idx_t freq_tab[restrict], + const u32 freq_tab[restrict], u8 lens[restrict], u32 codewords[restrict]);