1 |
cycrow |
1 |
/* LzmaEnc.h -- LZMA Encoder
|
|
|
2 |
2008-10-04 : Igor Pavlov : Public domain */
|
|
|
3 |
|
|
|
4 |
#ifndef __LZMAENC_H
|
|
|
5 |
#define __LZMAENC_H
|
|
|
6 |
|
|
|
7 |
#include "Types.h"
|
|
|
8 |
|
|
|
9 |
#define LZMA_PROPS_SIZE 5
|
|
|
10 |
|
|
|
11 |
typedef struct _CLzmaEncProps
|
|
|
12 |
{
|
|
|
13 |
int level; /* 0 <= level <= 9 */
|
|
|
14 |
UInt32 dictSize; /* (1 << 12) <= dictSize <= (1 << 27) for 32-bit version
|
|
|
15 |
(1 << 12) <= dictSize <= (1 << 30) for 64-bit version
|
|
|
16 |
default = (1 << 24) */
|
|
|
17 |
int lc; /* 0 <= lc <= 8, default = 3 */
|
|
|
18 |
int lp; /* 0 <= lp <= 4, default = 0 */
|
|
|
19 |
int pb; /* 0 <= pb <= 4, default = 2 */
|
|
|
20 |
int algo; /* 0 - fast, 1 - normal, default = 1 */
|
|
|
21 |
int fb; /* 5 <= fb <= 273, default = 32 */
|
|
|
22 |
int btMode; /* 0 - hashChain Mode, 1 - binTree mode - normal, default = 1 */
|
|
|
23 |
int numHashBytes; /* 2, 3 or 4, default = 4 */
|
|
|
24 |
UInt32 mc; /* 1 <= mc <= (1 << 30), default = 32 */
|
|
|
25 |
unsigned writeEndMark; /* 0 - do not write EOPM, 1 - write EOPM, default = 0 */
|
|
|
26 |
int numThreads; /* 1 or 2, default = 2 */
|
|
|
27 |
} CLzmaEncProps;
|
|
|
28 |
|
|
|
29 |
void LzmaEncProps_Init(CLzmaEncProps *p);
|
|
|
30 |
void LzmaEncProps_Normalize(CLzmaEncProps *p);
|
|
|
31 |
UInt32 LzmaEncProps_GetDictSize(const CLzmaEncProps *props2);
|
|
|
32 |
|
|
|
33 |
|
|
|
34 |
/* ---------- CLzmaEncHandle Interface ---------- */
|
|
|
35 |
|
|
|
36 |
/* LzmaEnc_* functions can return the following exit codes:
|
|
|
37 |
Returns:
|
|
|
38 |
SZ_OK - OK
|
|
|
39 |
SZ_ERROR_MEM - Memory allocation error
|
|
|
40 |
SZ_ERROR_PARAM - Incorrect paramater in props
|
|
|
41 |
SZ_ERROR_WRITE - Write callback error.
|
|
|
42 |
SZ_ERROR_PROGRESS - some break from progress callback
|
|
|
43 |
SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version)
|
|
|
44 |
*/
|
|
|
45 |
|
|
|
46 |
typedef void * CLzmaEncHandle;
|
|
|
47 |
|
|
|
48 |
CLzmaEncHandle LzmaEnc_Create(ISzAlloc *alloc);
|
|
|
49 |
void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAlloc *alloc, ISzAlloc *allocBig);
|
|
|
50 |
SRes LzmaEnc_SetProps(CLzmaEncHandle p, const CLzmaEncProps *props);
|
|
|
51 |
SRes LzmaEnc_WriteProperties(CLzmaEncHandle p, Byte *properties, SizeT *size);
|
|
|
52 |
SRes LzmaEnc_Encode(CLzmaEncHandle p, ISeqOutStream *outStream, ISeqInStream *inStream,
|
|
|
53 |
ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig);
|
|
|
54 |
SRes LzmaEnc_MemEncode(CLzmaEncHandle p, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen,
|
|
|
55 |
int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig);
|
|
|
56 |
|
|
|
57 |
/* ---------- One Call Interface ---------- */
|
|
|
58 |
|
|
|
59 |
/* LzmaEncode
|
|
|
60 |
Return code:
|
|
|
61 |
SZ_OK - OK
|
|
|
62 |
SZ_ERROR_MEM - Memory allocation error
|
|
|
63 |
SZ_ERROR_PARAM - Incorrect paramater
|
|
|
64 |
SZ_ERROR_OUTPUT_EOF - output buffer overflow
|
|
|
65 |
SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version)
|
|
|
66 |
*/
|
|
|
67 |
|
|
|
68 |
SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen,
|
|
|
69 |
const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark,
|
|
|
70 |
ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig);
|
|
|
71 |
|
|
|
72 |
#endif
|