1*c03c5b1cSMartin Matuska /* 2*c03c5b1cSMartin Matuska * Copyright (c) 2016-2020, Yann Collet, Facebook, Inc. 3*c03c5b1cSMartin Matuska * All rights reserved. 4*c03c5b1cSMartin Matuska * 5*c03c5b1cSMartin Matuska * This source code is licensed under both the BSD-style license (found in the 6*c03c5b1cSMartin Matuska * LICENSE file in the root directory of this source tree) and the GPLv2 (found 7*c03c5b1cSMartin Matuska * in the COPYING file in the root directory of this source tree). 8*c03c5b1cSMartin Matuska * You may select, at your option, one of the above-listed licenses. 9*c03c5b1cSMartin Matuska */ 10*c03c5b1cSMartin Matuska 11*c03c5b1cSMartin Matuska 12*c03c5b1cSMartin Matuska #ifndef ZSTD_DEC_BLOCK_H 13*c03c5b1cSMartin Matuska #define ZSTD_DEC_BLOCK_H 14*c03c5b1cSMartin Matuska 15*c03c5b1cSMartin Matuska /*-******************************************************* 16*c03c5b1cSMartin Matuska * Dependencies 17*c03c5b1cSMartin Matuska *********************************************************/ 18*c03c5b1cSMartin Matuska #include <stddef.h> /* size_t */ 19*c03c5b1cSMartin Matuska #include "../zstd.h" /* DCtx, and some public functions */ 20*c03c5b1cSMartin Matuska #include "../common/zstd_internal.h" /* blockProperties_t, and some public functions */ 21*c03c5b1cSMartin Matuska #include "zstd_decompress_internal.h" /* ZSTD_seqSymbol */ 22*c03c5b1cSMartin Matuska 23*c03c5b1cSMartin Matuska 24*c03c5b1cSMartin Matuska /* === Prototypes === */ 25*c03c5b1cSMartin Matuska 26*c03c5b1cSMartin Matuska /* note: prototypes already published within `zstd.h` : 27*c03c5b1cSMartin Matuska * ZSTD_decompressBlock() 28*c03c5b1cSMartin Matuska */ 29*c03c5b1cSMartin Matuska 30*c03c5b1cSMartin Matuska /* note: prototypes already published within `zstd_internal.h` : 31*c03c5b1cSMartin Matuska * ZSTD_getcBlockSize() 32*c03c5b1cSMartin Matuska * ZSTD_decodeSeqHeaders() 33*c03c5b1cSMartin Matuska */ 34*c03c5b1cSMartin Matuska 35*c03c5b1cSMartin Matuska 36*c03c5b1cSMartin Matuska /* ZSTD_decompressBlock_internal() : 37*c03c5b1cSMartin Matuska * decompress block, starting at `src`, 38*c03c5b1cSMartin Matuska * into destination buffer `dst`. 39*c03c5b1cSMartin Matuska * @return : decompressed block size, 40*c03c5b1cSMartin Matuska * or an error code (which can be tested using ZSTD_isError()) 41*c03c5b1cSMartin Matuska */ 42*c03c5b1cSMartin Matuska size_t ZSTD_decompressBlock_internal(ZSTD_DCtx* dctx, 43*c03c5b1cSMartin Matuska void* dst, size_t dstCapacity, 44*c03c5b1cSMartin Matuska const void* src, size_t srcSize, const int frame); 45*c03c5b1cSMartin Matuska 46*c03c5b1cSMartin Matuska /* ZSTD_buildFSETable() : 47*c03c5b1cSMartin Matuska * generate FSE decoding table for one symbol (ll, ml or off) 48*c03c5b1cSMartin Matuska * this function must be called with valid parameters only 49*c03c5b1cSMartin Matuska * (dt is large enough, normalizedCounter distribution total is a power of 2, max is within range, etc.) 50*c03c5b1cSMartin Matuska * in which case it cannot fail. 51*c03c5b1cSMartin Matuska * Internal use only. 52*c03c5b1cSMartin Matuska */ 53*c03c5b1cSMartin Matuska void ZSTD_buildFSETable(ZSTD_seqSymbol* dt, 54*c03c5b1cSMartin Matuska const short* normalizedCounter, unsigned maxSymbolValue, 55*c03c5b1cSMartin Matuska const U32* baseValue, const U32* nbAdditionalBits, 56*c03c5b1cSMartin Matuska unsigned tableLog); 57*c03c5b1cSMartin Matuska 58*c03c5b1cSMartin Matuska 59*c03c5b1cSMartin Matuska #endif /* ZSTD_DEC_BLOCK_H */ 60