/* Lzma2DecMt.h -- LZMA2 Decoder Multi-thread | |
2018-02-17 : Igor Pavlov : Public domain */ | |
#ifndef __LZMA2_DEC_MT_H | |
#define __LZMA2_DEC_MT_H | |
#include "7zTypes.h" | |
EXTERN_C_BEGIN | |
typedef struct | |
{ | |
size_t inBufSize_ST; | |
size_t outStep_ST; | |
#ifndef _7ZIP_ST | |
unsigned numThreads; | |
size_t inBufSize_MT; | |
size_t outBlockMax; | |
size_t inBlockMax; | |
#endif | |
} CLzma2DecMtProps; | |
/* init to single-thread mode */ | |
void Lzma2DecMtProps_Init(CLzma2DecMtProps *p); | |
/* ---------- CLzma2DecMtHandle Interface ---------- */ | |
/* Lzma2DecMt_ * 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 * CLzma2DecMtHandle; | |
CLzma2DecMtHandle Lzma2DecMt_Create(ISzAllocPtr alloc, ISzAllocPtr allocMid); | |
void Lzma2DecMt_Destroy(CLzma2DecMtHandle p); | |
SRes Lzma2DecMt_Decode(CLzma2DecMtHandle p, | |
Byte prop, | |
const CLzma2DecMtProps *props, | |
ISeqOutStream *outStream, | |
const UInt64 *outDataSize, // NULL means undefined | |
int finishMode, // 0 - partial unpacking is allowed, 1 - if lzma2 stream must be finished | |
// Byte *outBuf, size_t *outBufSize, | |
ISeqInStream *inStream, | |
// const Byte *inData, size_t inDataSize, | |
// out variables: | |
UInt64 *inProcessed, | |
int *isMT, /* out: (*isMT == 0), if single thread decoding was used */ | |
// UInt64 *outProcessed, | |
ICompressProgress *progress); | |
/* ---------- Read from CLzma2DecMtHandle Interface ---------- */ | |
SRes Lzma2DecMt_Init(CLzma2DecMtHandle pp, | |
Byte prop, | |
const CLzma2DecMtProps *props, | |
const UInt64 *outDataSize, int finishMode, | |
ISeqInStream *inStream); | |
SRes Lzma2DecMt_Read(CLzma2DecMtHandle pp, | |
Byte *data, size_t *outSize, | |
UInt64 *inStreamProcessed); | |
EXTERN_C_END | |
#endif |