• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Lzma2DecMt.h -- LZMA2 Decoder Multi-thread
2 2018-02-17 : Igor Pavlov : Public domain */
3 
4 #ifndef __LZMA2_DEC_MT_H
5 #define __LZMA2_DEC_MT_H
6 
7 #include "7zTypes.h"
8 
9 EXTERN_C_BEGIN
10 
11 typedef struct
12 {
13   size_t inBufSize_ST;
14   size_t outStep_ST;
15 
16   #ifndef _7ZIP_ST
17   unsigned numThreads;
18   size_t inBufSize_MT;
19   size_t outBlockMax;
20   size_t inBlockMax;
21   #endif
22 } CLzma2DecMtProps;
23 
24 /* init to single-thread mode */
25 void Lzma2DecMtProps_Init(CLzma2DecMtProps *p);
26 
27 
28 /* ---------- CLzma2DecMtHandle Interface ---------- */
29 
30 /* Lzma2DecMt_ * functions can return the following exit codes:
31 SRes:
32   SZ_OK           - OK
33   SZ_ERROR_MEM    - Memory allocation error
34   SZ_ERROR_PARAM  - Incorrect paramater in props
35   SZ_ERROR_WRITE  - ISeqOutStream write callback error
36   // SZ_ERROR_OUTPUT_EOF - output buffer overflow - version with (Byte *) output
37   SZ_ERROR_PROGRESS - some break from progress callback
38   SZ_ERROR_THREAD - error in multithreading functions (only for Mt version)
39 */
40 
41 typedef void * CLzma2DecMtHandle;
42 
43 CLzma2DecMtHandle Lzma2DecMt_Create(ISzAllocPtr alloc, ISzAllocPtr allocMid);
44 void Lzma2DecMt_Destroy(CLzma2DecMtHandle p);
45 
46 SRes Lzma2DecMt_Decode(CLzma2DecMtHandle p,
47     Byte prop,
48     const CLzma2DecMtProps *props,
49     ISeqOutStream *outStream,
50     const UInt64 *outDataSize, // NULL means undefined
51     int finishMode,            // 0 - partial unpacking is allowed, 1 - if lzma2 stream must be finished
52     // Byte *outBuf, size_t *outBufSize,
53     ISeqInStream *inStream,
54     // const Byte *inData, size_t inDataSize,
55 
56     // out variables:
57     UInt64 *inProcessed,
58     int *isMT,  /* out: (*isMT == 0), if single thread decoding was used */
59 
60     // UInt64 *outProcessed,
61     ICompressProgress *progress);
62 
63 
64 /* ---------- Read from CLzma2DecMtHandle Interface ---------- */
65 
66 SRes Lzma2DecMt_Init(CLzma2DecMtHandle pp,
67     Byte prop,
68     const CLzma2DecMtProps *props,
69     const UInt64 *outDataSize, int finishMode,
70     ISeqInStream *inStream);
71 
72 SRes Lzma2DecMt_Read(CLzma2DecMtHandle pp,
73     Byte *data, size_t *outSize,
74     UInt64 *inStreamProcessed);
75 
76 
77 EXTERN_C_END
78 
79 #endif
80