From bebaf6031221723d6891a40f9ed47cfd52158574 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 | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index d7ae6d8260c..c371fe1c65b 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -3721,6 +3721,17 @@ 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 a seqStore. + * Returns 0 on success, ZSTD_error on failure. + */ +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); +} + static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc, void* dst, size_t dstCapacity, const void* src, size_t srcSize, U32 frame) @@ -3757,12 +3768,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."