| 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 |