support targetlen==0 with strategy==ZSTD_fast
to mean "normal compression", targetlen >= 1 now means "disable huffman compression of literals"
This commit is contained in:
parent
a57b4df85f
commit
c2c47e24e0
@ -689,8 +689,6 @@ size_t ZSTD_checkCParams(ZSTD_compressionParameters cParams)
|
|||||||
CLAMPCHECK(cParams.hashLog, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
|
CLAMPCHECK(cParams.hashLog, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
|
||||||
CLAMPCHECK(cParams.searchLog, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
|
CLAMPCHECK(cParams.searchLog, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
|
||||||
CLAMPCHECK(cParams.searchLength, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
|
CLAMPCHECK(cParams.searchLength, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
|
||||||
if ((U32)(cParams.targetLength) < ZSTD_TARGETLENGTH_MIN)
|
|
||||||
return ERROR(parameter_unsupported);
|
|
||||||
if ((U32)(cParams.strategy) > (U32)ZSTD_btultra)
|
if ((U32)(cParams.strategy) > (U32)ZSTD_btultra)
|
||||||
return ERROR(parameter_unsupported);
|
return ERROR(parameter_unsupported);
|
||||||
return 0;
|
return 0;
|
||||||
@ -710,7 +708,6 @@ static ZSTD_compressionParameters ZSTD_clampCParams(ZSTD_compressionParameters c
|
|||||||
CLAMP(cParams.hashLog, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
|
CLAMP(cParams.hashLog, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
|
||||||
CLAMP(cParams.searchLog, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
|
CLAMP(cParams.searchLog, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
|
||||||
CLAMP(cParams.searchLength, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
|
CLAMP(cParams.searchLength, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
|
||||||
if ((U32)(cParams.targetLength) < ZSTD_TARGETLENGTH_MIN) cParams.targetLength = ZSTD_TARGETLENGTH_MIN;
|
|
||||||
if ((U32)(cParams.strategy) > (U32)ZSTD_btultra) cParams.strategy = ZSTD_btultra;
|
if ((U32)(cParams.strategy) > (U32)ZSTD_btultra) cParams.strategy = ZSTD_btultra;
|
||||||
return cParams;
|
return cParams;
|
||||||
}
|
}
|
||||||
@ -3713,8 +3710,8 @@ static const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEV
|
|||||||
{ /* "default" - guarantees a monotonically increasing memory budget */
|
{ /* "default" - guarantees a monotonically increasing memory budget */
|
||||||
/* W, C, H, S, L, TL, strat */
|
/* W, C, H, S, L, TL, strat */
|
||||||
{ 19, 12, 13, 1, 6, 1, ZSTD_fast }, /* base for negative levels */
|
{ 19, 12, 13, 1, 6, 1, ZSTD_fast }, /* base for negative levels */
|
||||||
{ 19, 13, 14, 1, 7, 1, ZSTD_fast }, /* level 1 */
|
{ 19, 13, 14, 1, 7, 0, ZSTD_fast }, /* level 1 */
|
||||||
{ 19, 15, 16, 1, 6, 1, ZSTD_fast }, /* level 2 */
|
{ 19, 15, 16, 1, 6, 0, ZSTD_fast }, /* level 2 */
|
||||||
{ 20, 16, 17, 1, 5, 1, ZSTD_dfast }, /* level 3 */
|
{ 20, 16, 17, 1, 5, 1, ZSTD_dfast }, /* level 3 */
|
||||||
{ 20, 18, 18, 1, 5, 1, ZSTD_dfast }, /* level 4 */
|
{ 20, 18, 18, 1, 5, 1, ZSTD_dfast }, /* level 4 */
|
||||||
{ 20, 18, 18, 2, 5, 2, ZSTD_greedy }, /* level 5 */
|
{ 20, 18, 18, 2, 5, 2, ZSTD_greedy }, /* level 5 */
|
||||||
@ -3739,7 +3736,7 @@ static const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEV
|
|||||||
{ /* for srcSize <= 256 KB */
|
{ /* for srcSize <= 256 KB */
|
||||||
/* W, C, H, S, L, T, strat */
|
/* W, C, H, S, L, T, strat */
|
||||||
{ 18, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
|
{ 18, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
|
||||||
{ 18, 13, 14, 1, 6, 1, ZSTD_fast }, /* level 1 */
|
{ 18, 13, 14, 1, 6, 0, ZSTD_fast }, /* level 1 */
|
||||||
{ 18, 14, 14, 1, 5, 1, ZSTD_dfast }, /* level 2 */
|
{ 18, 14, 14, 1, 5, 1, ZSTD_dfast }, /* level 2 */
|
||||||
{ 18, 16, 16, 1, 4, 1, ZSTD_dfast }, /* level 3 */
|
{ 18, 16, 16, 1, 4, 1, ZSTD_dfast }, /* level 3 */
|
||||||
{ 18, 16, 17, 2, 5, 2, ZSTD_greedy }, /* level 4.*/
|
{ 18, 16, 17, 2, 5, 2, ZSTD_greedy }, /* level 4.*/
|
||||||
@ -3765,8 +3762,8 @@ static const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEV
|
|||||||
{ /* for srcSize <= 128 KB */
|
{ /* for srcSize <= 128 KB */
|
||||||
/* W, C, H, S, L, T, strat */
|
/* W, C, H, S, L, T, strat */
|
||||||
{ 17, 12, 12, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
|
{ 17, 12, 12, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
|
||||||
{ 17, 12, 13, 1, 6, 1, ZSTD_fast }, /* level 1 */
|
{ 17, 12, 13, 1, 6, 0, ZSTD_fast }, /* level 1 */
|
||||||
{ 17, 13, 15, 1, 5, 1, ZSTD_fast }, /* level 2 */
|
{ 17, 13, 15, 1, 5, 0, ZSTD_fast }, /* level 2 */
|
||||||
{ 17, 15, 16, 2, 5, 1, ZSTD_dfast }, /* level 3 */
|
{ 17, 15, 16, 2, 5, 1, ZSTD_dfast }, /* level 3 */
|
||||||
{ 17, 17, 17, 2, 4, 1, ZSTD_dfast }, /* level 4 */
|
{ 17, 17, 17, 2, 4, 1, ZSTD_dfast }, /* level 4 */
|
||||||
{ 17, 16, 17, 3, 4, 2, ZSTD_greedy }, /* level 5 */
|
{ 17, 16, 17, 3, 4, 2, ZSTD_greedy }, /* level 5 */
|
||||||
@ -3791,8 +3788,8 @@ static const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEV
|
|||||||
{ /* for srcSize <= 16 KB */
|
{ /* for srcSize <= 16 KB */
|
||||||
/* W, C, H, S, L, T, strat */
|
/* W, C, H, S, L, T, strat */
|
||||||
{ 14, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
|
{ 14, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
|
||||||
{ 14, 14, 15, 1, 5, 1, ZSTD_fast }, /* level 1 */
|
{ 14, 14, 15, 1, 5, 0, ZSTD_fast }, /* level 1 */
|
||||||
{ 14, 14, 15, 1, 4, 1, ZSTD_fast }, /* level 2 */
|
{ 14, 14, 15, 1, 4, 0, ZSTD_fast }, /* level 2 */
|
||||||
{ 14, 14, 14, 2, 4, 1, ZSTD_dfast }, /* level 3.*/
|
{ 14, 14, 14, 2, 4, 1, ZSTD_dfast }, /* level 3.*/
|
||||||
{ 14, 14, 14, 4, 4, 2, ZSTD_greedy }, /* level 4.*/
|
{ 14, 14, 14, 4, 4, 2, ZSTD_greedy }, /* level 4.*/
|
||||||
{ 14, 14, 14, 3, 4, 4, ZSTD_lazy }, /* level 5.*/
|
{ 14, 14, 14, 3, 4, 4, ZSTD_lazy }, /* level 5.*/
|
||||||
|
@ -45,7 +45,7 @@ FORCE_INLINE_TEMPLATE
|
|||||||
size_t ZSTD_compressBlock_fast_generic(
|
size_t ZSTD_compressBlock_fast_generic(
|
||||||
ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
|
ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
|
||||||
void const* src, size_t srcSize,
|
void const* src, size_t srcSize,
|
||||||
U32 const hlog, U32 const stepSize, U32 const mls,
|
U32 const hlog, U32 stepSize, U32 const mls,
|
||||||
ZSTD_dictMode_e const dictMode)
|
ZSTD_dictMode_e const dictMode)
|
||||||
{
|
{
|
||||||
U32* const hashTable = ms->hashTable;
|
U32* const hashTable = ms->hashTable;
|
||||||
@ -84,6 +84,7 @@ size_t ZSTD_compressBlock_fast_generic(
|
|||||||
|| prefixStartIndex >= (U32)(dictEnd - dictBase));
|
|| prefixStartIndex >= (U32)(dictEnd - dictBase));
|
||||||
|
|
||||||
/* init */
|
/* init */
|
||||||
|
stepSize += !stepSize; /* support stepSize of 0 */
|
||||||
ip += (dictAndPrefixLength == 0);
|
ip += (dictAndPrefixLength == 0);
|
||||||
if (dictMode == ZSTD_noDict) {
|
if (dictMode == ZSTD_noDict) {
|
||||||
U32 const maxRep = (U32)(ip - prefixStart);
|
U32 const maxRep = (U32)(ip - prefixStart);
|
||||||
@ -264,7 +265,7 @@ size_t ZSTD_compressBlock_fast_dictMatchState(
|
|||||||
static size_t ZSTD_compressBlock_fast_extDict_generic(
|
static size_t ZSTD_compressBlock_fast_extDict_generic(
|
||||||
ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
|
ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
|
||||||
void const* src, size_t srcSize,
|
void const* src, size_t srcSize,
|
||||||
U32 const hlog, U32 const stepSize, U32 const mls)
|
U32 const hlog, U32 stepSize, U32 const mls)
|
||||||
{
|
{
|
||||||
U32* hashTable = ms->hashTable;
|
U32* hashTable = ms->hashTable;
|
||||||
const BYTE* const base = ms->window.base;
|
const BYTE* const base = ms->window.base;
|
||||||
@ -281,6 +282,8 @@ static size_t ZSTD_compressBlock_fast_extDict_generic(
|
|||||||
const BYTE* const ilimit = iend - 8;
|
const BYTE* const ilimit = iend - 8;
|
||||||
U32 offset_1=rep[0], offset_2=rep[1];
|
U32 offset_1=rep[0], offset_2=rep[1];
|
||||||
|
|
||||||
|
stepSize += !stepSize; /* support stepSize == 0 */
|
||||||
|
|
||||||
/* Search Loop */
|
/* Search Loop */
|
||||||
while (ip < ilimit) { /* < instead of <=, because (ip+1) */
|
while (ip < ilimit) { /* < instead of <=, because (ip+1) */
|
||||||
const size_t h = ZSTD_hashPtr(ip, hlog, mls);
|
const size_t h = ZSTD_hashPtr(ip, hlog, mls);
|
||||||
|
@ -395,7 +395,6 @@ ZSTDLIB_API size_t ZSTD_DStreamOutSize(void); /*!< recommended size for output
|
|||||||
#define ZSTD_SEARCHLOG_MIN 1
|
#define ZSTD_SEARCHLOG_MIN 1
|
||||||
#define ZSTD_SEARCHLENGTH_MAX 7 /* only for ZSTD_fast, other strategies are limited to 6 */
|
#define ZSTD_SEARCHLENGTH_MAX 7 /* only for ZSTD_fast, other strategies are limited to 6 */
|
||||||
#define ZSTD_SEARCHLENGTH_MIN 3 /* only for ZSTD_btopt, other strategies are limited to 4 */
|
#define ZSTD_SEARCHLENGTH_MIN 3 /* only for ZSTD_btopt, other strategies are limited to 4 */
|
||||||
#define ZSTD_TARGETLENGTH_MIN 1 /* only used by btopt, btultra and btfast */
|
|
||||||
#define ZSTD_LDM_MINMATCH_MIN 4
|
#define ZSTD_LDM_MINMATCH_MIN 4
|
||||||
#define ZSTD_LDM_MINMATCH_MAX 4096
|
#define ZSTD_LDM_MINMATCH_MAX 4096
|
||||||
#define ZSTD_LDM_BUCKETSIZELOG_MAX 8
|
#define ZSTD_LDM_BUCKETSIZELOG_MAX 8
|
||||||
|
@ -598,7 +598,7 @@ static ZSTD_compressionParameters randomParams(void)
|
|||||||
p.searchLog = (FUZ_rand(&g_rand) % (ZSTD_SEARCHLOG_MAX+1 - ZSTD_SEARCHLOG_MIN)) + ZSTD_SEARCHLOG_MIN;
|
p.searchLog = (FUZ_rand(&g_rand) % (ZSTD_SEARCHLOG_MAX+1 - ZSTD_SEARCHLOG_MIN)) + ZSTD_SEARCHLOG_MIN;
|
||||||
p.windowLog = (FUZ_rand(&g_rand) % (ZSTD_WINDOWLOG_MAX+1 - ZSTD_WINDOWLOG_MIN)) + ZSTD_WINDOWLOG_MIN;
|
p.windowLog = (FUZ_rand(&g_rand) % (ZSTD_WINDOWLOG_MAX+1 - ZSTD_WINDOWLOG_MIN)) + ZSTD_WINDOWLOG_MIN;
|
||||||
p.searchLength=(FUZ_rand(&g_rand) % (ZSTD_SEARCHLENGTH_MAX+1 - ZSTD_SEARCHLENGTH_MIN)) + ZSTD_SEARCHLENGTH_MIN;
|
p.searchLength=(FUZ_rand(&g_rand) % (ZSTD_SEARCHLENGTH_MAX+1 - ZSTD_SEARCHLENGTH_MIN)) + ZSTD_SEARCHLENGTH_MIN;
|
||||||
p.targetLength=(FUZ_rand(&g_rand) % (512)) + ZSTD_TARGETLENGTH_MIN;
|
p.targetLength=(FUZ_rand(&g_rand) % (512));
|
||||||
p.strategy = (ZSTD_strategy) (FUZ_rand(&g_rand) % (ZSTD_btultra +1));
|
p.strategy = (ZSTD_strategy) (FUZ_rand(&g_rand) % (ZSTD_btultra +1));
|
||||||
validated = !ZSTD_isError(ZSTD_checkCParams(p));
|
validated = !ZSTD_isError(ZSTD_checkCParams(p));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user