From 76466dfadf871babdaebcecb448cc00c08fbfd78 Mon Sep 17 00:00:00 2001 From: senhuang42 Date: Wed, 23 Jun 2021 11:21:14 -0400 Subject: [PATCH] Add simple API for converting ZSTD_Sequence into seqStore --- lib/compress/zstd_compress.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index d7ae6d826..8ee46fd3f 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -3721,6 +3721,16 @@ static size_t ZSTD_compressBlock_splitBlock(ZSTD_CCtx* zc, return cSize; } +/* ZSTD_convertBlockSequencesToSeqStore() + * Converts an array of ZSTD_Sequence* with the corresponding original src buffer into + * the seqStore of a cctx. + * + * Returns 0 on success, ZSTD_error on failure. + */ +static UNUSED_ATTR size_t ZSTD_convertBlockSequencesToSeqStore(ZSTD_CCtx* cctx, + const ZSTD_Sequence* inSeqs, size_t inSeqsSize, + const void* src, size_t srcSize); + static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc, void* dst, size_t dstCapacity, const void* src, size_t srcSize, U32 frame) @@ -3757,12 +3767,6 @@ static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc, zc->entropyWorkspace, ENTROPY_WORKSPACE_SIZE /* statically allocated in resetCCtx */, zc->bmi2); - if (zc->seqCollector.collectSequences) { - ZSTD_copyBlockSequences(zc); - return 0; - } - - if (frame && /* We don't want to emit our first block as a RLE even if it qualifies because * doing so will cause the decoder (cli only) to throw a "should consume all input error." @@ -5821,6 +5825,13 @@ static size_t ZSTD_copySequencesToSeqStoreExplicitBlockDelim(ZSTD_CCtx* cctx, ZS return 0; } +static size_t ZSTD_convertBlockSequencesToSeqStore(ZSTD_CCtx* cctx, + const ZSTD_Sequence* inSeqs, size_t inSeqsSize, + const void* src, size_t srcSize) { + ZSTD_sequencePosition dummySeqPos = {0, 0, 0}; + return ZSTD_copySequencesToSeqStoreExplicitBlockDelim(cctx, &dummySeqPos, inSeqs, inSeqsSize, src, srcSize); +} + /* Returns the number of bytes to move the current read position back by. Only non-zero * if we ended up splitting a sequence. Otherwise, it may return a ZSTD error if something * went wrong. -- 2.47.2