7zEncode.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // 7zEncode.h
  2. #ifndef __7Z_ENCODE_H
  3. #define __7Z_ENCODE_H
  4. // #include "../../Common/StreamObjects.h"
  5. #include "7zCompressionMode.h"
  6. #include "../Common/CoderMixer2.h"
  7. #include "../Common/CoderMixer2MT.h"
  8. #ifdef _ST_MODE
  9. #include "../Common/CoderMixer2ST.h"
  10. #endif
  11. #include "7zItem.h"
  12. #include "../../Common/CreateCoder.h"
  13. namespace NArchive {
  14. namespace N7z {
  15. class CEncoder
  16. {
  17. NCoderMixer::CCoderMixer2MT *_mixerCoderSpec;
  18. CMyComPtr<ICompressCoder2> _mixerCoder;
  19. CObjectVector<CCoderInfo> _codersInfo;
  20. CCompressionMethodMode _options;
  21. NCoderMixer::CBindInfo _bindInfo;
  22. NCoderMixer::CBindInfo _decompressBindInfo;
  23. NCoderMixer::CBindReverseConverter *_bindReverseConverter;
  24. CRecordVector<CMethodId> _decompressionMethods;
  25. HRESULT CreateMixerCoder(DECL_EXTERNAL_CODECS_LOC_VARS
  26. const UInt64 *inSizeForReduce);
  27. bool _constructed;
  28. public:
  29. CEncoder(const CCompressionMethodMode &options);
  30. ~CEncoder();
  31. HRESULT EncoderConstr();
  32. HRESULT Encode(
  33. DECL_EXTERNAL_CODECS_LOC_VARS
  34. ISequentialInStream *inStream,
  35. const UInt64 *inStreamSize, const UInt64 *inSizeForReduce,
  36. CFolder &folderItem,
  37. ISequentialOutStream *outStream,
  38. CRecordVector<UInt64> &packSizes,
  39. ICompressProgressInfo *compressProgress);
  40. };
  41. }}
  42. #endif