/* LzmaLib.h -- LZMA library interface
2013-01-18 : Igor Pavlov : Public domain */
#ifndef __LZMA_LIB_H
#define __LZMA_LIB_H
#include "7zTypes.h"
EXTERN_C_BEGIN
#define MY_STDAPI int MY_STD_CALL
#define LZMA_PROPS_SIZE 5
/*
RAM requirements for LZMA :
for compression : ( dictSize * 11 . 5 + 6 MB ) + state_size
for decompression : dictSize + state_size
state_size = ( 4 + ( 1 . 5 < < ( lc + lp ) ) ) KB
by default ( lc = 3 , lp = 0 ) , state_size = 16 KB .
LZMA properties ( 5 bytes ) format
Offset Size Description
0 1 lc , lp and pb in encoded form .
1 4 dictSize ( little endian ) .
*/
/*
LzmaCompress
- - - - - - - - - - - -
outPropsSize -
In : the pointer to the size of outProps buffer ; * outPropsSize = LZMA_PROPS_SIZE = 5 .
Out : the pointer to the size of written properties in outProps buffer ; * outPropsSize = LZMA_PROPS_SIZE = 5 .
LZMA Encoder will use defult values for any parameter , if it is
- 1 for any from : level , loc , lp , pb , fb , numThreads
0 for dictSize
level - compression level : 0 < = level < = 9 ;
level dictSize algo fb
0 : 16 KB 0 32
1 : 64 KB 0 32
2 : 256 KB 0 32
3 : 1 MB 0 32
4 : 4 MB 0 32
5 : 16 MB 1 32
6 : 32 MB 1 32
7 + : 64 MB 1 64
The default value for " level " is 5 .
algo = 0 means fast method
algo = 1 means normal method
dictSize - The dictionary size in bytes . The maximum value is
128 MB = ( 1 < < 27 ) bytes for 32 - bit version
1 GB = ( 1 < < 30 ) bytes for 64 - bit version
The default value is 16 MB = ( 1 < < 24 ) bytes .
It ' s recommended to use the dictionary that is larger than 4 KB and
that can be calculated as ( 1 < < N ) or ( 3 < < N ) sizes .
lc - The number of literal context bits ( high bits of previous literal ) .
It can be in the range from 0 to 8 . The default value is 3 .
Sometimes lc = 4 gives the gain for big files .
lp - The number of literal pos bits ( low bits of current position for literals ) .
It can be in the range from 0 to 4 . The default value is 0 .
The lp switch is intended for periodical data when the period is equal to 2 ^ lp .
For example , for 32 - bit ( 4 bytes ) periodical data you can use lp = 2 . Often it ' s
better to set lc = 0 , if you change lp switch .
pb - The number of pos bits ( low bits of current position ) .
It can be in the range from 0 to 4 . The default value is 2 .
The pb switch is intended for periodical data when the period is equal 2 ^ pb .
fb - Word size ( the number of fast bytes ) .
It can be in the range from 5 to 273 . The default value is 32 .
Usually , a big number gives a little bit better compression ratio and
slower compression process .
numThreads - The number of thereads . 1 or 2 . The default value is 2 .
Fast mode ( algo = 0 ) can use only 1 thread .
Out :
destLen - processed output size
Returns :
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 )
*/
MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen,
unsigned char *outProps, size_t *outPropsSize, /* *outPropsSize must be = 5 */
int level, /* 0 <= level <= 9, default = 5 */
unsigned dictSize, /* 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 fb, /* 5 <= fb <= 273, default = 32 */
int numThreads /* 1 or 2, default = 2 */
);
/*
LzmaUncompress
- - - - - - - - - - - - - -
In :
dest - output data
destLen - output data size
src - input data
srcLen - input data size
Out :
destLen - processed output size
srcLen - processed input size
Returns :
SZ_OK - OK
SZ_ERROR_DATA - Data error
SZ_ERROR_MEM - Memory allocation arror
SZ_ERROR_UNSUPPORTED - Unsupported properties
SZ_ERROR_INPUT_EOF - it needs more bytes in input buffer ( src )
*/
MY_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, SizeT *srcLen,
const unsigned char *props, size_t propsSize);
EXTERN_C_END
#endif
Messung V0.5 in Prozent C=92 H=100 G=95
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-08-24)
¤
*© Formatika GbR, Deutschland