xref: /freebsd-src/sys/contrib/openzfs/module/zstd/lib/decompress/zstd_decompress_block.h (revision c03c5b1c80914ec656fbee84539355d1fad68bf9)
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