ZlibCompressor: Allow setting the compression level
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user