aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/lzmasdk/LzmaEnc.h
blob: 55c257d54d352ec8d2d2909ecb8f5e993ce29887 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*  LzmaEnc.h -- LZMA Encoder 
2017-07-27 : Igor Pavlov : Public domain */ 
 
#ifndef __LZMA_ENC_H 
#define __LZMA_ENC_H 
 
#include "7zTypes.h" 
 
EXTERN_C_BEGIN 
 
#define LZMA_PROPS_SIZE 5 
 
typedef struct _CLzmaEncProps 
{ 
  int level;       /* 0 <= level <= 9 */ 
  UInt32 dictSize; /* (1 << 12) <= dictSize <= (1 << 27) for 32-bit version 
                      (1 << 12) <= dictSize <= (3 << 29) for 64-bit version 
                      default = (1 << 24) */ 
  int lc;          /* 0 <= lc <= 8, default = 3 */ 
  int lp;          /* 0 <= lp <= 4, default = 0 */ 
  int pb;          /* 0 <= pb <= 4, default = 2 */ 
  int algo;        /* 0 - fast, 1 - normal, default = 1 */ 
  int fb;          /* 5 <= fb <= 273, default = 32 */ 
  int btMode;      /* 0 - hashChain Mode, 1 - binTree mode - normal, default = 1 */ 
  int numHashBytes; /* 2, 3 or 4, default = 4 */ 
  UInt32 mc;       /* 1 <= mc <= (1 << 30), default = 32 */ 
  unsigned writeEndMark;  /* 0 - do not write EOPM, 1 - write EOPM, default = 0 */ 
  int numThreads;  /* 1 or 2, default = 2 */ 
 
  UInt64 reduceSize; /* estimated size of data that will be compressed. default = (UInt64)(Int64)-1. 
                        Encoder uses this value to reduce dictionary size */ 
} CLzmaEncProps; 
 
void LzmaEncProps_Init(CLzmaEncProps *p); 
void LzmaEncProps_Normalize(CLzmaEncProps *p); 
UInt32 LzmaEncProps_GetDictSize(const CLzmaEncProps *props2); 
 
 
/* ---------- CLzmaEncHandle Interface ---------- */ 
 
/* LzmaEnc* functions can return the following exit codes: 
SRes: 
  SZ_OK           - OK 
  SZ_ERROR_MEM    - Memory allocation error 
  SZ_ERROR_PARAM  - Incorrect paramater in props 
  SZ_ERROR_WRITE  - ISeqOutStream write callback error 
  SZ_ERROR_OUTPUT_EOF - output buffer overflow - version with (Byte *) output 
  SZ_ERROR_PROGRESS - some break from progress callback 
  SZ_ERROR_THREAD - error in multithreading functions (only for Mt version) 
*/ 
 
typedef void * CLzmaEncHandle; 
 
CLzmaEncHandle LzmaEnc_Create(ISzAllocPtr alloc); 
void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAllocPtr alloc, ISzAllocPtr allocBig); 
 
SRes LzmaEnc_SetProps(CLzmaEncHandle p, const CLzmaEncProps *props); 
void LzmaEnc_SetDataSize(CLzmaEncHandle p, UInt64 expectedDataSiize); 
SRes LzmaEnc_WriteProperties(CLzmaEncHandle p, Byte *properties, SizeT *size); 
unsigned LzmaEnc_IsWriteEndMark(CLzmaEncHandle p); 
 
SRes LzmaEnc_Encode(CLzmaEncHandle p, ISeqOutStream *outStream, ISeqInStream *inStream, 
    ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); 
SRes LzmaEnc_MemEncode(CLzmaEncHandle p, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, 
    int writeEndMark, ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); 
 
 
/* ---------- One Call Interface ---------- */ 
 
SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, 
    const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, 
    ICompressProgress *progress, ISzAllocPtr alloc, ISzAllocPtr allocBig); 
 
EXTERN_C_END 
 
/* ---------- Streaming Interface ---------- */

SRes LzmaEnc_Prepare(CLzmaEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStream, ISzAllocPtr alloc, ISzAllocPtr allocBig);
SRes LzmaEnc_CodeOneBlock(CLzmaEncHandle pp, UInt32 maxPackSize, UInt32 maxUnpackSize);
BoolInt LzmaEnc_IsFinished(CLzmaEncHandle pp);
void LzmaEnc_Finish(CLzmaEncHandle pp);

#endif