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