Fix sequential extraction, and include progress info
[wimlib] / src / lzx-common.c
1 #include "lzx.h"
2
3 /* LZX uses what it calls 'position slots' to represent match offsets.
4  * What this means is that a small 'position slot' number and a small
5  * offset from that slot are encoded instead of one large offset for
6  * every match.
7  * - lzx_position_base is an index to the position slot bases
8  * - lzx_extra_bits states how many bits of offset-from-base data is needed.
9  */
10 const u8 lzx_extra_bits[51] = {
11         0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
12         7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14,
13         15, 15, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
14         17, 17, 17
15 };
16
17 const u32 lzx_position_base[51] = {
18         0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384,
19         512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576,
20         32768, 49152, 65536, 98304, 131072, 196608, 262144, 393216, 524288,
21         655360, 786432, 917504, 1048576, 1179648, 1310720, 1441792, 1572864,
22         1703936, 1835008, 1966080, 2097152
23 };
24