// ProgressMt.h #ifndef __PROGRESSMT_H #define __PROGRESSMT_H #include "../../Common/MyCom.h" #include "../../Common/MyVector.h" #include "../../Windows/Synchronization.h" #include "../ICoder.h" #include "../IProgress.h" class CMtCompressProgressMixer { CMyComPtr _progress; CRecordVector InSizes; CRecordVector OutSizes; UInt64 TotalInSize; UInt64 TotalOutSize; public: NWindows::NSynchronization::CCriticalSection CriticalSection; void Init(int numItems, ICompressProgressInfo *progress); void Reinit(int index); HRESULT SetRatioInfo(int index, const UInt64 *inSize, const UInt64 *outSize); }; class CMtCompressProgress: public ICompressProgressInfo, public CMyUnknownImp { CMtCompressProgressMixer *_progress; int _index; public: void Init(CMtCompressProgressMixer *progress, int index) { _progress = progress; _index = index; } void Reinit() { _progress->Reinit(_index); } MY_UNKNOWN_IMP STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize); }; #endif