Add simple API for converting ZSTD_Sequence into seqStore
This commit is contained in:
@@ -3721,6 +3721,16 @@ static size_t ZSTD_compressBlock_splitBlock(ZSTD_CCtx* zc,
|
|||||||
return cSize;
|
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,
|
static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc,
|
||||||
void* dst, size_t dstCapacity,
|
void* dst, size_t dstCapacity,
|
||||||
const void* src, size_t srcSize, U32 frame)
|
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->entropyWorkspace, ENTROPY_WORKSPACE_SIZE /* statically allocated in resetCCtx */,
|
||||||
zc->bmi2);
|
zc->bmi2);
|
||||||
|
|
||||||
if (zc->seqCollector.collectSequences) {
|
|
||||||
ZSTD_copyBlockSequences(zc);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (frame &&
|
if (frame &&
|
||||||
/* We don't want to emit our first block as a RLE even if it qualifies because
|
/* 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."
|
* 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;
|
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
|
/* 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
|
* if we ended up splitting a sequence. Otherwise, it may return a ZSTD error if something
|
||||||
* went wrong.
|
* went wrong.
|
||||||
|
|||||||
Reference in New Issue
Block a user