]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Merge pull request #838 from stellamplau/ldm-mergeDev
authorYann Collet <Cyan4973@users.noreply.github.com>
Wed, 13 Sep 2017 20:24:08 +0000 (13:24 -0700)
committerGitHub <noreply@github.com>
Wed, 13 Sep 2017 20:24:08 +0000 (13:24 -0700)
Add long distance matcher

1  2 
lib/compress/zstd_compress.c
lib/compress/zstd_compress.h
lib/zstd.h
programs/bench.c
tests/zstreamtest.c

index 884a4e00dcacfef636d3872073a748e9cb834bf9,04077f281dd2a642424e2741d7565d903f90da66..9f59ea686aef2bbc2c00d2c4b72654b6400b2da6
@@@ -389,27 -396,50 +406,60 @@@ size_t ZSTD_CCtxParam_setParameter
          if (value == 0) return 0;
  #ifndef ZSTD_MULTITHREAD
          if (value > 1) return ERROR(parameter_unsupported);
 -#endif
 +        return 0;
 +#else
          return ZSTDMT_initializeCCtxParameters(params, value);
 +#endif
  
      case ZSTD_p_jobSize :
 +#ifndef ZSTD_MULTITHREAD
 +        return ERROR(parameter_unsupported);
 +#else
          if (params->nbThreads <= 1) return ERROR(parameter_unsupported);
          return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_sectionSize, value);
 +#endif
  
      case ZSTD_p_overlapSizeLog :
 +#ifndef ZSTD_MULTITHREAD
 +        return ERROR(parameter_unsupported);
 +#else
          if (params->nbThreads <= 1) return ERROR(parameter_unsupported);
          return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_overlapSectionLog, value);
 +#endif
  
+     case ZSTD_p_enableLongDistanceMatching :
+         if (value != 0) {
+             ZSTD_cLevelToCCtxParams(params);
+             params->cParams.windowLog = ZSTD_LDM_WINDOW_LOG;
+         }
+         return ZSTD_ldm_initializeParameters(&params->ldmParams, value);
+     case ZSTD_p_ldmHashLog :
+         if (value == 0) return 0;
+         CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
+         params->ldmParams.hashLog = value;
+         return 0;
+     case ZSTD_p_ldmMinMatch :
+         if (value == 0) return 0;
+         CLAMPCHECK(value, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX);
+         params->ldmParams.minMatchLength = value;
+         return 0;
+     case ZSTD_p_ldmBucketSizeLog :
+         if (value > ZSTD_LDM_BUCKETSIZELOG_MAX) {
+             return ERROR(parameter_outOfBound);
+         }
+         params->ldmParams.bucketSizeLog = value;
+         return 0;
+     case ZSTD_p_ldmHashEveryLog :
+         if (value > ZSTD_WINDOWLOG_MAX - ZSTD_HASHLOG_MIN) {
+             return ERROR(parameter_outOfBound);
+         }
+         params->ldmParams.hashEveryLog = value;
+         return 0;
      default: return ERROR(parameter_unsupported);
      }
  }
Simple merge
diff --cc lib/zstd.h
Simple merge
Simple merge
Simple merge