/* ZSTD_compressSuperBlock() : * Used to compress a super block when targetCBlockSize is being used. * The given block will be compressed into multiple sub blocks that are around targetCBlockSize. */ public static nuint ZSTD_compressSuperBlock(ZSTD_CCtx_s *zc, void *dst, nuint dstCapacity, void *src, nuint srcSize, uint lastBlock) { ZSTD_entropyCTablesMetadata_t entropyMetadata; { nuint err_code = (ZSTD_buildSuperBlockEntropy(&zc->seqStore, &zc->blockState.prevCBlock->entropy, &zc->blockState.nextCBlock->entropy, &zc->appliedParams, &entropyMetadata, (void *)zc->entropyWorkspace, ((uint)(((6 << 10) + 256)) + ((nuint)(4) * (uint)((((35) > (52) ? (35) : (52)) + 2)))))); if ((ERR_isError(err_code)) != 0) { return(err_code); } } return(ZSTD_compressSubBlock_multi(&zc->seqStore, zc->blockState.prevCBlock, zc->blockState.nextCBlock, &entropyMetadata, &zc->appliedParams, dst, dstCapacity, src, srcSize, zc->bmi2, lastBlock, (void *)zc->entropyWorkspace, ((uint)(((6 << 10) + 256)) + ((nuint)(sizeof(uint)) * (uint)((((35) > (52) ? (35) : (52)) + 2)))))); }
public void Setup() { cCtx = Methods.ZSTD_createCCtx(); dCtx = Methods.ZSTD_createDCtx(); cCtxNative = ExternMethods.ZSTD_createCCtx(); dCtxNative = ExternMethods.ZSTD_createDCtx(); src = File.ReadAllBytes("dickens"); dest = new byte[Methods.ZSTD_compressBound((nuint)src.Length)]; uncompressed = new byte[src.Length]; fixed(byte *dstPtr = dest) fixed(byte *srcPtr = src) { compressedLength = ExternMethods.ZSTD_compressCCtx(cCtxNative, (IntPtr)dstPtr, (nuint)dest.Length, (IntPtr)srcPtr, (nuint)src.Length, level); } }