1 /* LzmaLib.c -- LZMA library wrapper
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
};
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 */
27 LzmaEncProps_Init(&props
);
29 props
.dictSize
= dictSize
;
34 props
.numThreads
= numThreads
;
36 return LzmaEncode(dest
, destLen
, src
, srcLen
, &props
, outProps
, outPropsSize
, 0,
37 NULL
, &g_Alloc
, &g_Alloc
);
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
)
45 return LzmaDecode(dest
, destLen
, src
, srcLen
, props
, (unsigned)propsSize
, LZMA_FINISH_ANY
, &status
, &g_Alloc
);