From e468a4eb96ec8e2ea0fc61b5aa20f56a3b214c0e Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 22 Oct 2014 00:36:32 +0100 Subject: fixed LZ4F_compressFrameBound (dynamic block resize) --- lz4frame.c | 14 ++++++++++++++ programs/frametest.c | 15 ++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) mode change 100644 => 100755 lz4frame.c mode change 100644 => 100755 programs/frametest.c diff --git a/lz4frame.c b/lz4frame.c old mode 100644 new mode 100755 index 93069e0..f7bf242 --- a/lz4frame.c +++ b/lz4frame.c @@ -234,6 +234,20 @@ size_t LZ4F_compressFrameBound(size_t srcSize, const LZ4F_preferences_t* prefere size_t streamSize; if (preferencesPtr!=NULL) prefs = *preferencesPtr; + { + blockSizeID_t proposedBSID = max64KB; + size_t maxBlockSize = 64 KB; + while (prefs.frameInfo.blockSizeID > proposedBSID) + { + if (srcSize <= maxBlockSize) + { + prefs.frameInfo.blockSizeID = proposedBSID; + break; + } + proposedBSID++; + maxBlockSize <<= 2; + } + } prefs.autoFlush = 1; headerSize = 7; /* basic header size (no option) including magic number */ diff --git a/programs/frametest.c b/programs/frametest.c old mode 100644 new mode 100755 index 343a8ab..abf0cde --- a/programs/frametest.c +++ b/programs/frametest.c @@ -78,7 +78,7 @@ typedef unsigned long long U64; #define MB *(1U<<20) #define GB *(1U<<30) -static const U32 nbTestsDefault = 128 KB; +static const U32 nbTestsDefault = 256 KB; #define COMPRESSIBLE_NOISE_LENGTH (2 MB) #define FUZ_COMPRESSIBILITY_DEFAULT 50 static const U32 prime1 = 2654435761U; @@ -597,7 +597,12 @@ int main(int argc, char** argv) argument++; displayLevel--; break; - case 'i': + case 'p': /* pause at the end */ + argument++; + pause = 1; + break; + + case 'i': argument++; nbTests=0; while ((*argument>='0') && (*argument<='9')) @@ -628,7 +633,7 @@ int main(int argc, char** argv) argument++; } break; - case 'p': /* compressibility % */ + case 'P': /* compressibility % */ argument++; proba=0; while ((*argument>='0') && (*argument<='9')) @@ -640,10 +645,6 @@ int main(int argc, char** argv) if (proba<0) proba=0; if (proba>100) proba=100; break; - case 'P': /* pause at the end */ - argument++; - pause = 1; - break; default: ; return FUZ_usage(); -- cgit v0.12