xref: /linux/lib/zstd/compress/zstd_compress_literals.h (revision e61f33273ca755b3e2ebee4520a76097199dc7a8)
1 /* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
2 /*
3  * Copyright (c) Meta Platforms, Inc. and affiliates.
4  * All rights reserved.
5  *
6  * This source code is licensed under both the BSD-style license (found in the
7  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
8  * in the COPYING file in the root directory of this source tree).
9  * You may select, at your option, one of the above-listed licenses.
10  */
11 
12 #ifndef ZSTD_COMPRESS_LITERALS_H
13 #define ZSTD_COMPRESS_LITERALS_H
14 
15 #include "zstd_compress_internal.h" /* ZSTD_hufCTables_t, ZSTD_minGain() */
16 
17 
18 size_t ZSTD_noCompressLiterals (void* dst, size_t dstCapacity, const void* src, size_t srcSize);
19 
20 /* ZSTD_compressRleLiteralsBlock() :
21  * Conditions :
22  * - All bytes in @src are identical
23  * - dstCapacity >= 4 */
24 size_t ZSTD_compressRleLiteralsBlock (void* dst, size_t dstCapacity, const void* src, size_t srcSize);
25 
26 /* ZSTD_compressLiterals():
27  * @entropyWorkspace: must be aligned on 4-bytes boundaries
28  * @entropyWorkspaceSize : must be >= HUF_WORKSPACE_SIZE
29  * @suspectUncompressible: sampling checks, to potentially skip huffman coding
30  */
31 size_t ZSTD_compressLiterals (void* dst, size_t dstCapacity,
32                         const void* src, size_t srcSize,
33                               void* entropyWorkspace, size_t entropyWorkspaceSize,
34                         const ZSTD_hufCTables_t* prevHuf,
35                               ZSTD_hufCTables_t* nextHuf,
36                               ZSTD_strategy strategy, int disableLiteralCompression,
37                               int suspectUncompressible,
38                               int bmi2);
39 
40 #endif /* ZSTD_COMPRESS_LITERALS_H */
41