1 /* Lzma2Enc.h -- LZMA2 Encoder 2 2023-04-13 : Igor Pavlov : Public domain */ 3 4 #ifndef ZIP7_INC_LZMA2_ENC_H 5 #define ZIP7_INC_LZMA2_ENC_H 6 7 #include "LzmaEnc.h" 8 9 EXTERN_C_BEGIN 10 11 #define LZMA2_ENC_PROPS_BLOCK_SIZE_AUTO 0 12 #define LZMA2_ENC_PROPS_BLOCK_SIZE_SOLID ((UInt64)(Int64)-1) 13 14 typedef struct 15 { 16 CLzmaEncProps lzmaProps; 17 UInt64 blockSize; 18 int numBlockThreads_Reduced; 19 int numBlockThreads_Max; 20 int numTotalThreads; 21 } CLzma2EncProps; 22 23 void Lzma2EncProps_Init(CLzma2EncProps *p); 24 void Lzma2EncProps_Normalize(CLzma2EncProps *p); 25 26 /* ---------- CLzmaEnc2Handle Interface ---------- */ 27 28 /* Lzma2Enc_* functions can return the following exit codes: 29 SRes: 30 SZ_OK - OK 31 SZ_ERROR_MEM - Memory allocation error 32 SZ_ERROR_PARAM - Incorrect paramater in props 33 SZ_ERROR_WRITE - ISeqOutStream write callback error 34 SZ_ERROR_OUTPUT_EOF - output buffer overflow - version with (Byte *) output 35 SZ_ERROR_PROGRESS - some break from progress callback 36 SZ_ERROR_THREAD - error in multithreading functions (only for Mt version) 37 */ 38 39 typedef struct CLzma2Enc CLzma2Enc; 40 typedef CLzma2Enc * CLzma2EncHandle; 41 // Z7_DECLARE_HANDLE(CLzma2EncHandle) 42 43 CLzma2EncHandle Lzma2Enc_Create(ISzAllocPtr alloc, ISzAllocPtr allocBig); 44 void Lzma2Enc_Destroy(CLzma2EncHandle p); 45 SRes Lzma2Enc_SetProps(CLzma2EncHandle p, const CLzma2EncProps *props); 46 void Lzma2Enc_SetDataSize(CLzma2EncHandle p, UInt64 expectedDataSiize); 47 Byte Lzma2Enc_WriteProperties(CLzma2EncHandle p); 48 SRes Lzma2Enc_Encode2(CLzma2EncHandle p, 49 ISeqOutStreamPtr outStream, 50 Byte *outBuf, size_t *outBufSize, 51 ISeqInStreamPtr inStream, 52 const Byte *inData, size_t inDataSize, 53 ICompressProgressPtr progress); 54 55 EXTERN_C_END 56 57 #endif 58