Subversion Repositories Games.Chess Giants

Rev

Blame | Last modification | View Log | Download | RSS feed

  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
  73.