1 /* XzEnc.h -- Xz Encode 2 2017-06-27 : Igor Pavlov : Public domain */ 3 4 #ifndef __XZ_ENC_H 5 #define __XZ_ENC_H 6 7 #include "Lzma2Enc.h" 8 9 #include "Xz.h" 10 11 EXTERN_C_BEGIN 12 13 14 #define XZ_PROPS__BLOCK_SIZE__AUTO LZMA2_ENC_PROPS__BLOCK_SIZE__AUTO 15 #define XZ_PROPS__BLOCK_SIZE__SOLID LZMA2_ENC_PROPS__BLOCK_SIZE__SOLID 16 17 18 typedef struct 19 { 20 UInt32 id; 21 UInt32 delta; 22 UInt32 ip; 23 int ipDefined; 24 } CXzFilterProps; 25 26 void XzFilterProps_Init(CXzFilterProps *p); 27 28 29 typedef struct 30 { 31 CLzma2EncProps lzma2Props; 32 CXzFilterProps filterProps; 33 unsigned checkId; 34 UInt64 blockSize; 35 int numBlockThreads_Reduced; 36 int numBlockThreads_Max; 37 int numTotalThreads; 38 int forceWriteSizesInHeader; 39 UInt64 reduceSize; 40 } CXzProps; 41 42 void XzProps_Init(CXzProps *p); 43 44 45 typedef void * CXzEncHandle; 46 47 CXzEncHandle XzEnc_Create(ISzAllocPtr alloc, ISzAllocPtr allocBig); 48 void XzEnc_Destroy(CXzEncHandle p); 49 SRes XzEnc_SetProps(CXzEncHandle p, const CXzProps *props); 50 void XzEnc_SetDataSize(CXzEncHandle p, UInt64 expectedDataSiize); 51 SRes XzEnc_Encode(CXzEncHandle p, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress); 52 53 SRes Xz_Encode(ISeqOutStream *outStream, ISeqInStream *inStream, 54 const CXzProps *props, ICompressProgress *progress); 55 56 SRes Xz_EncodeEmpty(ISeqOutStream *outStream); 57 58 EXTERN_C_END 59 60 #endif 61