ZSTD_compressSubBlock() : * Compresses a single sub-block. * @return : compressed size of the sub-block * Or 0 if it failed to compress. */
| 12242 | * @return : compressed size of the sub-block |
| 12243 | * Or 0 if it failed to compress. */ |
| 12244 | static 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 | |
| 12287 | static size_t ZSTD_estimateSubBlockSize_literal(const BYTE* literals, size_t litSize, |
| 12288 | const ZSTD_hufCTables_t* huf, |
no test coverage detected