23 #include "precompiled.h"
38 #if CODEC_COMPUTE_CHECKSUM
39 return (
u32)crc32(checksum, in, (uInt)inSize);
51 #if CODEC_COMPUTE_CHECKSUM
52 return crc32(0, 0, 0);
85 virtual Status Process(
const u8* in,
size_t inSize,
u8*
out,
size_t outSize,
size_t& inConsumed,
size_t& outProduced)
87 const size_t transferSize = std::min(inSize, outSize);
88 memcpy(out, in, transferSize);
89 inConsumed = outProduced = transferSize;
141 typedef int ZEXPORT (*
ZLibFunc)(z_streamp strm,
int flush);
145 m_zs.next_in = (Byte*)in;
146 m_zs.avail_in = (uInt)inSize;
147 m_zs.next_out = (Byte*)out;
148 m_zs.avail_out = (uInt)outSize;
150 int ret = func(&
m_zs, flush);
153 if(ret == Z_STREAM_END)
160 inConsumed = inSize -
m_zs.avail_in;
161 outProduced = outSize -
m_zs.avail_out;
188 const int level = Z_BEST_SPEED;
189 const int windowBits = -MAX_WBITS;
190 const int memLevel = 9;
191 const int strategy = Z_DEFAULT_STRATEGY;
192 const int ret = deflateInit2(&
m_zs, level, Z_DEFLATED, windowBits, memLevel, strategy);
198 const int ret = deflateEnd(&
m_zs);
204 return (
size_t)deflateBound(&
m_zs, (uLong)inSize);
210 const int ret = deflateReset(&
m_zs);
214 virtual Status Process(
const u8* in,
size_t inSize,
u8*
out,
size_t outSize,
size_t& inConsumed,
size_t& outProduced)
222 const uInt availOut =
m_zs.avail_out;
227 const int ret = deflate(&
m_zs, Z_FINISH);
228 ENSURE(ret == Z_STREAM_END);
230 outProduced = size_t(availOut -
m_zs.avail_out);
245 const int windowBits = -MAX_WBITS;
246 const int ret = inflateInit2(&
m_zs, windowBits);
252 const int ret = inflateEnd(&
m_zs);
269 const int ret = inflateReset(&
m_zs);
273 virtual Status Process(
const u8* in,
size_t inSize,
u8*
out,
size_t outSize,
size_t& inConsumed,
size_t& outProduced)
Status CallStreamFunc(ZLibFunc func, int flush, const u8 *in, const size_t inSize, u8 *out, const size_t outSize, size_t &inConsumed, size_t &outProduced)
virtual ~Compressor_ZLib()
virtual ~Codec_ZLibNone()
static void out(const wchar_t *fmt,...)
PICodec CreateCodec_ZLibNone()
virtual Status Process(const u8 *in, size_t inSize, u8 *out, size_t outSize, size_t &inConsumed, size_t &outProduced)
process (i.e.
PICodec CreateDecompressor_ZLibDeflate()
int ZEXPORT(* ZLibFunc)(z_streamp strm, int flush)
#define ENSURE(expr)
ensure the expression <expr> evaluates to non-zero.
#define UNUSED2(param)
mark a function local variable or parameter as unused and avoid the corresponding compiler warning...
virtual Status Process(const u8 *in, size_t inSize, u8 *out, size_t outSize, size_t &inConsumed, size_t &outProduced)
process (i.e.
virtual ~Decompressor_ZLib()
virtual Status Process(const u8 *in, size_t inSize, u8 *out, size_t outSize, size_t &inConsumed, size_t &outProduced)
process (i.e.
virtual size_t MaxOutputSize(size_t inSize) const
virtual Status Finish(u32 &checksum, size_t &outProduced)
Flush buffers and make sure all output has been produced.
virtual size_t MaxOutputSize(size_t inSize) const
virtual size_t MaxOutputSize(size_t inSize) const
const Status INVALID_PARAM
virtual Status Reset()
clear all previous state and prepare for reuse.
static Status LibError_from_zlib(int zlib_ret)
static void WarnIfZLibError(int zlib_ret)
i64 Status
Error handling system.
u32 UpdateChecksum(u32 checksum, const u8 *in, size_t inSize) const
update a checksum to reflect the contents of a buffer.
virtual Status Finish(u32 &checksum, size_t &outProduced)
Flush buffers and make sure all output has been produced.
virtual Status Reset()
clear all previous state and prepare for reuse.
virtual Status Finish(u32 &checksum, size_t &outProduced)
Flush buffers and make sure all output has been produced.
#define WARN_RETURN(status)
shared_ptr< ICodec > PICodec
PICodec CreateCompressor_ZLibDeflate()
virtual Status Reset()
clear all previous state and prepare for reuse.