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