1*f6dc9357SAndroid Build Coastguard Worker // ZstdDecoder.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_ZSTD_DECODER_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_ZSTD_DECODER_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../C/ZstdDec.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyCom.h" 9*f6dc9357SAndroid Build Coastguard Worker #include "../ICoder.h" 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker namespace NCompress { 12*f6dc9357SAndroid Build Coastguard Worker namespace NZstd { 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_NO_READ_FROM_CODER 15*f6dc9357SAndroid Build Coastguard Worker #define Z7_NO_READ_FROM_CODER_ZSTD 16*f6dc9357SAndroid Build Coastguard Worker #endif 17*f6dc9357SAndroid Build Coastguard Worker 18*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_READ_FROM_CODER_ZSTD 19*f6dc9357SAndroid Build Coastguard Worker // #define Z7_NO_READ_FROM_CODER_ZSTD 20*f6dc9357SAndroid Build Coastguard Worker #endif 21*f6dc9357SAndroid Build Coastguard Worker 22*f6dc9357SAndroid Build Coastguard Worker class CDecoder Z7_final: 23*f6dc9357SAndroid Build Coastguard Worker public ICompressCoder, 24*f6dc9357SAndroid Build Coastguard Worker public ICompressSetDecoderProperties2, 25*f6dc9357SAndroid Build Coastguard Worker public ICompressSetFinishMode, 26*f6dc9357SAndroid Build Coastguard Worker public ICompressGetInStreamProcessedSize, 27*f6dc9357SAndroid Build Coastguard Worker public ICompressReadUnusedFromInBuf, 28*f6dc9357SAndroid Build Coastguard Worker public ICompressSetBufSize, 29*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_READ_FROM_CODER_ZSTD 30*f6dc9357SAndroid Build Coastguard Worker public ICompressSetInStream, 31*f6dc9357SAndroid Build Coastguard Worker public ICompressSetOutStreamSize, 32*f6dc9357SAndroid Build Coastguard Worker public ISequentialInStream, 33*f6dc9357SAndroid Build Coastguard Worker #endif 34*f6dc9357SAndroid Build Coastguard Worker public CMyUnknownImp 35*f6dc9357SAndroid Build Coastguard Worker { 36*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_BEGIN2(ICompressCoder) 37*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressSetDecoderProperties2) 38*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressSetFinishMode) 39*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressGetInStreamProcessedSize) 40*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressReadUnusedFromInBuf) 41*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressSetBufSize) 42*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_READ_FROM_CODER_ZSTD 43*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressSetInStream) 44*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressSetOutStreamSize) 45*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ISequentialInStream) 46*f6dc9357SAndroid Build Coastguard Worker #endif 47*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_END 48*f6dc9357SAndroid Build Coastguard Worker Z7_COM_ADDREF_RELEASE 49*f6dc9357SAndroid Build Coastguard Worker 50*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressCoder) 51*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressSetDecoderProperties2) 52*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressSetFinishMode) 53*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressGetInStreamProcessedSize) 54*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressReadUnusedFromInBuf) 55*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressSetBufSize) 56*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_READ_FROM_CODER_ZSTD 57*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressSetOutStreamSize) 58*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressSetInStream) 59*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ISequentialInStream) 60*f6dc9357SAndroid Build Coastguard Worker #endif 61*f6dc9357SAndroid Build Coastguard Worker 62*f6dc9357SAndroid Build Coastguard Worker HRESULT Prepare(const UInt64 *outSize); 63*f6dc9357SAndroid Build Coastguard Worker 64*f6dc9357SAndroid Build Coastguard Worker UInt32 _outStepMask; 65*f6dc9357SAndroid Build Coastguard Worker CZstdDecHandle _dec; 66*f6dc9357SAndroid Build Coastguard Worker public: 67*f6dc9357SAndroid Build Coastguard Worker UInt64 _inProcessed; 68*f6dc9357SAndroid Build Coastguard Worker CZstdDecState _state; 69*f6dc9357SAndroid Build Coastguard Worker 70*f6dc9357SAndroid Build Coastguard Worker private: 71*f6dc9357SAndroid Build Coastguard Worker UInt32 _inBufSize; 72*f6dc9357SAndroid Build Coastguard Worker UInt32 _inBufSize_Allocated; 73*f6dc9357SAndroid Build Coastguard Worker Byte *_inBuf; 74*f6dc9357SAndroid Build Coastguard Worker size_t _afterDecoding_tempPos; 75*f6dc9357SAndroid Build Coastguard Worker 76*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_READ_FROM_CODER_ZSTD 77*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<ISequentialInStream> _inStream; 78*f6dc9357SAndroid Build Coastguard Worker HRESULT _hres_Read; 79*f6dc9357SAndroid Build Coastguard Worker HRESULT _hres_Decode; 80*f6dc9357SAndroid Build Coastguard Worker UInt64 _writtenSize; 81*f6dc9357SAndroid Build Coastguard Worker bool _readWasFinished; 82*f6dc9357SAndroid Build Coastguard Worker bool _wasFinished; 83*f6dc9357SAndroid Build Coastguard Worker #endif 84*f6dc9357SAndroid Build Coastguard Worker 85*f6dc9357SAndroid Build Coastguard Worker public: 86*f6dc9357SAndroid Build Coastguard Worker bool FinishMode; 87*f6dc9357SAndroid Build Coastguard Worker Byte DisableHash; 88*f6dc9357SAndroid Build Coastguard Worker CZstdDecResInfo ResInfo; 89*f6dc9357SAndroid Build Coastguard Worker 90*f6dc9357SAndroid Build Coastguard Worker HRESULT GetFinishResult(); 91*f6dc9357SAndroid Build Coastguard Worker 92*f6dc9357SAndroid Build Coastguard Worker CDecoder(); 93*f6dc9357SAndroid Build Coastguard Worker ~CDecoder(); 94*f6dc9357SAndroid Build Coastguard Worker }; 95*f6dc9357SAndroid Build Coastguard Worker 96*f6dc9357SAndroid Build Coastguard Worker }} 97*f6dc9357SAndroid Build Coastguard Worker 98*f6dc9357SAndroid Build Coastguard Worker #endif 99