repo sync | baa3858 | 2013-07-26 17:53:31 -0700 | [diff] [blame] | 1 | /* LzmaLib.c -- LZMA library wrapper
|
| 2 | 2008-08-05
|
| 3 | Igor Pavlov
|
| 4 | Public domain */
|
| 5 |
|
| 6 | #include "LzmaEnc.h"
|
| 7 | #include "LzmaDec.h"
|
| 8 | #include "Alloc.h"
|
| 9 | #include "LzmaLib.h"
|
| 10 |
|
| 11 | static void *SzAlloc(void *p, size_t size) { p = p; return MyAlloc(size); }
|
| 12 | static void SzFree(void *p, void *address) { p = p; MyFree(address); }
|
| 13 | static ISzAlloc g_Alloc = { SzAlloc, SzFree };
|
| 14 |
|
| 15 | MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen,
|
| 16 | unsigned char *outProps, size_t *outPropsSize,
|
| 17 | int level, /* 0 <= level <= 9, default = 5 */
|
| 18 | unsigned dictSize, /* use (1 << N) or (3 << N). 4 KB < dictSize <= 128 MB */
|
| 19 | int lc, /* 0 <= lc <= 8, default = 3 */
|
| 20 | int lp, /* 0 <= lp <= 4, default = 0 */
|
| 21 | int pb, /* 0 <= pb <= 4, default = 2 */
|
| 22 | int fb, /* 5 <= fb <= 273, default = 32 */
|
| 23 | int numThreads /* 1 or 2, default = 2 */
|
| 24 | )
|
| 25 | {
|
| 26 | CLzmaEncProps props;
|
| 27 | LzmaEncProps_Init(&props);
|
| 28 | props.level = level;
|
| 29 | props.dictSize = dictSize;
|
| 30 | props.lc = lc;
|
| 31 | props.lp = lp;
|
| 32 | props.pb = pb;
|
| 33 | props.fb = fb;
|
| 34 | props.numThreads = numThreads;
|
| 35 |
|
| 36 | return LzmaEncode(dest, destLen, src, srcLen, &props, outProps, outPropsSize, 0,
|
| 37 | NULL, &g_Alloc, &g_Alloc);
|
| 38 | }
|
| 39 |
|
| 40 |
|
| 41 | MY_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t *srcLen,
|
| 42 | const unsigned char *props, size_t propsSize)
|
| 43 | {
|
| 44 | ELzmaStatus status;
|
| 45 | return LzmaDecode(dest, destLen, src, srcLen, props, (unsigned)propsSize, LZMA_FINISH_ANY, &status, &g_Alloc);
|
| 46 | }
|