X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fcomp.h;h=a40dbca0f7ab5ef33e7e6a6602fd067ddcfc350a;hb=39c533628d784ecc6b20694bf6cc78eeb531a554;hp=7b28e511d637ac8f15aa80c9cb434186e25453e5;hpb=81ea19151423fa87b8698dd3fa8a5274066a76c2;p=wimlib diff --git a/src/comp.h b/src/comp.h index 7b28e511..a40dbca0 100644 --- a/src/comp.h +++ b/src/comp.h @@ -2,23 +2,6 @@ * comp.h * * Functions useful for compression, mainly bitstreams. - * - * Copyright (C) 2012 Eric Biggers - * - * wimlib - Library for working with WIM files - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at your option) any - * later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along - * with this library; if not, write to the Free Software Foundation, Inc., 59 - * Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _WIMLIB_COMP_H @@ -52,9 +35,9 @@ struct output_bitstream { static inline int bitstream_put_byte(struct output_bitstream *ostream, - u8 n) + u8 n) { - if (ostream->num_bytes_remaining == 0) + if (ostream->num_bytes_remaining < 1) return 1; *ostream->output = n; ostream->output++; @@ -63,11 +46,11 @@ static inline int bitstream_put_byte(struct output_bitstream *ostream, } static inline int bitstream_put_two_bytes(struct output_bitstream *ostream, - u16 n) + u16 n) { if (ostream->num_bytes_remaining < 2) return 1; - *(u16*)ostream->output = to_le16(n); + *(u16*)ostream->output = cpu_to_le16(n); ostream->output += 2; ostream->num_bytes_remaining -= 2; return 0; @@ -83,30 +66,30 @@ struct lz_params { uint max_lazy_match; uint too_far; }; - + typedef uint (*lz_record_match_t)(uint, uint, void *, void *); typedef uint (*lz_record_literal_t)(u8, void *); -extern uint lz_analyze_block(const u8 uncompressed_data[], +extern uint lz_analyze_block(const u8 uncompressed_data[], uint uncompressed_len, - u32 match_tab[], + u32 match_tab[], lz_record_match_t record_match, - lz_record_literal_t record_literal, + lz_record_literal_t record_literal, void *record_match_arg1, - void *record_match_arg2, + void *record_match_arg2, void *record_literal_arg, const struct lz_params *params); -extern int bitstream_put_bits(struct output_bitstream *ostream, +extern int bitstream_put_bits(struct output_bitstream *ostream, output_bitbuf_t bits, unsigned num_bits); extern void init_output_bitstream(struct output_bitstream *ostream, - void *data, unsigned num_bytes); + void *data, unsigned num_bytes); extern int flush_output_bitstream(struct output_bitstream *ostream); -extern void make_canonical_huffman_code(uint num_syms, uint max_codeword_len, - const u32 freq_tab[], u8 lens[], +extern void make_canonical_huffman_code(uint num_syms, uint max_codeword_len, + const u32 freq_tab[], u8 lens[], u16 codewords[]); #endif /* _WIMLIB_COMP_H */