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 | #ifndef ZSTD_COMPRESS_SEQUENCES_H |
12 | #define ZSTD_COMPRESS_SEQUENCES_H |
13 | |
14 | #include "../common/fse.h" /* FSE_repeat, FSE_CTable */ |
15 | #include "../common/zstd_internal.h" /* symbolEncodingType_e, ZSTD_strategy */ |
16 | |
17 | typedef enum { |
18 | ZSTD_defaultDisallowed = 0, |
19 | ZSTD_defaultAllowed = 1 |
20 | } ZSTD_defaultPolicy_e; |
21 | |
22 | symbolEncodingType_e |
23 | ZSTD_selectEncodingType( |
24 | FSE_repeat* repeatMode, unsigned const* count, unsigned const max, |
25 | size_t const mostFrequent, size_t nbSeq, unsigned const FSELog, |
26 | FSE_CTable const* prevCTable, |
27 | short const* defaultNorm, U32 defaultNormLog, |
28 | ZSTD_defaultPolicy_e const isDefaultAllowed, |
29 | ZSTD_strategy const strategy); |
30 | |
31 | size_t |
32 | ZSTD_buildCTable(void* dst, size_t dstCapacity, |
33 | FSE_CTable* nextCTable, U32 FSELog, symbolEncodingType_e type, |
34 | unsigned* count, U32 max, |
35 | const BYTE* codeTable, size_t nbSeq, |
36 | const S16* defaultNorm, U32 defaultNormLog, U32 defaultMax, |
37 | const FSE_CTable* prevCTable, size_t prevCTableSize, |
38 | void* entropyWorkspace, size_t entropyWorkspaceSize); |
39 | |
40 | size_t ZSTD_encodeSequences( |
41 | void* dst, size_t dstCapacity, |
42 | FSE_CTable const* CTable_MatchLength, BYTE const* mlCodeTable, |
43 | FSE_CTable const* CTable_OffsetBits, BYTE const* ofCodeTable, |
44 | FSE_CTable const* CTable_LitLength, BYTE const* llCodeTable, |
45 | seqDef const* sequences, size_t nbSeq, int longOffsets, int bmi2); |
46 | |
47 | size_t ZSTD_fseBitCost( |
48 | FSE_CTable const* ctable, |
49 | unsigned const* count, |
50 | unsigned const max); |
51 | |
52 | size_t ZSTD_crossEntropyCost(short const* norm, unsigned accuracyLog, |
53 | unsigned const* count, unsigned const max); |
54 | #endif /* ZSTD_COMPRESS_SEQUENCES_H */ |
55 | |