Source code
Revision control
Copy as Markdown
Other Tools
// Bcj2Coder.h↩
↩
#ifndef __COMPRESS_BCJ2_CODER_H↩
#define __COMPRESS_BCJ2_CODER_H↩
↩
#include "../../../C/Bcj2.h"↩
↩
#include "../../Common/MyCom.h"↩
↩
#include "../ICoder.h"↩
↩
namespace NCompress {↩
namespace NBcj2 {↩
↩
class CBaseCoder↩
{↩
protected:↩
Byte *_bufs[BCJ2_NUM_STREAMS + 1];↩
UInt32 _bufsCurSizes[BCJ2_NUM_STREAMS + 1];↩
UInt32 _bufsNewSizes[BCJ2_NUM_STREAMS + 1];↩
↩
HRESULT Alloc(bool allocForOrig = true);↩
public:↩
CBaseCoder();↩
~CBaseCoder();↩
};↩
↩
↩
#ifndef EXTRACT_ONLY↩
↩
class CEncoder:↩
public ICompressCoder2,↩
public ICompressSetCoderProperties,↩
public ICompressSetBufSize,↩
public CMyUnknownImp,↩
public CBaseCoder↩
{↩
UInt32 _relatLim;↩
↩
HRESULT CodeReal(ISequentialInStream * const *inStreams, const UInt64 * const *inSizes, UInt32 numInStreams,↩
ISequentialOutStream * const *outStreams, const UInt64 * const *outSizes, UInt32 numOutStreams,↩
ICompressProgressInfo *progress);↩
↩
public:↩
MY_UNKNOWN_IMP3(ICompressCoder2, ICompressSetCoderProperties, ICompressSetBufSize)↩
↩
STDMETHOD(Code)(ISequentialInStream * const *inStreams, const UInt64 * const *inSizes, UInt32 numInStreams,↩
ISequentialOutStream * const *outStreams, const UInt64 * const *outSizes, UInt32 numOutStreams,↩
ICompressProgressInfo *progress);↩
↩
STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps);↩
↩
STDMETHOD(SetInBufSize)(UInt32 streamIndex, UInt32 size);↩
STDMETHOD(SetOutBufSize)(UInt32 streamIndex, UInt32 size);↩
↩
CEncoder();↩
~CEncoder();↩
};↩
↩
#endif↩
↩
class CDecoder:↩
public ICompressCoder2,↩
public ICompressSetFinishMode,↩
public ICompressGetInStreamProcessedSize2,↩
public ICompressSetInStream2,↩
public ISequentialInStream,↩
public ICompressSetOutStreamSize,↩
public ICompressSetBufSize,↩
public CMyUnknownImp,↩
public CBaseCoder↩
{↩
unsigned _extraReadSizes[BCJ2_NUM_STREAMS];↩
UInt64 _inStreamsProcessed[BCJ2_NUM_STREAMS];↩
HRESULT _readRes[BCJ2_NUM_STREAMS];↩
CMyComPtr<ISequentialInStream> _inStreams[BCJ2_NUM_STREAMS];↩
↩
bool _finishMode;↩
bool _outSizeDefined;↩
UInt64 _outSize;↩
UInt64 _outSize_Processed;↩
CBcj2Dec dec;↩
↩
void InitCommon();↩
// HRESULT ReadSpec();↩
↩
public:↩
MY_UNKNOWN_IMP7(↩
ICompressCoder2,↩
ICompressSetFinishMode,↩
ICompressGetInStreamProcessedSize2,↩
ICompressSetInStream2,↩
ISequentialInStream,↩
ICompressSetOutStreamSize,↩
ICompressSetBufSize↩
);↩
↩
STDMETHOD(Code)(ISequentialInStream * const *inStreams, const UInt64 * const *inSizes, UInt32 numInStreams,↩
ISequentialOutStream * const *outStreams, const UInt64 * const *outSizes, UInt32 numOutStreams,↩
ICompressProgressInfo *progress);↩
↩
STDMETHOD(SetFinishMode)(UInt32 finishMode);↩
STDMETHOD(GetInStreamProcessedSize2)(UInt32 streamIndex, UInt64 *value);↩
↩
STDMETHOD(SetInStream2)(UInt32 streamIndex, ISequentialInStream *inStream);↩
STDMETHOD(ReleaseInStream2)(UInt32 streamIndex);↩
↩
STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);↩
↩
STDMETHOD(SetOutStreamSize)(const UInt64 *outSize);↩
↩
STDMETHOD(SetInBufSize)(UInt32 streamIndex, UInt32 size);↩
STDMETHOD(SetOutBufSize)(UInt32 streamIndex, UInt32 size);↩
↩
CDecoder();↩
};↩
↩
}}↩
↩
#endif↩