]> wimlib.net Git - wimlib/blob - src/lzx-common.c
mount_image.c: Implement versioned unmount messages
[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[LZX_NUM_POSITION_SLOTS] = {
11         0 , 0 , 0 , 0 , 1 ,
12         1 , 2 , 2 , 3 , 3 ,
13         4 , 4 , 5 , 5 , 6 ,
14         6 , 7 , 7 , 8 , 8 ,
15         9 , 9 , 10, 10, 11,
16         11, 12, 12, 13, 13,
17         /*14, 14, 15, 15, 16,*/
18         /*16, 17, 17, 17, 17,*/
19         /*17, 17, 17, 17, 17,*/
20         /*17, 17, 17, 17, 17,*/
21         /*17*/
22 };
23
24 const u32 lzx_position_base[LZX_NUM_POSITION_SLOTS] = {
25         0      , 1      , 2      , 3      , 4      ,
26         6      , 8      , 12     , 16     , 24     ,
27         32     , 48     , 64     , 96     , 128    ,
28         192    , 256    , 384    , 512    , 768    ,
29         1024   , 1536   , 2048   , 3072   , 4096   ,
30         6144   , 8192   , 12288  , 16384  , 24576  ,
31         /*32768  , 49152  , 65536  , 98304  , 131072 ,*/
32         /*196608 , 262144 , 393216 , 524288 , 655360 ,*/
33         /*786432 , 917504 , 1048576, 1179648, 1310720,*/
34         /*1441792, 1572864, 1703936, 1835008, 1966080,*/
35         /*2097152*/
36 };
37