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