1*f6dc9357SAndroid Build Coastguard Worker // 7zEncode.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_7Z_ENCODE_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_7Z_ENCODE_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "7zCompressionMode.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../Common/CoderMixer2.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker #include "7zItem.h" 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker namespace NArchive { 13*f6dc9357SAndroid Build Coastguard Worker namespace N7z { 14*f6dc9357SAndroid Build Coastguard Worker 15*f6dc9357SAndroid Build Coastguard Worker Z7_CLASS_IMP_COM_1( 16*f6dc9357SAndroid Build Coastguard Worker CMtEncMultiProgress, 17*f6dc9357SAndroid Build Coastguard Worker ICompressProgressInfo 18*f6dc9357SAndroid Build Coastguard Worker ) 19*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<ICompressProgressInfo> _progress; 20*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_ST 21*f6dc9357SAndroid Build Coastguard Worker NWindows::NSynchronization::CCriticalSection CriticalSection; 22*f6dc9357SAndroid Build Coastguard Worker #endif 23*f6dc9357SAndroid Build Coastguard Worker 24*f6dc9357SAndroid Build Coastguard Worker public: 25*f6dc9357SAndroid Build Coastguard Worker UInt64 OutSize; 26*f6dc9357SAndroid Build Coastguard Worker CMtEncMultiProgress()27*f6dc9357SAndroid Build Coastguard Worker CMtEncMultiProgress(): OutSize(0) {} 28*f6dc9357SAndroid Build Coastguard Worker 29*f6dc9357SAndroid Build Coastguard Worker void Init(ICompressProgressInfo *progress); 30*f6dc9357SAndroid Build Coastguard Worker AddOutSize(UInt64 addOutSize)31*f6dc9357SAndroid Build Coastguard Worker void AddOutSize(UInt64 addOutSize) 32*f6dc9357SAndroid Build Coastguard Worker { 33*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_ST 34*f6dc9357SAndroid Build Coastguard Worker NWindows::NSynchronization::CCriticalSectionLock lock(CriticalSection); 35*f6dc9357SAndroid Build Coastguard Worker #endif 36*f6dc9357SAndroid Build Coastguard Worker OutSize += addOutSize; 37*f6dc9357SAndroid Build Coastguard Worker } 38*f6dc9357SAndroid Build Coastguard Worker }; 39*f6dc9357SAndroid Build Coastguard Worker 40*f6dc9357SAndroid Build Coastguard Worker 41*f6dc9357SAndroid Build Coastguard Worker class CEncoder Z7_final MY_UNCOPYABLE 42*f6dc9357SAndroid Build Coastguard Worker { 43*f6dc9357SAndroid Build Coastguard Worker #ifdef USE_MIXER_ST 44*f6dc9357SAndroid Build Coastguard Worker NCoderMixer2::CMixerST *_mixerST; 45*f6dc9357SAndroid Build Coastguard Worker #endif 46*f6dc9357SAndroid Build Coastguard Worker #ifdef USE_MIXER_MT 47*f6dc9357SAndroid Build Coastguard Worker NCoderMixer2::CMixerMT *_mixerMT; 48*f6dc9357SAndroid Build Coastguard Worker #endif 49*f6dc9357SAndroid Build Coastguard Worker 50*f6dc9357SAndroid Build Coastguard Worker NCoderMixer2::CMixer *_mixer; 51*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<IUnknown> _mixerRef; 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker CCompressionMethodMode _options; 54*f6dc9357SAndroid Build Coastguard Worker NCoderMixer2::CBindInfo _bindInfo; 55*f6dc9357SAndroid Build Coastguard Worker CRecordVector<CMethodId> _decompressionMethods; 56*f6dc9357SAndroid Build Coastguard Worker 57*f6dc9357SAndroid Build Coastguard Worker CRecordVector<UInt32> SrcIn_to_DestOut; 58*f6dc9357SAndroid Build Coastguard Worker CRecordVector<UInt32> SrcOut_to_DestIn; 59*f6dc9357SAndroid Build Coastguard Worker // CRecordVector<UInt32> DestIn_to_SrcOut; 60*f6dc9357SAndroid Build Coastguard Worker CRecordVector<UInt32> DestOut_to_SrcIn; 61*f6dc9357SAndroid Build Coastguard Worker 62*f6dc9357SAndroid Build Coastguard Worker void InitBindConv(); 63*f6dc9357SAndroid Build Coastguard Worker void SetFolder(CFolder &folder); 64*f6dc9357SAndroid Build Coastguard Worker 65*f6dc9357SAndroid Build Coastguard Worker HRESULT CreateMixerCoder(DECL_EXTERNAL_CODECS_LOC_VARS 66*f6dc9357SAndroid Build Coastguard Worker const UInt64 *inSizeForReduce); 67*f6dc9357SAndroid Build Coastguard Worker 68*f6dc9357SAndroid Build Coastguard Worker bool _constructed; 69*f6dc9357SAndroid Build Coastguard Worker public: 70*f6dc9357SAndroid Build Coastguard Worker 71*f6dc9357SAndroid Build Coastguard Worker CEncoder(const CCompressionMethodMode &options); 72*f6dc9357SAndroid Build Coastguard Worker ~CEncoder(); 73*f6dc9357SAndroid Build Coastguard Worker HRESULT EncoderConstr(); 74*f6dc9357SAndroid Build Coastguard Worker HRESULT Encode1( 75*f6dc9357SAndroid Build Coastguard Worker DECL_EXTERNAL_CODECS_LOC_VARS 76*f6dc9357SAndroid Build Coastguard Worker ISequentialInStream *inStream, 77*f6dc9357SAndroid Build Coastguard Worker // const UInt64 *inStreamSize, 78*f6dc9357SAndroid Build Coastguard Worker const UInt64 *inSizeForReduce, 79*f6dc9357SAndroid Build Coastguard Worker UInt64 expectedDataSize, 80*f6dc9357SAndroid Build Coastguard Worker CFolder &folderItem, 81*f6dc9357SAndroid Build Coastguard Worker // CRecordVector<UInt64> &coderUnpackSizes, 82*f6dc9357SAndroid Build Coastguard Worker // UInt64 &unpackSize, 83*f6dc9357SAndroid Build Coastguard Worker ISequentialOutStream *outStream, 84*f6dc9357SAndroid Build Coastguard Worker CRecordVector<UInt64> &packSizes, 85*f6dc9357SAndroid Build Coastguard Worker ICompressProgressInfo *compressProgress); 86*f6dc9357SAndroid Build Coastguard Worker 87*f6dc9357SAndroid Build Coastguard Worker void Encode_Post( 88*f6dc9357SAndroid Build Coastguard Worker UInt64 unpackSize, 89*f6dc9357SAndroid Build Coastguard Worker CRecordVector<UInt64> &coderUnpackSizes); 90*f6dc9357SAndroid Build Coastguard Worker 91*f6dc9357SAndroid Build Coastguard Worker }; 92*f6dc9357SAndroid Build Coastguard Worker 93*f6dc9357SAndroid Build Coastguard Worker }} 94*f6dc9357SAndroid Build Coastguard Worker 95*f6dc9357SAndroid Build Coastguard Worker #endif 96