mirror of
https://github.com/facebook/zstd.git
synced 2025-08-08 17:22:10 +03:00
minor simplification
This commit is contained in:
@@ -1376,13 +1376,14 @@ ZSTD_generateSequences(ZSTD_CCtx* zc,
|
|||||||
</p></pre><BR>
|
</p></pre><BR>
|
||||||
|
|
||||||
<pre><b>ZSTDLIB_STATIC_API size_t
|
<pre><b>ZSTDLIB_STATIC_API size_t
|
||||||
ZSTD_compressSequences( ZSTD_CCtx* cctx, void* dst, size_t dstSize,
|
ZSTD_compressSequences(ZSTD_CCtx* cctx,
|
||||||
|
void* dst, size_t dstCapacity,
|
||||||
const ZSTD_Sequence* inSeqs, size_t inSeqsSize,
|
const ZSTD_Sequence* inSeqs, size_t inSeqsSize,
|
||||||
const void* src, size_t srcSize);
|
const void* src, size_t srcSize);
|
||||||
</b><p> Compress an array of ZSTD_Sequence, associated with @src buffer, into dst.
|
</b><p> Compress an array of ZSTD_Sequence, associated with @src buffer, into dst.
|
||||||
@src contains the entire input (not just the literals).
|
@src contains the entire input (not just the literals).
|
||||||
If @srcSize > sum(sequence.length), the remaining bytes are considered all literals
|
If @srcSize > sum(sequence.length), the remaining bytes are considered all literals
|
||||||
If a dictionary is included, then the cctx should reference the dict. (see: ZSTD_CCtx_refCDict(), ZSTD_CCtx_loadDictionary(), etc.)
|
If a dictionary is included, then the cctx should reference the dict (see: ZSTD_CCtx_refCDict(), ZSTD_CCtx_loadDictionary(), etc.).
|
||||||
The entire source is compressed into a single frame.
|
The entire source is compressed into a single frame.
|
||||||
|
|
||||||
The compression behavior changes based on cctx params. In particular:
|
The compression behavior changes based on cctx params. In particular:
|
||||||
@@ -1403,23 +1404,25 @@ ZSTD_compressSequences( ZSTD_CCtx* cctx, void* dst, size_t dstSize,
|
|||||||
- ZSTD_c_windowLog affects offset validation: this function will return an error at higher debug levels if a provided offset
|
- ZSTD_c_windowLog affects offset validation: this function will return an error at higher debug levels if a provided offset
|
||||||
is larger than what the spec allows for a given window log and dictionary (if present). See: doc/zstd_compression_format.md
|
is larger than what the spec allows for a given window log and dictionary (if present). See: doc/zstd_compression_format.md
|
||||||
|
|
||||||
Note: Repcodes are, as of now, always re-calculated within this function, so ZSTD_Sequence::rep is unused.
|
Note: Repcodes are, as of now, always re-calculated within this function, ZSTD_Sequence.rep is effectively unused.
|
||||||
Note 2: Once we integrate ability to ingest repcodes, the explicit block delims mode must respect those repcodes exactly,
|
Dev Note: Once ability to ingest repcodes become available, the explicit block delims mode must respect those repcodes exactly,
|
||||||
and cannot emit an RLE block that disagrees with the repcode history
|
and cannot emit an RLE block that disagrees with the repcode history.
|
||||||
@return : final compressed size, or a ZSTD error code.
|
@return : final compressed size, or a ZSTD error code.
|
||||||
|
|
||||||
</p></pre><BR>
|
</p></pre><BR>
|
||||||
|
|
||||||
<pre><b>ZSTDLIB_STATIC_API size_t
|
<pre><b>ZSTDLIB_STATIC_API size_t
|
||||||
ZSTD_compressSequencesAndLiterals( ZSTD_CCtx* cctx, void* dst, size_t dstSize,
|
ZSTD_compressSequencesAndLiterals(ZSTD_CCtx* cctx,
|
||||||
|
void* dst, size_t dstCapacity,
|
||||||
const ZSTD_Sequence* inSeqs, size_t inSeqsSize,
|
const ZSTD_Sequence* inSeqs, size_t inSeqsSize,
|
||||||
const void* literals, size_t litSize);
|
const void* literals, size_t litSize);
|
||||||
</b><p> This is a variant of ZSTD_compressSequences() which,
|
</b><p> This is a variant of ZSTD_compressSequences() which,
|
||||||
instead of receiving (src,srcSize) as input parameter, receives (literals,litSize),
|
instead of receiving (src,srcSize) as input parameter, receives (literals,litSize),
|
||||||
aka all literals already extracted and grouped into a single continuous buffer.
|
aka all literals already extracted and laid out into a single continuous buffer.
|
||||||
This can be useful if the process generating the sequences also happens to generate the buffer of literals,
|
This can be useful if the process generating the sequences also happens to generate the buffer of literals,
|
||||||
thus skipping an extraction + caching stage.
|
thus skipping an extraction + caching stage.
|
||||||
To be valid, `litSize` must be equal to the sum of all @.litLength fields in @inSeqs.
|
To be valid, @litSize must be equal to the sum of all @.litLength fields in @inSeqs.
|
||||||
|
Important: Employing this prototype is incompatible with frame checksum.
|
||||||
@return : final compressed size, or a ZSTD error code.
|
@return : final compressed size, or a ZSTD error code.
|
||||||
|
|
||||||
</p></pre><BR>
|
</p></pre><BR>
|
||||||
|
@@ -6887,20 +6887,17 @@ blockSize_explicitDelimiter(const ZSTD_Sequence* inSeqs, size_t inSeqsSize, ZSTD
|
|||||||
return blockSize;
|
return blockSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* More a "target" block size */
|
|
||||||
static size_t blockSize_noDelimiter(size_t blockSize, size_t remaining)
|
|
||||||
{
|
|
||||||
int const lastBlock = (remaining <= blockSize);
|
|
||||||
return lastBlock ? remaining : blockSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
static size_t determine_blockSize(ZSTD_SequenceFormat_e mode,
|
static size_t determine_blockSize(ZSTD_SequenceFormat_e mode,
|
||||||
size_t blockSize, size_t remaining,
|
size_t blockSize, size_t remaining,
|
||||||
const ZSTD_Sequence* inSeqs, size_t inSeqsSize, ZSTD_SequencePosition seqPos)
|
const ZSTD_Sequence* inSeqs, size_t inSeqsSize,
|
||||||
|
ZSTD_SequencePosition seqPos)
|
||||||
{
|
{
|
||||||
DEBUGLOG(6, "determine_blockSize : remainingSize = %zu", remaining);
|
DEBUGLOG(6, "determine_blockSize : remainingSize = %zu", remaining);
|
||||||
if (mode == ZSTD_sf_noBlockDelimiters)
|
if (mode == ZSTD_sf_noBlockDelimiters) {
|
||||||
return blockSize_noDelimiter(blockSize, remaining);
|
/* Note: more a "target" block size */
|
||||||
|
return MIN(remaining, blockSize);
|
||||||
|
}
|
||||||
|
assert(mode == ZSTD_sf_explicitBlockDelimiters);
|
||||||
{ size_t const explicitBlockSize = blockSize_explicitDelimiter(inSeqs, inSeqsSize, seqPos);
|
{ size_t const explicitBlockSize = blockSize_explicitDelimiter(inSeqs, inSeqsSize, seqPos);
|
||||||
FORWARD_IF_ERROR(explicitBlockSize, "Error while determining block size with explicit delimiters");
|
FORWARD_IF_ERROR(explicitBlockSize, "Error while determining block size with explicit delimiters");
|
||||||
if (explicitBlockSize > blockSize)
|
if (explicitBlockSize > blockSize)
|
||||||
|
14
lib/zstd.h
14
lib/zstd.h
@@ -1625,7 +1625,7 @@ ZSTDLIB_STATIC_API size_t ZSTD_mergeBlockDelimiters(ZSTD_Sequence* sequences, si
|
|||||||
* Compress an array of ZSTD_Sequence, associated with @src buffer, into dst.
|
* Compress an array of ZSTD_Sequence, associated with @src buffer, into dst.
|
||||||
* @src contains the entire input (not just the literals).
|
* @src contains the entire input (not just the literals).
|
||||||
* If @srcSize > sum(sequence.length), the remaining bytes are considered all literals
|
* If @srcSize > sum(sequence.length), the remaining bytes are considered all literals
|
||||||
* If a dictionary is included, then the cctx should reference the dict. (see: ZSTD_CCtx_refCDict(), ZSTD_CCtx_loadDictionary(), etc.)
|
* If a dictionary is included, then the cctx should reference the dict (see: ZSTD_CCtx_refCDict(), ZSTD_CCtx_loadDictionary(), etc.).
|
||||||
* The entire source is compressed into a single frame.
|
* The entire source is compressed into a single frame.
|
||||||
*
|
*
|
||||||
* The compression behavior changes based on cctx params. In particular:
|
* The compression behavior changes based on cctx params. In particular:
|
||||||
@@ -1646,13 +1646,14 @@ ZSTDLIB_STATIC_API size_t ZSTD_mergeBlockDelimiters(ZSTD_Sequence* sequences, si
|
|||||||
* - ZSTD_c_windowLog affects offset validation: this function will return an error at higher debug levels if a provided offset
|
* - ZSTD_c_windowLog affects offset validation: this function will return an error at higher debug levels if a provided offset
|
||||||
* is larger than what the spec allows for a given window log and dictionary (if present). See: doc/zstd_compression_format.md
|
* is larger than what the spec allows for a given window log and dictionary (if present). See: doc/zstd_compression_format.md
|
||||||
*
|
*
|
||||||
* Note: Repcodes are, as of now, always re-calculated within this function, so ZSTD_Sequence::rep is unused.
|
* Note: Repcodes are, as of now, always re-calculated within this function, ZSTD_Sequence.rep is effectively unused.
|
||||||
* Note 2: Once we integrate ability to ingest repcodes, the explicit block delims mode must respect those repcodes exactly,
|
* Dev Note: Once ability to ingest repcodes become available, the explicit block delims mode must respect those repcodes exactly,
|
||||||
* and cannot emit an RLE block that disagrees with the repcode history
|
* and cannot emit an RLE block that disagrees with the repcode history.
|
||||||
* @return : final compressed size, or a ZSTD error code.
|
* @return : final compressed size, or a ZSTD error code.
|
||||||
*/
|
*/
|
||||||
ZSTDLIB_STATIC_API size_t
|
ZSTDLIB_STATIC_API size_t
|
||||||
ZSTD_compressSequences( ZSTD_CCtx* cctx, void* dst, size_t dstSize,
|
ZSTD_compressSequences(ZSTD_CCtx* cctx,
|
||||||
|
void* dst, size_t dstCapacity,
|
||||||
const ZSTD_Sequence* inSeqs, size_t inSeqsSize,
|
const ZSTD_Sequence* inSeqs, size_t inSeqsSize,
|
||||||
const void* src, size_t srcSize);
|
const void* src, size_t srcSize);
|
||||||
|
|
||||||
@@ -1668,7 +1669,8 @@ ZSTD_compressSequences( ZSTD_CCtx* cctx, void* dst, size_t dstSize,
|
|||||||
* @return : final compressed size, or a ZSTD error code.
|
* @return : final compressed size, or a ZSTD error code.
|
||||||
*/
|
*/
|
||||||
ZSTDLIB_STATIC_API size_t
|
ZSTDLIB_STATIC_API size_t
|
||||||
ZSTD_compressSequencesAndLiterals( ZSTD_CCtx* cctx, void* dst, size_t dstSize,
|
ZSTD_compressSequencesAndLiterals(ZSTD_CCtx* cctx,
|
||||||
|
void* dst, size_t dstCapacity,
|
||||||
const ZSTD_Sequence* inSeqs, size_t inSeqsSize,
|
const ZSTD_Sequence* inSeqs, size_t inSeqsSize,
|
||||||
const void* literals, size_t litSize);
|
const void* literals, size_t litSize);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user