* 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
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++;
}
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;
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 */