1*f6dc9357SAndroid Build Coastguard Worker // PpmdDecoder.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_COMPRESS_PPMD_DECODER_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_COMPRESS_PPMD_DECODER_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../C/Ppmd7.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyCom.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker #include "../ICoder.h" 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker #include "../Common/CWrappers.h" 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker namespace NCompress { 15*f6dc9357SAndroid Build Coastguard Worker namespace NPpmd { 16*f6dc9357SAndroid Build Coastguard Worker 17*f6dc9357SAndroid Build Coastguard Worker class CDecoder Z7_final: 18*f6dc9357SAndroid Build Coastguard Worker public ICompressCoder, 19*f6dc9357SAndroid Build Coastguard Worker public ICompressSetDecoderProperties2, 20*f6dc9357SAndroid Build Coastguard Worker public ICompressSetFinishMode, 21*f6dc9357SAndroid Build Coastguard Worker public ICompressGetInStreamProcessedSize, 22*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_READ_FROM_CODER 23*f6dc9357SAndroid Build Coastguard Worker public ICompressSetInStream, 24*f6dc9357SAndroid Build Coastguard Worker public ICompressSetOutStreamSize, 25*f6dc9357SAndroid Build Coastguard Worker public ISequentialInStream, 26*f6dc9357SAndroid Build Coastguard Worker #endif 27*f6dc9357SAndroid Build Coastguard Worker public CMyUnknownImp 28*f6dc9357SAndroid Build Coastguard Worker { 29*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_BEGIN2(ICompressCoder) 30*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressSetDecoderProperties2) 31*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressSetFinishMode) 32*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressGetInStreamProcessedSize) 33*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_READ_FROM_CODER 34*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressSetInStream) 35*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ICompressSetOutStreamSize) 36*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ISequentialInStream) 37*f6dc9357SAndroid Build Coastguard Worker #endif 38*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_END 39*f6dc9357SAndroid Build Coastguard Worker Z7_COM_ADDREF_RELEASE 40*f6dc9357SAndroid Build Coastguard Worker 41*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressCoder) 42*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressSetDecoderProperties2) 43*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressSetFinishMode) 44*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressGetInStreamProcessedSize) 45*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_READ_FROM_CODER 46*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressSetOutStreamSize) 47*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ICompressSetInStream) 48*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ISequentialInStream) 49*f6dc9357SAndroid Build Coastguard Worker #else 50*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(SetOutStreamSize(const UInt64 *outSize)); 51*f6dc9357SAndroid Build Coastguard Worker #endif 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker Byte *_outBuf; 54*f6dc9357SAndroid Build Coastguard Worker CByteInBufWrap _inStream; 55*f6dc9357SAndroid Build Coastguard Worker CPpmd7 _ppmd; 56*f6dc9357SAndroid Build Coastguard Worker 57*f6dc9357SAndroid Build Coastguard Worker Byte _order; 58*f6dc9357SAndroid Build Coastguard Worker bool FinishStream; 59*f6dc9357SAndroid Build Coastguard Worker bool _outSizeDefined; 60*f6dc9357SAndroid Build Coastguard Worker HRESULT _res; 61*f6dc9357SAndroid Build Coastguard Worker int _status; 62*f6dc9357SAndroid Build Coastguard Worker UInt64 _outSize; 63*f6dc9357SAndroid Build Coastguard Worker UInt64 _processedSize; 64*f6dc9357SAndroid Build Coastguard Worker 65*f6dc9357SAndroid Build Coastguard Worker HRESULT CodeSpec(Byte *memStream, UInt32 size); 66*f6dc9357SAndroid Build Coastguard Worker 67*f6dc9357SAndroid Build Coastguard Worker public: 68*f6dc9357SAndroid Build Coastguard Worker 69*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_READ_FROM_CODER 70*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<ISequentialInStream> InSeqStream; 71*f6dc9357SAndroid Build Coastguard Worker #endif 72*f6dc9357SAndroid Build Coastguard Worker CDecoder()73*f6dc9357SAndroid Build Coastguard Worker CDecoder(): 74*f6dc9357SAndroid Build Coastguard Worker _outBuf(NULL), 75*f6dc9357SAndroid Build Coastguard Worker FinishStream(false), 76*f6dc9357SAndroid Build Coastguard Worker _outSizeDefined(false) 77*f6dc9357SAndroid Build Coastguard Worker { 78*f6dc9357SAndroid Build Coastguard Worker Ppmd7_Construct(&_ppmd); 79*f6dc9357SAndroid Build Coastguard Worker _ppmd.rc.dec.Stream = &_inStream.vt; 80*f6dc9357SAndroid Build Coastguard Worker } 81*f6dc9357SAndroid Build Coastguard Worker 82*f6dc9357SAndroid Build Coastguard Worker ~CDecoder(); 83*f6dc9357SAndroid Build Coastguard Worker }; 84*f6dc9357SAndroid Build Coastguard Worker 85*f6dc9357SAndroid Build Coastguard Worker }} 86*f6dc9357SAndroid Build Coastguard Worker 87*f6dc9357SAndroid Build Coastguard Worker #endif 88