xref: /freebsd-src/sys/contrib/zstd/lib/compress/zstd_compress_sequences.h (revision 5ff13fbc199bdf5f0572845351c68ee5ca828e71)
14d3f1eafSConrad Meyer /*
2*5ff13fbcSAllan Jude  * Copyright (c) Yann Collet, Facebook, Inc.
34d3f1eafSConrad Meyer  * All rights reserved.
44d3f1eafSConrad Meyer  *
54d3f1eafSConrad Meyer  * This source code is licensed under both the BSD-style license (found in the
64d3f1eafSConrad Meyer  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
74d3f1eafSConrad Meyer  * in the COPYING file in the root directory of this source tree).
84d3f1eafSConrad Meyer  * You may select, at your option, one of the above-listed licenses.
94d3f1eafSConrad Meyer  */
104d3f1eafSConrad Meyer 
114d3f1eafSConrad Meyer #ifndef ZSTD_COMPRESS_SEQUENCES_H
124d3f1eafSConrad Meyer #define ZSTD_COMPRESS_SEQUENCES_H
134d3f1eafSConrad Meyer 
1437f1f268SConrad Meyer #include "../common/fse.h" /* FSE_repeat, FSE_CTable */
1537f1f268SConrad Meyer #include "../common/zstd_internal.h" /* symbolEncodingType_e, ZSTD_strategy */
164d3f1eafSConrad Meyer 
174d3f1eafSConrad Meyer typedef enum {
184d3f1eafSConrad Meyer     ZSTD_defaultDisallowed = 0,
194d3f1eafSConrad Meyer     ZSTD_defaultAllowed = 1
204d3f1eafSConrad Meyer } ZSTD_defaultPolicy_e;
214d3f1eafSConrad Meyer 
224d3f1eafSConrad Meyer symbolEncodingType_e
234d3f1eafSConrad Meyer ZSTD_selectEncodingType(
244d3f1eafSConrad Meyer         FSE_repeat* repeatMode, unsigned const* count, unsigned const max,
254d3f1eafSConrad Meyer         size_t const mostFrequent, size_t nbSeq, unsigned const FSELog,
264d3f1eafSConrad Meyer         FSE_CTable const* prevCTable,
274d3f1eafSConrad Meyer         short const* defaultNorm, U32 defaultNormLog,
284d3f1eafSConrad Meyer         ZSTD_defaultPolicy_e const isDefaultAllowed,
294d3f1eafSConrad Meyer         ZSTD_strategy const strategy);
304d3f1eafSConrad Meyer 
314d3f1eafSConrad Meyer size_t
324d3f1eafSConrad Meyer ZSTD_buildCTable(void* dst, size_t dstCapacity,
334d3f1eafSConrad Meyer                 FSE_CTable* nextCTable, U32 FSELog, symbolEncodingType_e type,
344d3f1eafSConrad Meyer                 unsigned* count, U32 max,
354d3f1eafSConrad Meyer                 const BYTE* codeTable, size_t nbSeq,
364d3f1eafSConrad Meyer                 const S16* defaultNorm, U32 defaultNormLog, U32 defaultMax,
374d3f1eafSConrad Meyer                 const FSE_CTable* prevCTable, size_t prevCTableSize,
389cbefe25SConrad Meyer                 void* entropyWorkspace, size_t entropyWorkspaceSize);
394d3f1eafSConrad Meyer 
404d3f1eafSConrad Meyer size_t ZSTD_encodeSequences(
414d3f1eafSConrad Meyer             void* dst, size_t dstCapacity,
424d3f1eafSConrad Meyer             FSE_CTable const* CTable_MatchLength, BYTE const* mlCodeTable,
434d3f1eafSConrad Meyer             FSE_CTable const* CTable_OffsetBits, BYTE const* ofCodeTable,
444d3f1eafSConrad Meyer             FSE_CTable const* CTable_LitLength, BYTE const* llCodeTable,
454d3f1eafSConrad Meyer             seqDef const* sequences, size_t nbSeq, int longOffsets, int bmi2);
464d3f1eafSConrad Meyer 
4737f1f268SConrad Meyer size_t ZSTD_fseBitCost(
4837f1f268SConrad Meyer     FSE_CTable const* ctable,
4937f1f268SConrad Meyer     unsigned const* count,
5037f1f268SConrad Meyer     unsigned const max);
5137f1f268SConrad Meyer 
5237f1f268SConrad Meyer size_t ZSTD_crossEntropyCost(short const* norm, unsigned accuracyLog,
5337f1f268SConrad Meyer                              unsigned const* count, unsigned const max);
544d3f1eafSConrad Meyer #endif /* ZSTD_COMPRESS_SEQUENCES_H */
55