* 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
#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 {
u8 *output;
/* Number of bytes remaining in the @output buffer. */
- input_idx_t bytes_remaining;
+ u32 bytes_remaining;
/* Set to true if the buffer has been exhausted. */
bool overrun;
init_output_bitstream(struct output_bitstream *ostream,
void *data, unsigned num_bytes);
-extern input_idx_t
+extern u32
flush_output_bitstream(struct output_bitstream *ostream);
extern void
extern void
bitstream_put_byte(struct output_bitstream *ostream, u8 n);
-struct lz_params {
- unsigned min_match;
- unsigned max_match;
- unsigned max_offset;
- unsigned nice_match;
- unsigned good_match;
- unsigned max_chain_len;
- unsigned max_lazy_match;
- unsigned too_far;
-};
-
-typedef void (*lz_record_match_t)(unsigned len, unsigned offset, void *ctx);
-typedef void (*lz_record_literal_t)(u8 lit, void *ctx);
-
-extern void
-lz_analyze_block(const u8 window[restrict],
- input_idx_t window_size,
- lz_record_match_t record_match,
- lz_record_literal_t record_literal,
- void *record_ctx,
- const struct lz_params *params,
- input_idx_t prev_tab[restrict]);
-
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],
- u16 codewords[restrict]);
+ u32 codewords[restrict]);
-#endif /* _WIMLIB_COMPRESS_H */
+#endif /* _WIMLIB_COMPRESS_COMMON_H */