MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ZSTD_compressSubBlock

Function ZSTD_compressSubBlock

freebsd/contrib/openzfs/module/zstd/lib/zstd.c:12244–12285  ·  view source on GitHub ↗

ZSTD_compressSubBlock() : * Compresses a single sub-block. * @return : compressed size of the sub-block * Or 0 if it failed to compress. */

Source from the content-addressed store, hash-verified

12242 * @return : compressed size of the sub-block
12243 * Or 0 if it failed to compress. */
12244static size_t ZSTD_compressSubBlock(const ZSTD_entropyCTables_t* entropy,
12245 const ZSTD_entropyCTablesMetadata_t* entropyMetadata,
12246 const seqDef* sequences, size_t nbSeq,
12247 const BYTE* literals, size_t litSize,
12248 const BYTE* llCode, const BYTE* mlCode, const BYTE* ofCode,
12249 const ZSTD_CCtx_params* cctxParams,
12250 void* dst, size_t dstCapacity,
12251 const int bmi2,
12252 int writeLitEntropy, int writeSeqEntropy,
12253 int* litEntropyWritten, int* seqEntropyWritten,
12254 U32 lastBlock)
12255{
12256 BYTE* const ostart = (BYTE*)dst;
12257 BYTE* const oend = ostart + dstCapacity;
12258 BYTE* op = ostart + ZSTD_blockHeaderSize;
12259 DEBUGLOG(5, "ZSTD_compressSubBlock (litSize=%zu, nbSeq=%zu, writeLitEntropy=%d, writeSeqEntropy=%d, lastBlock=%d)",
12260 litSize, nbSeq, writeLitEntropy, writeSeqEntropy, lastBlock);
12261 { size_t cLitSize = ZSTD_compressSubBlock_literal((const HUF_CElt*)entropy->huf.CTable,
12262 &entropyMetadata->hufMetadata, literals, litSize,
12263 op, oend-op, bmi2, writeLitEntropy, litEntropyWritten);
12264 FORWARD_IF_ERROR(cLitSize, "ZSTD_compressSubBlock_literal failed");
12265 if (cLitSize == 0) return 0;
12266 op += cLitSize;
12267 }
12268 { size_t cSeqSize = ZSTD_compressSubBlock_sequences(&entropy->fse,
12269 &entropyMetadata->fseMetadata,
12270 sequences, nbSeq,
12271 llCode, mlCode, ofCode,
12272 cctxParams,
12273 op, oend-op,
12274 bmi2, writeSeqEntropy, seqEntropyWritten);
12275 FORWARD_IF_ERROR(cSeqSize, "ZSTD_compressSubBlock_sequences failed");
12276 if (cSeqSize == 0) return 0;
12277 op += cSeqSize;
12278 }
12279 /* Write block header */
12280 { size_t cSize = (op-ostart)-ZSTD_blockHeaderSize;
12281 U32 const cBlockHeader24 = lastBlock + (((U32)bt_compressed)<<1) + (U32)(cSize << 3);
12282 MEM_writeLE24(ostart, cBlockHeader24);
12283 }
12284 return op-ostart;
12285}
12286
12287static size_t ZSTD_estimateSubBlockSize_literal(const BYTE* literals, size_t litSize,
12288 const ZSTD_hufCTables_t* huf,

Callers 1

Calls 3

MEM_writeLE24Function · 0.70

Tested by

no test coverage detected