Source code
Revision control
Copy as Markdown
Other Tools
// 7zEncode.h↩
↩
#ifndef __7Z_ENCODE_H↩
#define __7Z_ENCODE_H↩
↩
#include "7zCompressionMode.h"↩
↩
#include "../Common/CoderMixer2.h"↩
↩
#include "7zItem.h"↩
↩
namespace NArchive {↩
namespace N7z {↩
↩
class CMtEncMultiProgress:↩
public ICompressProgressInfo,↩
public CMyUnknownImp↩
{↩
CMyComPtr<ICompressProgressInfo> _progress;↩
#ifndef _7ZIP_ST↩
NWindows::NSynchronization::CCriticalSection CriticalSection;↩
#endif↩
↩
public:↩
UInt64 OutSize;↩
↩
CMtEncMultiProgress(): OutSize(0) {}↩
↩
void Init(ICompressProgressInfo *progress);↩
↩
void AddOutSize(UInt64 addOutSize)↩
{↩
#ifndef _7ZIP_ST↩
NWindows::NSynchronization::CCriticalSectionLock lock(CriticalSection);↩
#endif↩
OutSize += addOutSize;↩
}↩
↩
MY_UNKNOWN_IMP1(ICompressProgressInfo)↩
↩
STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize);↩
};↩
↩
class CEncoder↩
{↩
#ifdef USE_MIXER_ST↩
NCoderMixer2::CMixerST *_mixerST;↩
#endif↩
#ifdef USE_MIXER_MT↩
NCoderMixer2::CMixerMT *_mixerMT;↩
#endif↩
↩
NCoderMixer2::CMixer *_mixer;↩
CMyComPtr<IUnknown> _mixerRef;↩
↩
CCompressionMethodMode _options;↩
NCoderMixer2::CBindInfo _bindInfo;↩
CRecordVector<CMethodId> _decompressionMethods;↩
↩
CRecordVector<UInt32> _SrcIn_to_DestOut;↩
CRecordVector<UInt32> _SrcOut_to_DestIn;↩
// CRecordVector<UInt32> _DestIn_to_SrcOut;↩
CRecordVector<UInt32> _DestOut_to_SrcIn;↩
↩
void InitBindConv();↩
void SetFolder(CFolder &folder);↩
↩
HRESULT CreateMixerCoder(DECL_EXTERNAL_CODECS_LOC_VARS↩
const UInt64 *inSizeForReduce);↩
↩
bool _constructed;↩
public:↩
↩
CEncoder(const CCompressionMethodMode &options);↩
~CEncoder();↩
HRESULT EncoderConstr();↩
HRESULT Encode(↩
DECL_EXTERNAL_CODECS_LOC_VARS↩
ISequentialInStream *inStream,↩
// const UInt64 *inStreamSize,↩
const UInt64 *inSizeForReduce,↩
CFolder &folderItem,↩
CRecordVector<UInt64> &coderUnpackSizes,↩
UInt64 &unpackSize,↩
ISequentialOutStream *outStream,↩
CRecordVector<UInt64> &packSizes,↩
ICompressProgressInfo *compressProgress);↩
};↩
↩
}}↩
↩
#endif↩