ZlibCompressor: Allow setting the compression level

This commit is contained in:
Ingo Weinhold
2013-05-25 01:12:26 +02:00
parent 1f633814fa
commit 18b19ba49d
2 changed files with 8 additions and 6 deletions
@@ -27,14 +27,15 @@ public:
ZlibCompressor(BDataOutput* output);
~ZlibCompressor();
status_t Init();
status_t Init(int compressionLevel = Z_BEST_COMPRESSION);
status_t CompressNext(const void* input,
size_t inputSize);
status_t Finish();
static status_t CompressSingleBuffer(const void* input,
size_t inputSize, void* output,
size_t outputSize, size_t& _compressedSize);
size_t outputSize, size_t& _compressedSize,
int compressionLevel = Z_BEST_COMPRESSION);
private:
z_stream fStream;
+5 -4
View File
@@ -38,7 +38,7 @@ ZlibCompressor::~ZlibCompressor()
status_t
ZlibCompressor::Init()
ZlibCompressor::Init(int compressionLevel)
{
// initialize the stream
fStream.next_in = NULL;
@@ -56,7 +56,7 @@ ZlibCompressor::Init()
fStream.adler = 0;
fStream.reserved = 0;
int zlibError = deflateInit(&fStream, Z_BEST_COMPRESSION);
int zlibError = deflateInit(&fStream, compressionLevel);
if (zlibError != Z_OK)
return TranslateZlibError(zlibError);
@@ -128,7 +128,8 @@ ZlibCompressor::Finish()
/*static*/ status_t
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)
return B_BAD_VALUE;
@@ -151,7 +152,7 @@ ZlibCompressor::CompressSingleBuffer(const void* input, size_t inputSize,
0 // reserved
};
int zlibError = deflateInit(&zStream, Z_BEST_COMPRESSION);
int zlibError = deflateInit(&zStream, compressionLevel);
if (zlibError != Z_OK)
return TranslateZlibError(zlibError);