opnsense-src/sys/contrib/zstd/doc/educational_decoder/zstd_decompress.h

62 lines
2.5 KiB
C
Raw Normal View History

2017-04-15 15:47:16 -04:00
/*
2020-05-23 16:37:33 -04:00
* Copyright (c) 2016-2020, Facebook, Inc.
2017-04-15 15:47:16 -04:00
* All rights reserved.
*
2017-11-09 10:38:02 -05:00
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
2020-05-23 16:37:33 -04:00
* You may select, at your option, one of the above-listed licenses.
2017-04-15 15:47:16 -04:00
*/
2019-11-06 01:42:00 -05:00
#include <stddef.h> /* size_t */
2017-08-22 07:02:59 -04:00
/******* EXPOSED TYPES ********************************************************/
/*
* Contains the parsed contents of a dictionary
* This includes Huffman and FSE tables used for decoding and data on offsets
*/
typedef struct dictionary_s dictionary_t;
/******* END EXPOSED TYPES ****************************************************/
/******* DECOMPRESSION FUNCTIONS **********************************************/
/// Zstandard decompression functions.
/// `dst` must point to a space at least as large as the reconstructed output.
2017-04-15 15:47:16 -04:00
size_t ZSTD_decompress(void *const dst, const size_t dst_len,
2017-08-22 07:02:59 -04:00
const void *const src, const size_t src_len);
/// If `dict != NULL` and `dict_len >= 8`, does the same thing as
/// `ZSTD_decompress` but uses the provided dict
2017-04-15 15:47:16 -04:00
size_t ZSTD_decompress_with_dict(void *const dst, const size_t dst_len,
2017-08-22 07:02:59 -04:00
const void *const src, const size_t src_len,
dictionary_t* parsed_dict);
/// Get the decompressed size of an input stream so memory can be allocated in
/// advance
/// Returns -1 if the size can't be determined
/// Assumes decompression of a single frame
2017-04-15 15:47:16 -04:00
size_t ZSTD_get_decompressed_size(const void *const src, const size_t src_len);
2017-08-22 07:02:59 -04:00
/******* END DECOMPRESSION FUNCTIONS ******************************************/
/******* DICTIONARY MANAGEMENT ***********************************************/
/*
* Return a valid dictionary_t pointer for use with dictionary initialization
* or decompression
*/
2019-11-06 01:42:00 -05:00
dictionary_t* create_dictionary(void);
2017-08-22 07:02:59 -04:00
/*
* Parse a provided dictionary blob for use in decompression
* `src` -- must point to memory space representing the dictionary
* `src_len` -- must provide the dictionary size
* `dict` -- will contain the parsed contents of the dictionary and
* can be used for decompression
*/
void parse_dictionary(dictionary_t *const dict, const void *src,
size_t src_len);
2017-04-15 15:47:16 -04:00
2017-08-22 07:02:59 -04:00
/*
* Free internal Huffman tables, FSE tables, and dictionary content
*/
void free_dictionary(dictionary_t *const dict);
/******* END DICTIONARY MANAGEMENT *******************************************/