return ZSTD_convertBlockSequences_internal(cctx, inSeqs, nbSequences, 0);
}
-typedef struct {
- size_t nbSequences;
- size_t blockSize;
- size_t litSize;
-} BlockSummary;
-
-static BlockSummary get1BlockSummary(const ZSTD_Sequence* seqs, size_t nbSeqs)
+BlockSummary ZSTD_get1BlockSummary(const ZSTD_Sequence* seqs, size_t nbSeqs)
{
size_t blockSize = 0;
size_t litSize = 0;
while (nbSequences) {
size_t compressedSeqsSize, cBlockSize, conversionStatus;
- BlockSummary const block = get1BlockSummary(inSeqs, nbSequences);
+ BlockSummary const block = ZSTD_get1BlockSummary(inSeqs, nbSequences);
U32 const lastBlock = (block.nbSequences == nbSequences);
FORWARD_IF_ERROR(block.nbSequences, "Error while trying to determine nb of sequences for a block");
assert(block.nbSequences <= nbSequences);
return 0;
}
+static size_t
+local_get1BlockSummary(const void* input, size_t inputSize,
+ void* dst, size_t dstCapacity,
+ void* payload)
+{
+ const char* ip = input;
+ size_t const blockSize = MEM_read32(ip);
+ size_t const nbSeqs = MEM_read32(ip+=4);
+ const ZSTD_Sequence* seqs = (const ZSTD_Sequence*)(const void*)(ip+=4);
+ ZSTD_CCtx_reset(g_zcc, ZSTD_reset_session_and_parameters);
+ ZSTD_resetSeqStore(&g_zcc->seqStore);
+ ZSTD_CCtx_setParameter(g_zcc, ZSTD_c_blockDelimiters, ZSTD_sf_explicitBlockDelimiters);
+ assert(8 + nbSeqs * sizeof(ZSTD_Sequence) == inputSize); (void)inputSize;
+ (void)dst; (void)dstCapacity;
+ (void)payload; (void)blockSize;
+
+ (void)ZSTD_get1BlockSummary(seqs, nbSeqs);
+ return nbSeqs;
+}
+
static PrepResult prepCopy(const void* src, size_t srcSize, int cLevel)
{
PrepResult r = PREPRESULT_INIT;
{ "compressSequences", prepSequences, local_compressSequences, check_compressedSequences },
{ "compressSequencesAndLiterals", prepSequencesAndLiterals, local_compressSequencesAndLiterals, check_compressedSequences },
{ "convertSequences (1st block)", prepConvertSequences, local_convertSequences, NULL },
+ { "get1BlockSummary (1st block)", prepConvertSequences, local_get1BlockSummary, NULL },
#ifndef ZSTD_DLL_IMPORT
{ "decodeLiteralsHeader (1st block)", prepLiterals, local_ZSTD_decodeLiteralsHeader, NULL },
{ "decodeLiteralsBlock (1st block)", prepLiterals, local_ZSTD_decodeLiteralsBlock, NULL },