c10cf1a0f2cd0c42ccfd9c3b7c165e49bcad6a85
[pcsx_rearmed.git] / deps / lzma-16.04 / C / LzmaLib.c
1 /* LzmaLib.c -- LZMA library wrapper\r
2 2015-06-13 : Igor Pavlov : Public domain */\r
3 \r
4 #include "Alloc.h"\r
5 #include "LzmaDec.h"\r
6 #include "LzmaEnc.h"\r
7 #include "LzmaLib.h"\r
8 \r
9 MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen,\r
10   unsigned char *outProps, size_t *outPropsSize,\r
11   int level, /* 0 <= level <= 9, default = 5 */\r
12   unsigned dictSize, /* use (1 << N) or (3 << N). 4 KB < dictSize <= 128 MB */\r
13   int lc, /* 0 <= lc <= 8, default = 3  */\r
14   int lp, /* 0 <= lp <= 4, default = 0  */\r
15   int pb, /* 0 <= pb <= 4, default = 2  */\r
16   int fb,  /* 5 <= fb <= 273, default = 32 */\r
17   int numThreads /* 1 or 2, default = 2 */\r
18 )\r
19 {\r
20   CLzmaEncProps props;\r
21   LzmaEncProps_Init(&props);\r
22   props.level = level;\r
23   props.dictSize = dictSize;\r
24   props.lc = lc;\r
25   props.lp = lp;\r
26   props.pb = pb;\r
27   props.fb = fb;\r
28   props.numThreads = numThreads;\r
29 \r
30   return LzmaEncode(dest, destLen, src, srcLen, &props, outProps, outPropsSize, 0,\r
31       NULL, &g_Alloc, &g_Alloc);\r
32 }\r
33 \r
34 \r
35 MY_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t *srcLen,\r
36   const unsigned char *props, size_t propsSize)\r
37 {\r
38   ELzmaStatus status;\r
39   return LzmaDecode(dest, destLen, src, srcLen, props, (unsigned)propsSize, LZMA_FINISH_ANY, &status, &g_Alloc);\r
40 }\r