git subrepo pull (merge) --force deps/libchdr
[pcsx_rearmed.git] / deps / libchdr / deps / zstd-1.5.5 / doc / educational_decoder / zstd_decompress.h
CommitLineData
648db22b 1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
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*/
18typedef 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.
24size_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
29size_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
37size_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 */
45dictionary_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 */
54void 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 */
60void free_dictionary(dictionary_t *const dict);
61/******* END DICTIONARY MANAGEMENT *******************************************/