From 18b19ba49d6a9f234818042c6b62c6661a0dc247 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sun, 19 May 2013 01:00:36 +0200 Subject: [PATCH] ZlibCompressor: Allow setting the compression level --- headers/private/package/hpkg/ZlibCompressor.h | 5 +++-- src/kits/package/hpkg/ZlibCompressor.cpp | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/headers/private/package/hpkg/ZlibCompressor.h b/headers/private/package/hpkg/ZlibCompressor.h index d29abdd056..4f6dd141f7 100644 --- a/headers/private/package/hpkg/ZlibCompressor.h +++ b/headers/private/package/hpkg/ZlibCompressor.h @@ -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; diff --git a/src/kits/package/hpkg/ZlibCompressor.cpp b/src/kits/package/hpkg/ZlibCompressor.cpp index 17801b4b4b..ed4219dc09 100644 --- a/src/kits/package/hpkg/ZlibCompressor.cpp +++ b/src/kits/package/hpkg/ZlibCompressor.cpp @@ -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);