15#if defined (__cplusplus)
32#if defined(FSE_DLL_EXPORT) && (FSE_DLL_EXPORT==1) && defined(__GNUC__) && (__GNUC__ >= 4)
33# define FSE_PUBLIC_API __attribute__ ((visibility ("default")))
34#elif defined(FSE_DLL_EXPORT) && (FSE_DLL_EXPORT==1)
35# define FSE_PUBLIC_API __declspec(dllexport)
36#elif defined(FSE_DLL_IMPORT) && (FSE_DLL_IMPORT==1)
37# define FSE_PUBLIC_API __declspec(dllimport)
39# define FSE_PUBLIC_API
43#define FSE_VERSION_MAJOR 0
44#define FSE_VERSION_MINOR 9
45#define FSE_VERSION_RELEASE 0
47#define FSE_LIB_VERSION FSE_VERSION_MAJOR.FSE_VERSION_MINOR.FSE_VERSION_RELEASE
48#define FSE_QUOTE(str) #str
49#define FSE_EXPAND_AND_QUOTE(str) FSE_QUOTE(str)
50#define FSE_VERSION_STRING FSE_EXPAND_AND_QUOTE(FSE_LIB_VERSION)
52#define FSE_VERSION_NUMBER (FSE_VERSION_MAJOR *100*100 + FSE_VERSION_MINOR *100 + FSE_VERSION_RELEASE)
107 const unsigned* count,
size_t srcSize,
unsigned maxSymbolValue,
unsigned useLowProbCount);
119 const short* normalizedCounter,
120 unsigned maxSymbolValue,
unsigned tableLog);
190 unsigned* maxSymbolValuePtr,
unsigned* tableLogPtr,
191 const void* rBuffer,
size_t rBuffSize);
197 unsigned* maxSymbolValuePtr,
unsigned* tableLogPtr,
198 const void* rBuffer,
size_t rBuffSize,
int bmi2);
232#if defined(FSE_STATIC_LINKING_ONLY) && !defined(FSE_H_FSE_STATIC_LINKING_ONLY)
233#define FSE_H_FSE_STATIC_LINKING_ONLY
243#define FSE_NCOUNTBOUND 512
244#define FSE_BLOCKBOUND(size) ((size) + ((size)>>7) + 4 + sizeof(size_t) )
245#define FSE_COMPRESSBOUND(size) (FSE_NCOUNTBOUND + FSE_BLOCKBOUND(size))
248#define FSE_CTABLE_SIZE_U32(maxTableLog, maxSymbolValue) (1 + (1<<((maxTableLog)-1)) + (((maxSymbolValue)+1)*2))
249#define FSE_DTABLE_SIZE_U32(maxTableLog) (1 + (1<<(maxTableLog)))
252#define FSE_CTABLE_SIZE(maxTableLog, maxSymbolValue) (FSE_CTABLE_SIZE_U32(maxTableLog, maxSymbolValue) * sizeof(FSE_CTable))
253#define FSE_DTABLE_SIZE(maxTableLog) (FSE_DTABLE_SIZE_U32(maxTableLog) * sizeof(FSE_DTable))
271#define FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog) (((maxSymbolValue + 2) + (1ull << (tableLog)))/2 + sizeof(U64)/sizeof(U32) )
272#define FSE_BUILD_CTABLE_WORKSPACE_SIZE(maxSymbolValue, tableLog) (sizeof(unsigned) * FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog))
273size_t FSE_buildCTable_wksp(
FSE_CTable* ct,
const short* normalizedCounter,
unsigned maxSymbolValue,
unsigned tableLog,
void* workSpace,
size_t wkspSize);
275#define FSE_BUILD_DTABLE_WKSP_SIZE(maxTableLog, maxSymbolValue) (sizeof(short) * (maxSymbolValue + 1) + (1ULL << maxTableLog) + 8)
276#define FSE_BUILD_DTABLE_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) ((FSE_BUILD_DTABLE_WKSP_SIZE(maxTableLog, maxSymbolValue) + sizeof(unsigned) - 1) / sizeof(unsigned))
280#define FSE_DECOMPRESS_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) (FSE_DTABLE_SIZE_U32(maxTableLog) + 1 + FSE_BUILD_DTABLE_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) + (FSE_MAX_SYMBOL_VALUE + 1) / 2 + 1)
281#define FSE_DECOMPRESS_WKSP_SIZE(maxTableLog, maxSymbolValue) (FSE_DECOMPRESS_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) * sizeof(unsigned))
282size_t FSE_decompress_wksp_bmi2(
void*
dst,
size_t dstCapacity,
const void* cSrc,
size_t cSrcSize,
unsigned maxLog,
void* workSpace,
size_t wkspSize,
int bmi2);
301 const void* stateTable;
302 const void* symbolTT;
369static unsigned FSE_endOfDState(
const FSE_DState_t* DStatePtr);
438 const void* ptr = ct;
439 const U16* u16ptr = (
const U16*) ptr;
441 statePtr->
value = (ptrdiff_t)1<<tableLog;
443 statePtr->
symbolTT = ct + 1 + (tableLog ? (1<<(tableLog-1)) : 1);
453 FSE_initCState(statePtr, ct);
486 return (symbolTT[symbolValue].deltaNbBits + ((1<<16)-1)) >> 16;
497 U32 const threshold = (minNbBits+1) << 16;
499 assert(accuracyLog < 31-tableLog);
500 {
U32 const tableSize = 1 << tableLog;
501 U32 const deltaFromThreshold = threshold - (symbolTT[symbolValue].
deltaNbBits + tableSize);
502 U32 const normalizedDeltaFromThreshold = (deltaFromThreshold << accuracyLog) >> tableLog;
503 U32 const bitMultiplier = 1 << accuracyLog;
504 assert(symbolTT[symbolValue].deltaNbBits + tableSize <= threshold);
505 assert(normalizedDeltaFromThreshold <= bitMultiplier);
506 return (minNbBits+1)*bitMultiplier - normalizedDeltaFromThreshold;
520 unsigned short newState;
521 unsigned char symbol;
522 unsigned char nbBits;
527 const void* ptr = dt;
531 DStatePtr->
table = dt + 1;
574 return DStatePtr->
state == 0;
579#ifndef FSE_COMMONDEFS_ONLY
589#ifndef FSE_MAX_MEMORY_USAGE
590# define FSE_MAX_MEMORY_USAGE 14
592#ifndef FSE_DEFAULT_MEMORY_USAGE
593# define FSE_DEFAULT_MEMORY_USAGE 13
595#if (FSE_DEFAULT_MEMORY_USAGE > FSE_MAX_MEMORY_USAGE)
596# error "FSE_DEFAULT_MEMORY_USAGE must be <= FSE_MAX_MEMORY_USAGE"
602#ifndef FSE_MAX_SYMBOL_VALUE
603# define FSE_MAX_SYMBOL_VALUE 255
609#define FSE_FUNCTION_TYPE BYTE
610#define FSE_FUNCTION_EXTENSION
611#define FSE_DECODE_TYPE FSE_decode_t
620#define FSE_MAX_TABLELOG (FSE_MAX_MEMORY_USAGE-2)
621#define FSE_MAX_TABLESIZE (1U<<FSE_MAX_TABLELOG)
622#define FSE_MAXTABLESIZE_MASK (FSE_MAX_TABLESIZE-1)
623#define FSE_DEFAULT_TABLELOG (FSE_DEFAULT_MEMORY_USAGE-2)
624#define FSE_MIN_TABLELOG 5
626#define FSE_TABLELOG_ABSOLUTE_MAX 15
627#if FSE_MAX_TABLELOG > FSE_TABLELOG_ABSOLUTE_MAX
628# error "FSE_MAX_TABLELOG > FSE_TABLELOG_ABSOLUTE_MAX is not supported"
631#define FSE_TABLESTEP(tableSize) (((tableSize)>>1) + ((tableSize)>>3) + 3)
637#if defined (__cplusplus)
static const void size_t const UInt64 * table
Definition XzCrc64.c:50
unsigned char BYTE
Definition lz4.c:314
unsigned int U32
Definition lz4.c:316
#define assert(condition)
Definition lz4.c:273
unsigned short U16
Definition lz4.c:315
char * dst
Definition lz4.h:833
char int srcSize
Definition lz4.h:806
const char * src
Definition lz4.h:866
Definition bitstream.h:58
Definition bitstream.h:92
ptrdiff_t value
Definition zstd_v01.c:71
unsigned stateLog
Definition zstd_v01.c:74
const void * stateTable
Definition zstd_v01.c:72
const void * symbolTT
Definition zstd_v01.c:73
const void * table
Definition zstd_v01.c:88
size_t state
Definition zstd_v01.c:87
Definition zstd_v01.c:126
unsigned char symbol
Definition zstd_v01.c:128
unsigned char nbBits
Definition zstd_v01.c:129
unsigned short newState
Definition zstd_v01.c:127
MEM_STATIC U16 MEM_read16(const void *memPtr)
Definition mem.h:111
#define MEM_STATIC
Definition mem.h:27
MEM_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t *bitD)
Definition bitstream.h:440
MEM_STATIC size_t BIT_readBits(BIT_DStream_t *bitD, unsigned nbBits)
Definition bitstream.h:401
MEM_STATIC void BIT_flushBits(BIT_CStream_t *bitC)
Definition bitstream.h:250
MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t *bitD, unsigned nbBits)
Definition bitstream.h:410
MEM_STATIC void BIT_addBits(BIT_CStream_t *bitC, size_t value, unsigned nbBits)
Definition bitstream.h:209
FSE_PUBLIC_API size_t FSE_readNCount(short *normalizedCounter, unsigned *maxSymbolValuePtr, unsigned *tableLogPtr, const void *rBuffer, size_t rBuffSize)
Definition entropy_common.c:247
FSE_PUBLIC_API size_t FSE_writeNCount(void *buffer, size_t bufferSize, const short *normalizedCounter, unsigned maxSymbolValue, unsigned tableLog)
Definition fse_compress.c:328
FSE_PUBLIC_API const char * FSE_getErrorName(size_t code)
Definition entropy_common.c:32
unsigned FSE_CTable
Definition fse.h:166
FSE_PUBLIC_API size_t FSE_readNCount_bmi2(short *normalizedCounter, unsigned *maxSymbolValuePtr, unsigned *tableLogPtr, const void *rBuffer, size_t rBuffSize, int bmi2)
Definition entropy_common.c:234
FSE_PUBLIC_API size_t FSE_buildCTable(FSE_CTable *ct, const short *normalizedCounter, unsigned maxSymbolValue, unsigned tableLog)
FSE_PUBLIC_API size_t FSE_normalizeCount(short *normalizedCounter, unsigned tableLog, const unsigned *count, size_t srcSize, unsigned maxSymbolValue, unsigned useLowProbCount)
Definition fse_compress.c:473
FSE_PUBLIC_API unsigned FSE_versionNumber(void)
Definition entropy_common.c:27
FSE_PUBLIC_API size_t FSE_NCountWriteBound(unsigned maxSymbolValue, unsigned tableLog)
Definition fse_compress.c:222
FSE_PUBLIC_API unsigned FSE_optimalTableLog(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue)
Definition fse_compress.c:379
FSE_PUBLIC_API size_t FSE_compressBound(size_t size)
Definition fse_compress.c:665
unsigned FSE_DTable
Definition fse.h:246
FSE_PUBLIC_API size_t FSE_compress_usingCTable(void *dst, size_t dstCapacity, const void *src, size_t srcSize, const FSE_CTable *ct)
Definition fse_compress.c:652
#define FSE_PUBLIC_API
Definition fse.h:39
#define FSE_isError
Definition fse_decompress.c:32
size_t FSE_decompress_wksp_bmi2(void *dst, size_t dstCapacity, const void *cSrc, size_t cSrcSize, unsigned maxLog, void *workSpace, size_t wkspSize, int bmi2)
Definition fse_decompress.c:374
size_t FSE_buildDTable_wksp(FSE_DTable *dt, const short *normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void *workSpace, size_t wkspSize)
Definition fse_decompress.c:176
size_t FSE_buildCTable_wksp(FSE_CTable *ct, const short *normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void *workSpace, size_t wkspSize)
Definition fse_compress.c:67
unsigned FSE_optimalTableLog_internal(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue, unsigned minus)
Definition fse_compress.c:365
size_t FSE_buildCTable_rle(FSE_CTable *ct, BYTE symbolValue)
Definition fse_compress.c:570