]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
set the window log value before performing compression
authorPaul Cruz <paulcruz74@fb.com>
Wed, 26 Jul 2017 21:29:59 +0000 (14:29 -0700)
committerPaul Cruz <paulcruz74@fb.com>
Wed, 26 Jul 2017 21:29:59 +0000 (14:29 -0700)
contrib/adaptive-compression/adapt.c
contrib/adaptive-compression/test-correctness.sh

index 237bb43063c6712362177fe49c682d3db8be9f96..5ff2e4181ccac430380d6ddefa0957fbaba275fe 100644 (file)
@@ -513,12 +513,16 @@ static void* compressionThread(void* arg)
             {
                 size_t const useDictSize = MIN(getUseableDictSize(cLevel), job->dictSize);
                 size_t const dictModeError = ZSTD_setCCtxParameter(ctx->cctx, ZSTD_p_forceRawDict, 1);
-                size_t const initError = ZSTD_compressBegin_usingDict(ctx->cctx, job->src.start + job->dictSize - useDictSize, useDictSize, cLevel);
-                size_t const windowSizeError = ZSTD_setCCtxParameter(ctx->cctx, ZSTD_p_forceWindow, 1);
-                if (ZSTD_isError(dictModeError) || ZSTD_isError(initError) || ZSTD_isError(windowSizeError)) {
-                    DISPLAY("Error: something went wrong while starting compression\n");
-                    signalErrorToThreads(ctx);
-                    return arg;
+                ZSTD_parameters params = ZSTD_getParams(cLevel, 0, useDictSize);
+                params.cParams.windowLog = 23;
+                {
+                    size_t const initError = ZSTD_compressBegin_advanced(ctx->cctx, job->src.start + job->dictSize - useDictSize, useDictSize, params, 0);
+                    size_t const windowSizeError = ZSTD_setCCtxParameter(ctx->cctx, ZSTD_p_forceWindow, 1);
+                    if (ZSTD_isError(dictModeError) || ZSTD_isError(initError) || ZSTD_isError(windowSizeError)) {
+                        DISPLAY("Error: something went wrong while starting compression\n");
+                        signalErrorToThreads(ctx);
+                        return arg;
+                    }
                 }
             }
             DEBUG(2, "finished with ZSTD_compressBegin()\n");
index 86d39ee4f5dd37f80a09d438b473ac3a78e5ed7a..8ae6604af25076960a276f747b79b14b083b1141 100755 (executable)
@@ -237,4 +237,9 @@ rm tmp*
 zstd -d tmp.zst -o tmp2
 diff -s -q tmp tmp2
 rm tmp*
+
+echo -e "\ncorrectness tests -- window size test"
+./datagen -s39 -g1GB | pv -L 25m -q | ./adapt -i1 | pv -q > tmp.zst
+zstd -d tmp.zst
+rm tmp*
 make clean