2eaf151ca0
Use specific slab caches in main program and Lzma to slightly reduce memory footprint. Fix missing hashtable counter update in allocator. Slight cleanup of repeated computation with macro in Lzma.
80 lines
2.9 KiB
C
80 lines
2.9 KiB
C
/*
|
|
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
|
|
* Use is subject to license terms.
|
|
*/
|
|
|
|
/* LzmaEnc.h -- LZMA Encoder
|
|
2008-10-04 : Igor Pavlov : Public domain */
|
|
|
|
#ifndef __LZMAENC_H
|
|
#define __LZMAENC_H
|
|
|
|
#include "Types.h"
|
|
|
|
#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 <= (1 << 30) 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 */
|
|
int normalized;
|
|
size_t litprob_sz;
|
|
} CLzmaEncProps;
|
|
|
|
extern 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:
|
|
Returns:
|
|
SZ_OK - OK
|
|
SZ_ERROR_MEM - Memory allocation error
|
|
SZ_ERROR_PARAM - Incorrect paramater in props
|
|
SZ_ERROR_WRITE - Write callback error.
|
|
SZ_ERROR_PROGRESS - some break from progress callback
|
|
SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version)
|
|
*/
|
|
|
|
typedef void * CLzmaEncHandle;
|
|
|
|
CLzmaEncHandle LzmaEnc_Create(ISzAlloc *alloc);
|
|
void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAlloc *alloc, ISzAlloc *allocBig);
|
|
SRes LzmaEnc_SetProps(CLzmaEncHandle p, const CLzmaEncProps *props);
|
|
SRes LzmaEnc_WriteProperties(CLzmaEncHandle p, Byte *properties, SizeT *size);
|
|
SRes LzmaEnc_Encode(CLzmaEncHandle p, ISeqOutStream *outStream, ISeqInStream *inStream,
|
|
ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig);
|
|
SRes LzmaEnc_MemEncode(CLzmaEncHandle p, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen,
|
|
int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig);
|
|
|
|
/* ---------- One Call Interface ---------- */
|
|
|
|
/* LzmaEncode
|
|
Return code:
|
|
SZ_OK - OK
|
|
SZ_ERROR_MEM - Memory allocation error
|
|
SZ_ERROR_PARAM - Incorrect paramater
|
|
SZ_ERROR_OUTPUT_EOF - output buffer overflow
|
|
SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version)
|
|
*/
|
|
|
|
extern SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen,
|
|
CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark,
|
|
ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig);
|
|
|
|
|
|
#endif
|