xref: /dflybsd-src/contrib/zstd/lib/compress/zstd_compress_sequences.h (revision a28cd43d19e8b720a6c852a4bbc5ae147a26165a)
1a28cd43dSSascha Wildner /*
2a28cd43dSSascha Wildner  * Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
3a28cd43dSSascha Wildner  * All rights reserved.
4a28cd43dSSascha Wildner  *
5a28cd43dSSascha Wildner  * This source code is licensed under both the BSD-style license (found in the
6a28cd43dSSascha Wildner  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7a28cd43dSSascha Wildner  * in the COPYING file in the root directory of this source tree).
8a28cd43dSSascha Wildner  * You may select, at your option, one of the above-listed licenses.
9a28cd43dSSascha Wildner  */
10a28cd43dSSascha Wildner 
11a28cd43dSSascha Wildner #ifndef ZSTD_COMPRESS_SEQUENCES_H
12a28cd43dSSascha Wildner #define ZSTD_COMPRESS_SEQUENCES_H
13a28cd43dSSascha Wildner 
14a28cd43dSSascha Wildner #include "../common/fse.h" /* FSE_repeat, FSE_CTable */
15a28cd43dSSascha Wildner #include "../common/zstd_internal.h" /* symbolEncodingType_e, ZSTD_strategy */
16a28cd43dSSascha Wildner 
17a28cd43dSSascha Wildner typedef enum {
18a28cd43dSSascha Wildner     ZSTD_defaultDisallowed = 0,
19a28cd43dSSascha Wildner     ZSTD_defaultAllowed = 1
20a28cd43dSSascha Wildner } ZSTD_defaultPolicy_e;
21a28cd43dSSascha Wildner 
22a28cd43dSSascha Wildner symbolEncodingType_e
23a28cd43dSSascha Wildner ZSTD_selectEncodingType(
24a28cd43dSSascha Wildner         FSE_repeat* repeatMode, unsigned const* count, unsigned const max,
25a28cd43dSSascha Wildner         size_t const mostFrequent, size_t nbSeq, unsigned const FSELog,
26a28cd43dSSascha Wildner         FSE_CTable const* prevCTable,
27a28cd43dSSascha Wildner         short const* defaultNorm, U32 defaultNormLog,
28a28cd43dSSascha Wildner         ZSTD_defaultPolicy_e const isDefaultAllowed,
29a28cd43dSSascha Wildner         ZSTD_strategy const strategy);
30a28cd43dSSascha Wildner 
31a28cd43dSSascha Wildner size_t
32a28cd43dSSascha Wildner ZSTD_buildCTable(void* dst, size_t dstCapacity,
33a28cd43dSSascha Wildner                 FSE_CTable* nextCTable, U32 FSELog, symbolEncodingType_e type,
34a28cd43dSSascha Wildner                 unsigned* count, U32 max,
35a28cd43dSSascha Wildner                 const BYTE* codeTable, size_t nbSeq,
36a28cd43dSSascha Wildner                 const S16* defaultNorm, U32 defaultNormLog, U32 defaultMax,
37a28cd43dSSascha Wildner                 const FSE_CTable* prevCTable, size_t prevCTableSize,
38a28cd43dSSascha Wildner                 void* entropyWorkspace, size_t entropyWorkspaceSize);
39a28cd43dSSascha Wildner 
40a28cd43dSSascha Wildner size_t ZSTD_encodeSequences(
41a28cd43dSSascha Wildner             void* dst, size_t dstCapacity,
42a28cd43dSSascha Wildner             FSE_CTable const* CTable_MatchLength, BYTE const* mlCodeTable,
43a28cd43dSSascha Wildner             FSE_CTable const* CTable_OffsetBits, BYTE const* ofCodeTable,
44a28cd43dSSascha Wildner             FSE_CTable const* CTable_LitLength, BYTE const* llCodeTable,
45a28cd43dSSascha Wildner             seqDef const* sequences, size_t nbSeq, int longOffsets, int bmi2);
46a28cd43dSSascha Wildner 
47a28cd43dSSascha Wildner size_t ZSTD_fseBitCost(
48a28cd43dSSascha Wildner     FSE_CTable const* ctable,
49a28cd43dSSascha Wildner     unsigned const* count,
50a28cd43dSSascha Wildner     unsigned const max);
51a28cd43dSSascha Wildner 
52a28cd43dSSascha Wildner size_t ZSTD_crossEntropyCost(short const* norm, unsigned accuracyLog,
53a28cd43dSSascha Wildner                              unsigned const* count, unsigned const max);
54a28cd43dSSascha Wildner #endif /* ZSTD_COMPRESS_SEQUENCES_H */
55