ZlibCompressor: Allow setting the compression level
This commit is contained in:
@@ -27,14 +27,15 @@ public:
|
|||||||
ZlibCompressor(BDataOutput* output);
|
ZlibCompressor(BDataOutput* output);
|
||||||
~ZlibCompressor();
|
~ZlibCompressor();
|
||||||
|
|
||||||
status_t Init();
|
status_t Init(int compressionLevel = Z_BEST_COMPRESSION);
|
||||||
status_t CompressNext(const void* input,
|
status_t CompressNext(const void* input,
|
||||||
size_t inputSize);
|
size_t inputSize);
|
||||||
status_t Finish();
|
status_t Finish();
|
||||||
|
|
||||||
static status_t CompressSingleBuffer(const void* input,
|
static status_t CompressSingleBuffer(const void* input,
|
||||||
size_t inputSize, void* output,
|
size_t inputSize, void* output,
|
||||||
size_t outputSize, size_t& _compressedSize);
|
size_t outputSize, size_t& _compressedSize,
|
||||||
|
int compressionLevel = Z_BEST_COMPRESSION);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
z_stream fStream;
|
z_stream fStream;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ ZlibCompressor::~ZlibCompressor()
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ZlibCompressor::Init()
|
ZlibCompressor::Init(int compressionLevel)
|
||||||
{
|
{
|
||||||
// initialize the stream
|
// initialize the stream
|
||||||
fStream.next_in = NULL;
|
fStream.next_in = NULL;
|
||||||
@@ -56,7 +56,7 @@ ZlibCompressor::Init()
|
|||||||
fStream.adler = 0;
|
fStream.adler = 0;
|
||||||
fStream.reserved = 0;
|
fStream.reserved = 0;
|
||||||
|
|
||||||
int zlibError = deflateInit(&fStream, Z_BEST_COMPRESSION);
|
int zlibError = deflateInit(&fStream, compressionLevel);
|
||||||
if (zlibError != Z_OK)
|
if (zlibError != Z_OK)
|
||||||
return TranslateZlibError(zlibError);
|
return TranslateZlibError(zlibError);
|
||||||
|
|
||||||
@@ -128,7 +128,8 @@ ZlibCompressor::Finish()
|
|||||||
|
|
||||||
/*static*/ status_t
|
/*static*/ status_t
|
||||||
ZlibCompressor::CompressSingleBuffer(const void* input, size_t inputSize,
|
ZlibCompressor::CompressSingleBuffer(const void* input, size_t inputSize,
|
||||||
void* output, size_t outputSize, size_t& _compressedSize)
|
void* output, size_t outputSize, size_t& _compressedSize,
|
||||||
|
int compressionLevel)
|
||||||
{
|
{
|
||||||
if (inputSize == 0 || outputSize == 0)
|
if (inputSize == 0 || outputSize == 0)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
@@ -151,7 +152,7 @@ ZlibCompressor::CompressSingleBuffer(const void* input, size_t inputSize,
|
|||||||
0 // reserved
|
0 // reserved
|
||||||
};
|
};
|
||||||
|
|
||||||
int zlibError = deflateInit(&zStream, Z_BEST_COMPRESSION);
|
int zlibError = deflateInit(&zStream, compressionLevel);
|
||||||
if (zlibError != Z_OK)
|
if (zlibError != Z_OK)
|
||||||
return TranslateZlibError(zlibError);
|
return TranslateZlibError(zlibError);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user