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) Yann Collet, Facebook, Inc.
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* FSE simple functions
58******************************************/
67FSE_PUBLIC_API size_t FSE_compress(void* dst, size_t dstCapacity,
68 const void* src, size_t srcSize);
69
80FSE_PUBLIC_API size_t FSE_decompress(void* dst, size_t dstCapacity,
81 const void* cSrc, size_t cSrcSize);
82
83
84/*-*****************************************
85* Tool functions
86******************************************/
87FSE_PUBLIC_API size_t FSE_compressBound(size_t size); /* maximum compressed size */
88
89/* Error Management */
90FSE_PUBLIC_API unsigned FSE_isError(size_t code); /* tells if a return value is an error code */
91FSE_PUBLIC_API const char* FSE_getErrorName(size_t code); /* provides error code string (useful for debugging) */
92
93
94/*-*****************************************
95* FSE advanced functions
96******************************************/
105FSE_PUBLIC_API size_t FSE_compress2 (void* dst, size_t dstSize, const void* src, size_t srcSize, unsigned maxSymbolValue, unsigned tableLog);
106
107
108/*-*****************************************
109* FSE detailed API
110******************************************/
129/* *** COMPRESSION *** */
130
135FSE_PUBLIC_API unsigned FSE_optimalTableLog(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue);
136
148FSE_PUBLIC_API size_t FSE_normalizeCount(short* normalizedCounter, unsigned tableLog,
149 const unsigned* count, size_t srcSize, unsigned maxSymbolValue, unsigned useLowProbCount);
150
154FSE_PUBLIC_API size_t FSE_NCountWriteBound(unsigned maxSymbolValue, unsigned tableLog);
155
160FSE_PUBLIC_API size_t FSE_writeNCount (void* buffer, size_t bufferSize,
161 const short* normalizedCounter,
162 unsigned maxSymbolValue, unsigned tableLog);
163
166typedef unsigned FSE_CTable; /* don't allocate that. It's only meant to be more restrictive than void* */
167FSE_PUBLIC_API FSE_CTable* FSE_createCTable (unsigned maxSymbolValue, unsigned tableLog);
169
173FSE_PUBLIC_API size_t FSE_buildCTable(FSE_CTable* ct, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog);
174
180FSE_PUBLIC_API size_t FSE_compress_usingCTable (void* dst, size_t dstCapacity, const void* src, size_t srcSize, const FSE_CTable* ct);
181
226/* *** DECOMPRESSION *** */
227
233FSE_PUBLIC_API size_t FSE_readNCount (short* normalizedCounter,
234 unsigned* maxSymbolValuePtr, unsigned* tableLogPtr,
235 const void* rBuffer, size_t rBuffSize);
236
240FSE_PUBLIC_API size_t FSE_readNCount_bmi2(short* normalizedCounter,
241 unsigned* maxSymbolValuePtr, unsigned* tableLogPtr,
242 const void* rBuffer, size_t rBuffSize, int bmi2);
243
246typedef unsigned FSE_DTable; /* don't allocate that. It's just a way to be more restrictive than void* */
247FSE_PUBLIC_API FSE_DTable* FSE_createDTable(unsigned tableLog);
249
253FSE_PUBLIC_API size_t FSE_buildDTable (FSE_DTable* dt, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog);
254
260FSE_PUBLIC_API size_t FSE_decompress_usingDTable(void* dst, size_t dstCapacity, const void* cSrc, size_t cSrcSize, const FSE_DTable* dt);
261
290#endif /* FSE_H */
291
292#if defined(FSE_STATIC_LINKING_ONLY) && !defined(FSE_H_FSE_STATIC_LINKING_ONLY)
293#define FSE_H_FSE_STATIC_LINKING_ONLY
294
295/* *** Dependency *** */
296#include "bitstream.h"
297
298
299/* *****************************************
300* Static allocation
301*******************************************/
302/* FSE buffer bounds */
303#define FSE_NCOUNTBOUND 512
304#define FSE_BLOCKBOUND(size) ((size) + ((size)>>7) + 4 /* fse states */ + sizeof(size_t) /* bitContainer */)
305#define FSE_COMPRESSBOUND(size) (FSE_NCOUNTBOUND + FSE_BLOCKBOUND(size)) /* Macro version, useful for static allocation */
306
307/* It is possible to statically allocate FSE CTable/DTable as a table of FSE_CTable/FSE_DTable using below macros */
308#define FSE_CTABLE_SIZE_U32(maxTableLog, maxSymbolValue) (1 + (1<<((maxTableLog)-1)) + (((maxSymbolValue)+1)*2))
309#define FSE_DTABLE_SIZE_U32(maxTableLog) (1 + (1<<(maxTableLog)))
310
311/* or use the size to malloc() space directly. Pay attention to alignment restrictions though */
312#define FSE_CTABLE_SIZE(maxTableLog, maxSymbolValue) (FSE_CTABLE_SIZE_U32(maxTableLog, maxSymbolValue) * sizeof(FSE_CTable))
313#define FSE_DTABLE_SIZE(maxTableLog) (FSE_DTABLE_SIZE_U32(maxTableLog) * sizeof(FSE_DTable))
314
315
316/* *****************************************
317 * FSE advanced API
318 ***************************************** */
319
320unsigned FSE_optimalTableLog_internal(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue, unsigned minus);
323/* FSE_compress_wksp() :
324 * Same as FSE_compress2(), but using an externally allocated scratch buffer (`workSpace`).
325 * FSE_COMPRESS_WKSP_SIZE_U32() provides the minimum size required for `workSpace` as a table of FSE_CTable.
326 */
327#define FSE_COMPRESS_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) ( FSE_CTABLE_SIZE_U32(maxTableLog, maxSymbolValue) + ((maxTableLog > 12) ? (1 << (maxTableLog - 2)) : 1024) )
328size_t FSE_compress_wksp (void* dst, size_t dstSize, const void* src, size_t srcSize, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize);
329
330size_t FSE_buildCTable_raw (FSE_CTable* ct, unsigned nbBits);
333size_t FSE_buildCTable_rle (FSE_CTable* ct, unsigned char symbolValue);
336/* FSE_buildCTable_wksp() :
337 * Same as FSE_buildCTable(), but using an externally allocated scratch buffer (`workSpace`).
338 * `wkspSize` must be >= `FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog)` of `unsigned`.
339 * See FSE_buildCTable_wksp() for breakdown of workspace usage.
340 */
341#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 */)
342#define FSE_BUILD_CTABLE_WORKSPACE_SIZE(maxSymbolValue, tableLog) (sizeof(unsigned) * FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog))
343size_t FSE_buildCTable_wksp(FSE_CTable* ct, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize);
344
345#define FSE_BUILD_DTABLE_WKSP_SIZE(maxTableLog, maxSymbolValue) (sizeof(short) * (maxSymbolValue + 1) + (1ULL << maxTableLog) + 8)
346#define FSE_BUILD_DTABLE_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) ((FSE_BUILD_DTABLE_WKSP_SIZE(maxTableLog, maxSymbolValue) + sizeof(unsigned) - 1) / sizeof(unsigned))
347FSE_PUBLIC_API size_t FSE_buildDTable_wksp(FSE_DTable* dt, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize);
350size_t FSE_buildDTable_raw (FSE_DTable* dt, unsigned nbBits);
353size_t FSE_buildDTable_rle (FSE_DTable* dt, unsigned char symbolValue);
356#define FSE_DECOMPRESS_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) (FSE_DTABLE_SIZE_U32(maxTableLog) + FSE_BUILD_DTABLE_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) + (FSE_MAX_SYMBOL_VALUE + 1) / 2 + 1)
357#define FSE_DECOMPRESS_WKSP_SIZE(maxTableLog, maxSymbolValue) (FSE_DECOMPRESS_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) * sizeof(unsigned))
358size_t FSE_decompress_wksp(void* dst, size_t dstCapacity, const void* cSrc, size_t cSrcSize, unsigned maxLog, void* workSpace, size_t wkspSize);
361size_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);
364typedef enum {
365 FSE_repeat_none,
366 FSE_repeat_check,
367 FSE_repeat_valid
368 } FSE_repeat;
369
370/* *****************************************
371* FSE symbol compression API
372*******************************************/
377typedef struct {
378 ptrdiff_t value;
379 const void* stateTable;
380 const void* symbolTT;
381 unsigned stateLog;
383
384static void FSE_initCState(FSE_CState_t* CStatePtr, const FSE_CTable* ct);
385
386static void FSE_encodeSymbol(BIT_CStream_t* bitC, FSE_CState_t* CStatePtr, unsigned symbol);
387
388static void FSE_flushCState(BIT_CStream_t* bitC, const FSE_CState_t* CStatePtr);
389
434/* *****************************************
435* FSE symbol decompression API
436*******************************************/
437typedef struct {
438 size_t state;
439 const void* table; /* precise table may vary, depending on U16 */
441
442
443static void FSE_initDState(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD, const FSE_DTable* dt);
444
445static unsigned char FSE_decodeSymbol(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD);
446
447static unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr);
448
499/* *****************************************
500* FSE unsafe API
501*******************************************/
502static unsigned char FSE_decodeSymbolFast(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD);
503/* faster, but works only if nbBits is always >= 1 (otherwise, result will be corrupted) */
504
505
506/* *****************************************
507* Implementation of inlined functions
508*******************************************/
509typedef struct {
510 int deltaFindState;
511 U32 deltaNbBits;
512} FSE_symbolCompressionTransform; /* total 8 bytes */
513
514MEM_STATIC void FSE_initCState(FSE_CState_t* statePtr, const FSE_CTable* ct)
515{
516 const void* ptr = ct;
517 const U16* u16ptr = (const U16*) ptr;
518 const U32 tableLog = MEM_read16(ptr);
519 statePtr->value = (ptrdiff_t)1<<tableLog;
520 statePtr->stateTable = u16ptr+2;
521 statePtr->symbolTT = ct + 1 + (tableLog ? (1<<(tableLog-1)) : 1);
522 statePtr->stateLog = tableLog;
523}
524
525
529MEM_STATIC void FSE_initCState2(FSE_CState_t* statePtr, const FSE_CTable* ct, U32 symbol)
530{
531 FSE_initCState(statePtr, ct);
532 { const FSE_symbolCompressionTransform symbolTT = ((const FSE_symbolCompressionTransform*)(statePtr->symbolTT))[symbol];
533 const U16* stateTable = (const U16*)(statePtr->stateTable);
534 U32 nbBitsOut = (U32)((symbolTT.deltaNbBits + (1<<15)) >> 16);
535 statePtr->value = (nbBitsOut << 16) - symbolTT.deltaNbBits;
536 statePtr->value = stateTable[(statePtr->value >> nbBitsOut) + symbolTT.deltaFindState];
537 }
538}
539
540MEM_STATIC void FSE_encodeSymbol(BIT_CStream_t* bitC, FSE_CState_t* statePtr, unsigned symbol)
541{
542 FSE_symbolCompressionTransform const symbolTT = ((const FSE_symbolCompressionTransform*)(statePtr->symbolTT))[symbol];
543 const U16* const stateTable = (const U16*)(statePtr->stateTable);
544 U32 const nbBitsOut = (U32)((statePtr->value + symbolTT.deltaNbBits) >> 16);
545 BIT_addBits(bitC, statePtr->value, nbBitsOut);
546 statePtr->value = stateTable[ (statePtr->value >> nbBitsOut) + symbolTT.deltaFindState];
547}
548
549MEM_STATIC void FSE_flushCState(BIT_CStream_t* bitC, const FSE_CState_t* statePtr)
550{
551 BIT_addBits(bitC, statePtr->value, statePtr->stateLog);
552 BIT_flushBits(bitC);
553}
554
555
556/* FSE_getMaxNbBits() :
557 * Approximate maximum cost of a symbol, in bits.
558 * Fractional get rounded up (i.e : a symbol with a normalized frequency of 3 gives the same result as a frequency of 2)
559 * note 1 : assume symbolValue is valid (<= maxSymbolValue)
560 * note 2 : if freq[symbolValue]==0, @return a fake cost of tableLog+1 bits */
561MEM_STATIC U32 FSE_getMaxNbBits(const void* symbolTTPtr, U32 symbolValue)
562{
563 const FSE_symbolCompressionTransform* symbolTT = (const FSE_symbolCompressionTransform*) symbolTTPtr;
564 return (symbolTT[symbolValue].deltaNbBits + ((1<<16)-1)) >> 16;
565}
566
567/* FSE_bitCost() :
568 * Approximate symbol cost, as fractional value, using fixed-point format (accuracyLog fractional bits)
569 * note 1 : assume symbolValue is valid (<= maxSymbolValue)
570 * note 2 : if freq[symbolValue]==0, @return a fake cost of tableLog+1 bits */
571MEM_STATIC U32 FSE_bitCost(const void* symbolTTPtr, U32 tableLog, U32 symbolValue, U32 accuracyLog)
572{
573 const FSE_symbolCompressionTransform* symbolTT = (const FSE_symbolCompressionTransform*) symbolTTPtr;
574 U32 const minNbBits = symbolTT[symbolValue].deltaNbBits >> 16;
575 U32 const threshold = (minNbBits+1) << 16;
576 assert(tableLog < 16);
577 assert(accuracyLog < 31-tableLog); /* ensure enough room for renormalization double shift */
578 { U32 const tableSize = 1 << tableLog;
579 U32 const deltaFromThreshold = threshold - (symbolTT[symbolValue].deltaNbBits + tableSize);
580 U32 const normalizedDeltaFromThreshold = (deltaFromThreshold << accuracyLog) >> tableLog; /* linear interpolation (very approximate) */
581 U32 const bitMultiplier = 1 << accuracyLog;
582 assert(symbolTT[symbolValue].deltaNbBits + tableSize <= threshold);
583 assert(normalizedDeltaFromThreshold <= bitMultiplier);
584 return (minNbBits+1)*bitMultiplier - normalizedDeltaFromThreshold;
585 }
586}
587
588
589/* ====== Decompression ====== */
590
591typedef struct {
592 U16 tableLog;
593 U16 fastMode;
594} FSE_DTableHeader; /* sizeof U32 */
595
596typedef struct
597{
598 unsigned short newState;
599 unsigned char symbol;
600 unsigned char nbBits;
601} FSE_decode_t; /* size == U32 */
602
603MEM_STATIC void FSE_initDState(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD, const FSE_DTable* dt)
604{
605 const void* ptr = dt;
606 const FSE_DTableHeader* const DTableH = (const FSE_DTableHeader*)ptr;
607 DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog);
608 BIT_reloadDStream(bitD);
609 DStatePtr->table = dt + 1;
610}
611
612MEM_STATIC BYTE FSE_peekSymbol(const FSE_DState_t* DStatePtr)
613{
614 FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
615 return DInfo.symbol;
616}
617
618MEM_STATIC void FSE_updateState(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD)
619{
620 FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
621 U32 const nbBits = DInfo.nbBits;
622 size_t const lowBits = BIT_readBits(bitD, nbBits);
623 DStatePtr->state = DInfo.newState + lowBits;
624}
625
626MEM_STATIC BYTE FSE_decodeSymbol(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD)
627{
628 FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
629 U32 const nbBits = DInfo.nbBits;
630 BYTE const symbol = DInfo.symbol;
631 size_t const lowBits = BIT_readBits(bitD, nbBits);
632
633 DStatePtr->state = DInfo.newState + lowBits;
634 return symbol;
635}
636
639MEM_STATIC BYTE FSE_decodeSymbolFast(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD)
640{
641 FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
642 U32 const nbBits = DInfo.nbBits;
643 BYTE const symbol = DInfo.symbol;
644 size_t const lowBits = BIT_readBitsFast(bitD, nbBits);
645
646 DStatePtr->state = DInfo.newState + lowBits;
647 return symbol;
648}
649
650MEM_STATIC unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr)
651{
652 return DStatePtr->state == 0;
653}
654
655
656
657#ifndef FSE_COMMONDEFS_ONLY
658
659/* **************************************************************
660* Tuning parameters
661****************************************************************/
667#ifndef FSE_MAX_MEMORY_USAGE
668# define FSE_MAX_MEMORY_USAGE 14
669#endif
670#ifndef FSE_DEFAULT_MEMORY_USAGE
671# define FSE_DEFAULT_MEMORY_USAGE 13
672#endif
673#if (FSE_DEFAULT_MEMORY_USAGE > FSE_MAX_MEMORY_USAGE)
674# error "FSE_DEFAULT_MEMORY_USAGE must be <= FSE_MAX_MEMORY_USAGE"
675#endif
676
680#ifndef FSE_MAX_SYMBOL_VALUE
681# define FSE_MAX_SYMBOL_VALUE 255
682#endif
683
684/* **************************************************************
685* template functions type & suffix
686****************************************************************/
687#define FSE_FUNCTION_TYPE BYTE
688#define FSE_FUNCTION_EXTENSION
689#define FSE_DECODE_TYPE FSE_decode_t
690
691
692#endif /* !FSE_COMMONDEFS_ONLY */
693
694
695/* ***************************************************************
696* Constants
697*****************************************************************/
698#define FSE_MAX_TABLELOG (FSE_MAX_MEMORY_USAGE-2)
699#define FSE_MAX_TABLESIZE (1U<<FSE_MAX_TABLELOG)
700#define FSE_MAXTABLESIZE_MASK (FSE_MAX_TABLESIZE-1)
701#define FSE_DEFAULT_TABLELOG (FSE_DEFAULT_MEMORY_USAGE-2)
702#define FSE_MIN_TABLELOG 5
703
704#define FSE_TABLELOG_ABSOLUTE_MAX 15
705#if FSE_MAX_TABLELOG > FSE_TABLELOG_ABSOLUTE_MAX
706# error "FSE_MAX_TABLELOG > FSE_TABLELOG_ABSOLUTE_MAX is not supported"
707#endif
708
709#define FSE_TABLESTEP(tableSize) (((tableSize)>>1) + ((tableSize)>>3) + 3)
710
711
712#endif /* FSE_STATIC_LINKING_ONLY */
713
714
715#if defined (__cplusplus)
716}
717#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_buildDTable(FSE_DTable *dt, const short *normalizedCounter, unsigned maxSymbolValue, unsigned tableLog)
Definition zstd_v04.c:1073
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 FSE_CTable * FSE_createCTable(unsigned maxSymbolValue, unsigned tableLog)
Definition fse_compress.c:345
FSE_PUBLIC_API size_t FSE_compress(void *dst, size_t dstCapacity, const void *src, size_t srcSize)
Definition fse_compress.c:735
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_decompress(void *dst, size_t dstCapacity, const void *cSrc, size_t cSrcSize)
Definition zstd_v04.c:1403
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 void FSE_freeCTable(FSE_CTable *ct)
Definition fse_compress.c:353
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 size_t FSE_decompress_usingDTable(void *dst, size_t dstCapacity, const void *cSrc, size_t cSrcSize, const FSE_DTable *dt)
Definition zstd_v04.c:1387
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 size_t FSE_compress2(void *dst, size_t dstSize, const void *src, size_t srcSize, unsigned maxSymbolValue, unsigned tableLog)
Definition fse_compress.c:727
FSE_PUBLIC_API unsigned FSE_optimalTableLog(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue)
Definition fse_compress.c:379
FSE_PUBLIC_API FSE_DTable * FSE_createDTable(unsigned tableLog)
Definition fse_decompress.c:60
FSE_PUBLIC_API void FSE_freeDTable(FSE_DTable *dt)
Definition fse_decompress.c:66
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
size_t FSE_decompress_wksp(void *dst, size_t dstCapacity, const void *cSrc, size_t cSrcSize, unsigned maxLog, void *workSpace, size_t wkspSize)
Definition fse_decompress.c:308
size_t FSE_buildDTable_rle(FSE_DTable *dt, BYTE symbolValue)
Definition fse_decompress.c:187
size_t FSE_buildDTable_raw(FSE_DTable *dt, unsigned nbBits)
Definition fse_decompress.c:205
#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_compress_wksp(void *dst, size_t dstSize, const void *src, size_t srcSize, unsigned maxSymbolValue, unsigned tableLog, void *workSpace, size_t wkspSize)
Definition fse_compress.c:672
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
size_t FSE_buildCTable_raw(FSE_CTable *ct, unsigned nbBits)
Definition fse_compress.c:537