2 * Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
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.
11 #ifndef ZSTD_COMPRESS_SEQUENCES_H
12 #define ZSTD_COMPRESS_SEQUENCES_H
14 #include "../common/fse.h" /* FSE_repeat, FSE_CTable */
15 #include "../common/zstd_internal.h" /* symbolEncodingType_e, ZSTD_strategy */
18 ZSTD_defaultDisallowed
= 0,
19 ZSTD_defaultAllowed
= 1
20 } ZSTD_defaultPolicy_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
);
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
);
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
);
47 size_t ZSTD_fseBitCost(
48 FSE_CTable
const* ctable
,
49 unsigned const* count
,
52 size_t ZSTD_crossEntropyCost(short const* norm
, unsigned accuracyLog
,
53 unsigned const* count
, unsigned const max
);
54 #endif /* ZSTD_COMPRESS_SEQUENCES_H */