Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
fse.h
Go to the documentation of this file.
1/* ******************************************************************
2 * FSE : Finite State Entropy codec
3 * Public Prototypes declaration
4 * Copyright (c) Meta Platforms, Inc. and affiliates.
5 *
6 * You can contact the author at :
7 * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
8 *
9 * This source code is licensed under both the BSD-style license (found in the
10 * LICENSE file in the root directory of this source tree) and the GPLv2 (found
11 * in the COPYING file in the root directory of this source tree).
12 * You may select, at your option, one of the above-listed licenses.
13****************************************************************** */
14
15#if defined (__cplusplus)
16extern "C" {
17#endif
18
19#ifndef FSE_H
20#define FSE_H
21
22
23/*-*****************************************
24* Dependencies
25******************************************/
26#include "zstd_deps.h" /* size_t, ptrdiff_t */
27
28
29/*-*****************************************
30* FSE_PUBLIC_API : control library symbols visibility
31******************************************/
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) /* Visual expected */
35# define FSE_PUBLIC_API __declspec(dllexport)
36#elif defined(FSE_DLL_IMPORT) && (FSE_DLL_IMPORT==1)
37# define FSE_PUBLIC_API __declspec(dllimport) /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/
38#else
39# define FSE_PUBLIC_API
40#endif
41
42/*------ Version ------*/
43#define FSE_VERSION_MAJOR 0
44#define FSE_VERSION_MINOR 9
45#define FSE_VERSION_RELEASE 0
46
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)
51
52#define FSE_VERSION_NUMBER (FSE_VERSION_MAJOR *100*100 + FSE_VERSION_MINOR *100 + FSE_VERSION_RELEASE)
53FSE_PUBLIC_API unsigned FSE_versionNumber(void);
56/*-*****************************************
57* Tool functions
58******************************************/
59FSE_PUBLIC_API size_t FSE_compressBound(size_t size); /* maximum compressed size */
60
61/* Error Management */
62FSE_PUBLIC_API unsigned FSE_isError(size_t code); /* tells if a return value is an error code */
63FSE_PUBLIC_API const char* FSE_getErrorName(size_t code); /* provides error code string (useful for debugging) */
64
65
66/*-*****************************************
67* FSE detailed API
68******************************************/
87/* *** COMPRESSION *** */
88
93FSE_PUBLIC_API unsigned FSE_optimalTableLog(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue);
94
106FSE_PUBLIC_API size_t FSE_normalizeCount(short* normalizedCounter, unsigned tableLog,
107 const unsigned* count, size_t srcSize, unsigned maxSymbolValue, unsigned useLowProbCount);
108
112FSE_PUBLIC_API size_t FSE_NCountWriteBound(unsigned maxSymbolValue, unsigned tableLog);
113
118FSE_PUBLIC_API size_t FSE_writeNCount (void* buffer, size_t bufferSize,
119 const short* normalizedCounter,
120 unsigned maxSymbolValue, unsigned tableLog);
121
124typedef unsigned FSE_CTable; /* don't allocate that. It's only meant to be more restrictive than void* */
125
129FSE_PUBLIC_API size_t FSE_buildCTable(FSE_CTable* ct, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog);
130
136FSE_PUBLIC_API size_t FSE_compress_usingCTable (void* dst, size_t dstCapacity, const void* src, size_t srcSize, const FSE_CTable* ct);
137
182/* *** DECOMPRESSION *** */
183
189FSE_PUBLIC_API size_t FSE_readNCount (short* normalizedCounter,
190 unsigned* maxSymbolValuePtr, unsigned* tableLogPtr,
191 const void* rBuffer, size_t rBuffSize);
192
196FSE_PUBLIC_API size_t FSE_readNCount_bmi2(short* normalizedCounter,
197 unsigned* maxSymbolValuePtr, unsigned* tableLogPtr,
198 const void* rBuffer, size_t rBuffSize, int bmi2);
199
200typedef unsigned FSE_DTable; /* don't allocate that. It's just a way to be more restrictive than void* */
201
230#endif /* FSE_H */
231
232#if defined(FSE_STATIC_LINKING_ONLY) && !defined(FSE_H_FSE_STATIC_LINKING_ONLY)
233#define FSE_H_FSE_STATIC_LINKING_ONLY
234
235/* *** Dependency *** */
236#include "bitstream.h"
237
238
239/* *****************************************
240* Static allocation
241*******************************************/
242/* FSE buffer bounds */
243#define FSE_NCOUNTBOUND 512
244#define FSE_BLOCKBOUND(size) ((size) + ((size)>>7) + 4 /* fse states */ + sizeof(size_t) /* bitContainer */)
245#define FSE_COMPRESSBOUND(size) (FSE_NCOUNTBOUND + FSE_BLOCKBOUND(size)) /* Macro version, useful for static allocation */
246
247/* It is possible to statically allocate FSE CTable/DTable as a table of FSE_CTable/FSE_DTable using below macros */
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)))
250
251/* or use the size to malloc() space directly. Pay attention to alignment restrictions though */
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))
254
255
256/* *****************************************
257 * FSE advanced API
258 ***************************************** */
259
260unsigned FSE_optimalTableLog_internal(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue, unsigned minus);
263size_t FSE_buildCTable_rle (FSE_CTable* ct, unsigned char symbolValue);
266/* FSE_buildCTable_wksp() :
267 * Same as FSE_buildCTable(), but using an externally allocated scratch buffer (`workSpace`).
268 * `wkspSize` must be >= `FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog)` of `unsigned`.
269 * See FSE_buildCTable_wksp() for breakdown of workspace usage.
270 */
271#define FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog) (((maxSymbolValue + 2) + (1ull << (tableLog)))/2 + sizeof(U64)/sizeof(U32) /* additional 8 bytes for potential table overwrite */)
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);
274
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))
277FSE_PUBLIC_API size_t FSE_buildDTable_wksp(FSE_DTable* dt, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize);
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);
286typedef enum {
287 FSE_repeat_none,
288 FSE_repeat_check,
289 FSE_repeat_valid
290 } FSE_repeat;
291
292/* *****************************************
293* FSE symbol compression API
294*******************************************/
299typedef struct {
300 ptrdiff_t value;
301 const void* stateTable;
302 const void* symbolTT;
303 unsigned stateLog;
305
306static void FSE_initCState(FSE_CState_t* CStatePtr, const FSE_CTable* ct);
307
308static void FSE_encodeSymbol(BIT_CStream_t* bitC, FSE_CState_t* CStatePtr, unsigned symbol);
309
310static void FSE_flushCState(BIT_CStream_t* bitC, const FSE_CState_t* CStatePtr);
311
356/* *****************************************
357* FSE symbol decompression API
358*******************************************/
359typedef struct {
360 size_t state;
361 const void* table; /* precise table may vary, depending on U16 */
363
364
365static void FSE_initDState(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD, const FSE_DTable* dt);
366
367static unsigned char FSE_decodeSymbol(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD);
368
369static unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr);
370
421/* *****************************************
422* FSE unsafe API
423*******************************************/
424static unsigned char FSE_decodeSymbolFast(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD);
425/* faster, but works only if nbBits is always >= 1 (otherwise, result will be corrupted) */
426
427
428/* *****************************************
429* Implementation of inlined functions
430*******************************************/
431typedef struct {
432 int deltaFindState;
433 U32 deltaNbBits;
434} FSE_symbolCompressionTransform; /* total 8 bytes */
435
436MEM_STATIC void FSE_initCState(FSE_CState_t* statePtr, const FSE_CTable* ct)
437{
438 const void* ptr = ct;
439 const U16* u16ptr = (const U16*) ptr;
440 const U32 tableLog = MEM_read16(ptr);
441 statePtr->value = (ptrdiff_t)1<<tableLog;
442 statePtr->stateTable = u16ptr+2;
443 statePtr->symbolTT = ct + 1 + (tableLog ? (1<<(tableLog-1)) : 1);
444 statePtr->stateLog = tableLog;
445}
446
447
451MEM_STATIC void FSE_initCState2(FSE_CState_t* statePtr, const FSE_CTable* ct, U32 symbol)
452{
453 FSE_initCState(statePtr, ct);
454 { const FSE_symbolCompressionTransform symbolTT = ((const FSE_symbolCompressionTransform*)(statePtr->symbolTT))[symbol];
455 const U16* stateTable = (const U16*)(statePtr->stateTable);
456 U32 nbBitsOut = (U32)((symbolTT.deltaNbBits + (1<<15)) >> 16);
457 statePtr->value = (nbBitsOut << 16) - symbolTT.deltaNbBits;
458 statePtr->value = stateTable[(statePtr->value >> nbBitsOut) + symbolTT.deltaFindState];
459 }
460}
461
462MEM_STATIC void FSE_encodeSymbol(BIT_CStream_t* bitC, FSE_CState_t* statePtr, unsigned symbol)
463{
464 FSE_symbolCompressionTransform const symbolTT = ((const FSE_symbolCompressionTransform*)(statePtr->symbolTT))[symbol];
465 const U16* const stateTable = (const U16*)(statePtr->stateTable);
466 U32 const nbBitsOut = (U32)((statePtr->value + symbolTT.deltaNbBits) >> 16);
467 BIT_addBits(bitC, statePtr->value, nbBitsOut);
468 statePtr->value = stateTable[ (statePtr->value >> nbBitsOut) + symbolTT.deltaFindState];
469}
470
471MEM_STATIC void FSE_flushCState(BIT_CStream_t* bitC, const FSE_CState_t* statePtr)
472{
473 BIT_addBits(bitC, statePtr->value, statePtr->stateLog);
474 BIT_flushBits(bitC);
475}
476
477
478/* FSE_getMaxNbBits() :
479 * Approximate maximum cost of a symbol, in bits.
480 * Fractional get rounded up (i.e. a symbol with a normalized frequency of 3 gives the same result as a frequency of 2)
481 * note 1 : assume symbolValue is valid (<= maxSymbolValue)
482 * note 2 : if freq[symbolValue]==0, @return a fake cost of tableLog+1 bits */
483MEM_STATIC U32 FSE_getMaxNbBits(const void* symbolTTPtr, U32 symbolValue)
484{
485 const FSE_symbolCompressionTransform* symbolTT = (const FSE_symbolCompressionTransform*) symbolTTPtr;
486 return (symbolTT[symbolValue].deltaNbBits + ((1<<16)-1)) >> 16;
487}
488
489/* FSE_bitCost() :
490 * Approximate symbol cost, as fractional value, using fixed-point format (accuracyLog fractional bits)
491 * note 1 : assume symbolValue is valid (<= maxSymbolValue)
492 * note 2 : if freq[symbolValue]==0, @return a fake cost of tableLog+1 bits */
493MEM_STATIC U32 FSE_bitCost(const void* symbolTTPtr, U32 tableLog, U32 symbolValue, U32 accuracyLog)
494{
495 const FSE_symbolCompressionTransform* symbolTT = (const FSE_symbolCompressionTransform*) symbolTTPtr;
496 U32 const minNbBits = symbolTT[symbolValue].deltaNbBits >> 16;
497 U32 const threshold = (minNbBits+1) << 16;
498 assert(tableLog < 16);
499 assert(accuracyLog < 31-tableLog); /* ensure enough room for renormalization double shift */
500 { U32 const tableSize = 1 << tableLog;
501 U32 const deltaFromThreshold = threshold - (symbolTT[symbolValue].deltaNbBits + tableSize);
502 U32 const normalizedDeltaFromThreshold = (deltaFromThreshold << accuracyLog) >> tableLog; /* linear interpolation (very approximate) */
503 U32 const bitMultiplier = 1 << accuracyLog;
504 assert(symbolTT[symbolValue].deltaNbBits + tableSize <= threshold);
505 assert(normalizedDeltaFromThreshold <= bitMultiplier);
506 return (minNbBits+1)*bitMultiplier - normalizedDeltaFromThreshold;
507 }
508}
509
510
511/* ====== Decompression ====== */
512
513typedef struct {
514 U16 tableLog;
515 U16 fastMode;
516} FSE_DTableHeader; /* sizeof U32 */
517
518typedef struct
519{
520 unsigned short newState;
521 unsigned char symbol;
522 unsigned char nbBits;
523} FSE_decode_t; /* size == U32 */
524
525MEM_STATIC void FSE_initDState(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD, const FSE_DTable* dt)
526{
527 const void* ptr = dt;
528 const FSE_DTableHeader* const DTableH = (const FSE_DTableHeader*)ptr;
529 DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog);
530 BIT_reloadDStream(bitD);
531 DStatePtr->table = dt + 1;
532}
533
534MEM_STATIC BYTE FSE_peekSymbol(const FSE_DState_t* DStatePtr)
535{
536 FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
537 return DInfo.symbol;
538}
539
540MEM_STATIC void FSE_updateState(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD)
541{
542 FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
543 U32 const nbBits = DInfo.nbBits;
544 size_t const lowBits = BIT_readBits(bitD, nbBits);
545 DStatePtr->state = DInfo.newState + lowBits;
546}
547
548MEM_STATIC BYTE FSE_decodeSymbol(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD)
549{
550 FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
551 U32 const nbBits = DInfo.nbBits;
552 BYTE const symbol = DInfo.symbol;
553 size_t const lowBits = BIT_readBits(bitD, nbBits);
554
555 DStatePtr->state = DInfo.newState + lowBits;
556 return symbol;
557}
558
561MEM_STATIC BYTE FSE_decodeSymbolFast(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD)
562{
563 FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
564 U32 const nbBits = DInfo.nbBits;
565 BYTE const symbol = DInfo.symbol;
566 size_t const lowBits = BIT_readBitsFast(bitD, nbBits);
567
568 DStatePtr->state = DInfo.newState + lowBits;
569 return symbol;
570}
571
572MEM_STATIC unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr)
573{
574 return DStatePtr->state == 0;
575}
576
577
578
579#ifndef FSE_COMMONDEFS_ONLY
580
581/* **************************************************************
582* Tuning parameters
583****************************************************************/
589#ifndef FSE_MAX_MEMORY_USAGE
590# define FSE_MAX_MEMORY_USAGE 14
591#endif
592#ifndef FSE_DEFAULT_MEMORY_USAGE
593# define FSE_DEFAULT_MEMORY_USAGE 13
594#endif
595#if (FSE_DEFAULT_MEMORY_USAGE > FSE_MAX_MEMORY_USAGE)
596# error "FSE_DEFAULT_MEMORY_USAGE must be <= FSE_MAX_MEMORY_USAGE"
597#endif
598
602#ifndef FSE_MAX_SYMBOL_VALUE
603# define FSE_MAX_SYMBOL_VALUE 255
604#endif
605
606/* **************************************************************
607* template functions type & suffix
608****************************************************************/
609#define FSE_FUNCTION_TYPE BYTE
610#define FSE_FUNCTION_EXTENSION
611#define FSE_DECODE_TYPE FSE_decode_t
612
613
614#endif /* !FSE_COMMONDEFS_ONLY */
615
616
617/* ***************************************************************
618* Constants
619*****************************************************************/
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
625
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"
629#endif
630
631#define FSE_TABLESTEP(tableSize) (((tableSize)>>1) + ((tableSize)>>3) + 3)
632
633
634#endif /* FSE_STATIC_LINKING_ONLY */
635
636
637#if defined (__cplusplus)
638}
639#endif
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
Definition zstd_v01.c:70
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
Definition zstd_v01.c:86
const void * table
Definition zstd_v01.c:88
size_t state
Definition zstd_v01.c:87
Definition zstd_v01.c:390
U16 tableLog
Definition zstd_v01.c:391
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
Definition zstd_v01.c:329
U32 deltaNbBits
Definition zstd_v01.c:331
int deltaFindState
Definition zstd_v01.c:330
Definition inftrees.h:24
size_t size
Definition platform.h:559
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