Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/zstd/doc/educational_decoder/zstd_decompress.h
48378 views
1
/*
2
* Copyright (c) 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
#include <stddef.h> /* size_t */
12
13
/******* EXPOSED TYPES ********************************************************/
14
/*
15
* Contains the parsed contents of a dictionary
16
* This includes Huffman and FSE tables used for decoding and data on offsets
17
*/
18
typedef struct dictionary_s dictionary_t;
19
/******* END EXPOSED TYPES ****************************************************/
20
21
/******* DECOMPRESSION FUNCTIONS **********************************************/
22
/// Zstandard decompression functions.
23
/// `dst` must point to a space at least as large as the reconstructed output.
24
size_t ZSTD_decompress(void *const dst, const size_t dst_len,
25
const void *const src, const size_t src_len);
26
27
/// If `dict != NULL` and `dict_len >= 8`, does the same thing as
28
/// `ZSTD_decompress` but uses the provided dict
29
size_t ZSTD_decompress_with_dict(void *const dst, const size_t dst_len,
30
const void *const src, const size_t src_len,
31
dictionary_t* parsed_dict);
32
33
/// Get the decompressed size of an input stream so memory can be allocated in
34
/// advance
35
/// Returns -1 if the size can't be determined
36
/// Assumes decompression of a single frame
37
size_t ZSTD_get_decompressed_size(const void *const src, const size_t src_len);
38
/******* END DECOMPRESSION FUNCTIONS ******************************************/
39
40
/******* DICTIONARY MANAGEMENT ***********************************************/
41
/*
42
* Return a valid dictionary_t pointer for use with dictionary initialization
43
* or decompression
44
*/
45
dictionary_t* create_dictionary(void);
46
47
/*
48
* Parse a provided dictionary blob for use in decompression
49
* `src` -- must point to memory space representing the dictionary
50
* `src_len` -- must provide the dictionary size
51
* `dict` -- will contain the parsed contents of the dictionary and
52
* can be used for decompression
53
*/
54
void parse_dictionary(dictionary_t *const dict, const void *src,
55
size_t src_len);
56
57
/*
58
* Free internal Huffman tables, FSE tables, and dictionary content
59
*/
60
void free_dictionary(dictionary_t *const dict);
61
/******* END DICTIONARY MANAGEMENT *******************************************/
62
63