Project Alice
|
#include "zstd_ldm.h"
#include "../common/debug.h"
#include "../common/xxhash.h"
#include "zstd_fast.h"
#include "zstd_double_fast.h"
#include "zstd_ldm_geartab.h"
Go to the source code of this file.
Classes | |
struct | ldmRollingHashState_t |
Macros | |
#define | LDM_BUCKET_SIZE_LOG 3 |
#define | LDM_MIN_MATCH_LENGTH 64 |
#define | LDM_HASH_RLOG 7 |
#define | GEAR_ITER_ONCE() |
#define | GEAR_ITER_ONCE() |
Functions | |
void | ZSTD_ldm_adjustParameters (ldmParams_t *params, ZSTD_compressionParameters const *cParams) |
size_t | ZSTD_ldm_getTableSize (ldmParams_t params) |
size_t | ZSTD_ldm_getMaxNbSeq (ldmParams_t params, size_t maxChunkSize) |
void | ZSTD_ldm_fillHashTable (ldmState_t *ldmState, const BYTE *ip, const BYTE *iend, ldmParams_t const *params) |
size_t | ZSTD_ldm_generateSequences (ldmState_t *ldmState, rawSeqStore_t *sequences, ldmParams_t const *params, void const *src, size_t srcSize) |
void | ZSTD_ldm_skipSequences (rawSeqStore_t *rawSeqStore, size_t srcSize, U32 const minMatch) |
void | ZSTD_ldm_skipRawSeqStoreBytes (rawSeqStore_t *rawSeqStore, size_t nbBytes) |
size_t | ZSTD_ldm_blockCompress (rawSeqStore_t *rawSeqStore, ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], ZSTD_paramSwitch_e useRowMatchFinder, void const *src, size_t srcSize) |
#define GEAR_ITER_ONCE | ( | ) |
#define GEAR_ITER_ONCE | ( | ) |
#define LDM_BUCKET_SIZE_LOG 3 |
Definition at line 19 of file zstd_ldm.c.
#define LDM_HASH_RLOG 7 |
Definition at line 21 of file zstd_ldm.c.
#define LDM_MIN_MATCH_LENGTH 64 |
Definition at line 20 of file zstd_ldm.c.
void ZSTD_ldm_adjustParameters | ( | ldmParams_t * | params, |
ZSTD_compressionParameters const * | cParams | ||
) |
ZSTD_ldm_adjustParameters() : If the params->hashRateLog is not set, set it to its default value based on windowLog and params->hashLog.
Ensures that params->bucketSizeLog is <= params->hashLog (setting it to params->hashLog if it is not).
Ensures that the minMatchLength >= targetLength during optimal parsing.
Definition at line 135 of file zstd_ldm.c.
size_t ZSTD_ldm_blockCompress | ( | rawSeqStore_t * | rawSeqStore, |
ZSTD_matchState_t * | ms, | ||
seqStore_t * | seqStore, | ||
U32 | rep[ZSTD_REP_NUM], | ||
ZSTD_paramSwitch_e | useRowMatchFinder, | ||
void const * | src, | ||
size_t | srcSize | ||
) |
Compresses a block using the predefined sequences, along with a secondary block compressor. The literals section of every sequence is passed to the secondary block compressor, and those sequences are interspersed with the predefined sequences. Returns the length of the last literals. Updates rawSeqStore.pos
to indicate how many sequences have been consumed. rawSeqStore.seq
may also be updated to split the last sequence between two blocks.
NOTE: The source must be at most the maximum block size, but the predefined sequences can be any size, and may be longer than the block. In the case that they are longer than the block, the last sequences may need to be split into two. We handle that case correctly, and update rawSeqStore
appropriately. NOTE: This function does not return any errors.
Definition at line 666 of file zstd_ldm.c.
void ZSTD_ldm_fillHashTable | ( | ldmState_t * | ldmState, |
const BYTE * | ip, | ||
const BYTE * | iend, | ||
ldmParams_t const * | params | ||
) |
Definition at line 271 of file zstd_ldm.c.
size_t ZSTD_ldm_generateSequences | ( | ldmState_t * | ldms, |
rawSeqStore_t * | sequences, | ||
ldmParams_t const * | params, | ||
void const * | src, | ||
size_t | srcSize | ||
) |
Generates the sequences using the long distance match finder. Generates long range matching sequences in sequences
, which parse a prefix of the source. sequences
must be large enough to store every sequence, which can be checked with ZSTD_ldm_getMaxNbSeq()
.
NOTE: The user must have called ZSTD_window_update() for all of the input they have, even if they pass it to ZSTD_ldm_generateSequences() in chunks. NOTE: This function returns an error if it runs out of space to store sequences.
Definition at line 511 of file zstd_ldm.c.
size_t ZSTD_ldm_getMaxNbSeq | ( | ldmParams_t | params, |
size_t | maxChunkSize | ||
) |
ZSTD_ldm_getSeqSpace() : Return an upper bound on the number of sequences that can be produced by the long distance matcher, or 0 if LDM is disabled.
Definition at line 165 of file zstd_ldm.c.
size_t ZSTD_ldm_getTableSize | ( | ldmParams_t | params | ) |
ZSTD_ldm_getTableSize() : Estimate the space needed for long distance matching tables or 0 if LDM is disabled.
Definition at line 155 of file zstd_ldm.c.
void ZSTD_ldm_skipRawSeqStoreBytes | ( | rawSeqStore_t * | rawSeqStore, |
size_t | nbBytes | ||
) |
void ZSTD_ldm_skipSequences | ( | rawSeqStore_t * | rawSeqStore, |
size_t | srcSize, | ||
U32 const | minMatch | ||
) |
Skip past srcSize
bytes worth of sequences in rawSeqStore
. Avoids emitting matches less than minMatch
bytes. Must be called for data that is not passed to ZSTD_ldm_blockCompress().
Definition at line 589 of file zstd_ldm.c.