summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Collet <yann.collet.73@gmail.com>2014-10-21 23:36:32 (GMT)
committerYann Collet <yann.collet.73@gmail.com>2014-10-21 23:36:32 (GMT)
commite468a4eb96ec8e2ea0fc61b5aa20f56a3b214c0e (patch)
tree453a3c336ee8f702dbb541dc9b0aa5c7359f05f1
parente450018588560537c2c4b4b2dd3515a9ef3a83f7 (diff)
downloadlz4-e468a4eb96ec8e2ea0fc61b5aa20f56a3b214c0e.zip
lz4-e468a4eb96ec8e2ea0fc61b5aa20f56a3b214c0e.tar.gz
lz4-e468a4eb96ec8e2ea0fc61b5aa20f56a3b214c0e.tar.bz2
fixed LZ4F_compressFrameBound (dynamic block resize)
-rwxr-xr-x[-rw-r--r--]lz4frame.c14
-rwxr-xr-x[-rw-r--r--]programs/frametest.c15
2 files changed, 22 insertions, 7 deletions
diff --git a/lz4frame.c b/lz4frame.c
index 93069e0..f7bf242 100644..100755
--- 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
index 343a8ab..abf0cde 100644..100755
--- 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();