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