Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
zstd_v07.c File Reference
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include "../common/xxhash.h"
#include "zstd_v07.h"
#include "../common/error_private.h"

Data Structures

struct  ZSTDv07_customMem
 
struct  BITv07_DStream_t
 
struct  FSEv07_DState_t
 
struct  FSEv07_DTableHeader
 
struct  FSEv07_decode_t
 
struct  DTableDesc
 
struct  HUFv07_DEltX2
 
struct  HUFv07_DEltX4
 
struct  sortedSymbol_t
 
struct  algo_time_t
 
struct  ZSTDv07_match_t
 
struct  ZSTDv07_optimal_t
 
struct  ZSTDv07_stats_s
 
struct  seqStore_t
 
struct  ZSTDv07_DCtx_s
 
struct  blockProperties_t
 
struct  seq_t
 
struct  seqState_t
 
struct  ZSTDv07_DDict_s
 
struct  ZBUFFv07_DCtx_s
 

Macros

#define XXH_STATIC_LINKING_ONLY   /* XXH64_state_t */
 
#define FSEv07_STATIC_LINKING_ONLY   /* FSEv07_MIN_TABLELOG */
 
#define HUFv07_STATIC_LINKING_ONLY   /* HUFv07_TABLELOG_ABSOLUTEMAX */
 
#define ZSTDv07_STATIC_LINKING_ONLY
 
#define ZSTDv07_MAGIC_SKIPPABLE_START   0x184D2A50U
 
#define ZSTDv07_WINDOWLOG_MAX_32   25
 
#define ZSTDv07_WINDOWLOG_MAX_64   27
 
#define ZSTDv07_WINDOWLOG_MAX   ((U32)(MEM_32bits() ? ZSTDv07_WINDOWLOG_MAX_32 : ZSTDv07_WINDOWLOG_MAX_64))
 
#define ZSTDv07_WINDOWLOG_MIN   18
 
#define ZSTDv07_CHAINLOG_MAX   (ZSTDv07_WINDOWLOG_MAX+1)
 
#define ZSTDv07_CHAINLOG_MIN   4
 
#define ZSTDv07_HASHLOG_MAX   ZSTDv07_WINDOWLOG_MAX
 
#define ZSTDv07_HASHLOG_MIN   12
 
#define ZSTDv07_HASHLOG3_MAX   17
 
#define ZSTDv07_SEARCHLOG_MAX   (ZSTDv07_WINDOWLOG_MAX-1)
 
#define ZSTDv07_SEARCHLOG_MIN   1
 
#define ZSTDv07_SEARCHLENGTH_MAX   7
 
#define ZSTDv07_SEARCHLENGTH_MIN   3
 
#define ZSTDv07_TARGETLENGTH_MIN   4
 
#define ZSTDv07_TARGETLENGTH_MAX   999
 
#define ZSTDv07_FRAMEHEADERSIZE_MAX   18 /* for static allocation */
 
#define ZSTDv07_BLOCKSIZE_ABSOLUTEMAX   (128 * 1024) /* define, for static allocation */
 
#define MEM_H_MODULE
 
#define MEM_STATIC   static /* this version may generate warnings for unused static functions; disable the relevant warning */
 
#define BITSTREAM_H_MODULE
 
#define FSEv07_H
 
#define FSEv07_NCOUNTBOUND   512
 
#define FSEv07_BLOCKBOUND(size)
 
#define FSEv07_DTABLE_SIZE_U32(maxTableLog)
 
#define FSEv07_MAX_MEMORY_USAGE   14
 
#define FSEv07_DEFAULT_MEMORY_USAGE   13
 
#define FSEv07_MAX_SYMBOL_VALUE   255
 
#define FSEv07_FUNCTION_TYPE   BYTE
 
#define FSEv07_FUNCTION_EXTENSION
 
#define FSEv07_DECODE_TYPE   FSEv07_decode_t
 
#define FSEv07_MAX_TABLELOG   (FSEv07_MAX_MEMORY_USAGE-2)
 
#define FSEv07_MAX_TABLESIZE   (1U<<FSEv07_MAX_TABLELOG)
 
#define FSEv07_MAXTABLESIZE_MASK   (FSEv07_MAX_TABLESIZE-1)
 
#define FSEv07_DEFAULT_TABLELOG   (FSEv07_DEFAULT_MEMORY_USAGE-2)
 
#define FSEv07_MIN_TABLELOG   5
 
#define FSEv07_TABLELOG_ABSOLUTE_MAX   15
 
#define FSEv07_TABLESTEP(tableSize)
 
#define HUFv07_H_298734234
 
#define HUFv07_BLOCKSIZE_MAX   (128 * 1024)
 
#define HUFv07_TABLELOG_ABSOLUTEMAX   16 /* absolute limit of HUFv07_MAX_TABLELOG. Beyond that value, code does not work */
 
#define HUFv07_TABLELOG_MAX   12 /* max configured tableLog (for static allocation); can be modified up to HUFv07_ABSOLUTEMAX_TABLELOG */
 
#define HUFv07_TABLELOG_DEFAULT   11 /* tableLog by default, when not specified */
 
#define HUFv07_SYMBOLVALUE_MAX   255
 
#define HUFv07_BLOCKBOUND(size)
 
#define HUFv07_DTABLE_SIZE(maxTableLog)
 
#define HUFv07_CREATE_STATIC_DTABLEX2(DTable, maxTableLog)
 
#define HUFv07_CREATE_STATIC_DTABLEX4(DTable, maxTableLog)
 
#define FORCE_INLINE   static
 
#define FSEv07_isError   ERR_isError
 
#define FSEv07_STATIC_ASSERT(c)
 
#define FSEv07_CAT(X, Y)
 
#define FSEv07_FUNCTION_NAME(X, Y)
 
#define FSEv07_TYPE_NAME(X, Y)
 
#define FSEv07_GETSYMBOL(statePtr)
 
#define inline   /* disable inline */
 
#define HUFv07_STATIC_ASSERT(c)
 
#define HUFv07_DECODE_SYMBOLX2_0(ptr, DStreamPtr)
 
#define HUFv07_DECODE_SYMBOLX2_1(ptr, DStreamPtr)
 
#define HUFv07_DECODE_SYMBOLX2_2(ptr, DStreamPtr)
 
#define HUFv07_DECODE_SYMBOLX4_0(ptr, DStreamPtr)
 
#define HUFv07_DECODE_SYMBOLX4_1(ptr, DStreamPtr)
 
#define HUFv07_DECODE_SYMBOLX4_2(ptr, DStreamPtr)
 
#define ZSTDv07_CCOMMON_H_MODULE
 
#define MIN(a, b)
 
#define MAX(a, b)
 
#define ZSTDv07_OPT_NUM   (1<<12)
 
#define ZSTDv07_DICT_MAGIC   0xEC30A437 /* v0.7 */
 
#define ZSTDv07_REP_NUM   3
 
#define ZSTDv07_REP_INIT   ZSTDv07_REP_NUM
 
#define ZSTDv07_REP_MOVE   (ZSTDv07_REP_NUM-1)
 
#define KB   *(1 <<10)
 
#define MB   *(1 <<20)
 
#define GB   *(1U<<30)
 
#define BIT7   128
 
#define BIT6   64
 
#define BIT5   32
 
#define BIT4   16
 
#define BIT1   2
 
#define BIT0   1
 
#define ZSTDv07_WINDOWLOG_ABSOLUTEMIN   10
 
#define ZSTDv07_BLOCKHEADERSIZE   3 /* C standard doesn't allow `static const` variable to be init using another `static const` variable */
 
#define MIN_SEQUENCES_SIZE   1 /* nbSeq==0 */
 
#define MIN_CBLOCK_SIZE   (1 /*litCSize*/ + 1 /* RLE or RAW */ + MIN_SEQUENCES_SIZE /* nbSeq==0 */) /* for a non-null block */
 
#define HufLog   12
 
#define LONGNBSEQ   0x7F00
 
#define MINMATCH   3
 
#define EQUAL_READ32   4
 
#define Litbits   8
 
#define MaxLit   ((1<<Litbits) - 1)
 
#define MaxML   52
 
#define MaxLL   35
 
#define MaxOff   28
 
#define MaxSeq   MAX(MaxLL, MaxML) /* Assumption : MaxOff < MaxLL,MaxML */
 
#define MLFSELog   9
 
#define LLFSELog   9
 
#define OffFSELog   8
 
#define FSEv07_ENCODING_RAW   0
 
#define FSEv07_ENCODING_RLE   1
 
#define FSEv07_ENCODING_STATIC   2
 
#define FSEv07_ENCODING_DYNAMIC   3
 
#define ZSTD_CONTENTSIZE_ERROR   (0ULL - 2)
 
#define COPY8(d, s)
 
#define WILDCOPY_OVERLENGTH   8
 
#define ZSTDv07_HEAPMODE   1
 
#define ZSTDv07_isError   ERR_isError /* for inlining */
 
#define FSEv07_isError   ERR_isError
 
#define HUFv07_isError   ERR_isError
 

Typedefs

typedef void *(* ZSTDv07_allocFunction) (void *opaque, size_t size)
 
typedef void(* ZSTDv07_freeFunction) (void *opaque, void *address)
 
typedef unsigned FSEv07_DTable
 
typedef U32 HUFv07_DTable
 
typedef size_t(* decompressionAlgo) (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
typedef struct ZSTDv07_stats_s ZSTDv07_stats_t
 

Enumerations

enum  BITv07_DStream_status { BITv07_DStream_unfinished = 0 , BITv07_DStream_endOfBuffer = 1 , BITv07_DStream_completed = 2 , BITv07_DStream_overflow = 3 }
 
enum  blockType_t { bt_compressed , bt_raw , bt_rle , bt_end }
 
enum  litBlockType_t { lbt_huffman , lbt_repeat , lbt_raw , lbt_rle }
 
enum  ZSTDv07_dStage {
  ZSTDds_getFrameHeaderSize , ZSTDds_decodeFrameHeader , ZSTDds_decodeBlockHeader , ZSTDds_decompressBlock ,
  ZSTDds_decodeSkippableHeader , ZSTDds_skipFrame
}
 
enum  ZBUFFv07_dStage {
  ZBUFFds_init , ZBUFFds_loadHeader , ZBUFFds_read , ZBUFFds_load ,
  ZBUFFds_flush
}
 

Functions

ZSTDLIBv07_API size_t ZSTDv07_estimateDCtxSize (void)
 
ZSTDLIBv07_API ZSTDv07_DCtxZSTDv07_createDCtx_advanced (ZSTDv07_customMem customMem)
 
ZSTDLIBv07_API size_t ZSTDv07_sizeofDCtx (const ZSTDv07_DCtx *dctx)
 
ZSTDLIBv07_API size_t ZSTDv07_decompressBegin (ZSTDv07_DCtx *dctx)
 
ZSTDLIBv07_API size_t ZSTDv07_decompressBegin_usingDict (ZSTDv07_DCtx *dctx, const void *dict, size_t dictSize)
 
ZSTDLIBv07_API void ZSTDv07_copyDCtx (ZSTDv07_DCtx *dctx, const ZSTDv07_DCtx *preparedDCtx)
 
ZSTDLIBv07_API size_t ZSTDv07_nextSrcSizeToDecompress (ZSTDv07_DCtx *dctx)
 
ZSTDLIBv07_API size_t ZSTDv07_decompressContinue (ZSTDv07_DCtx *dctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize)
 
ZSTDLIBv07_API size_t ZSTDv07_decompressBlock (ZSTDv07_DCtx *dctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize)
 
ZSTDLIBv07_API size_t ZSTDv07_insertBlock (ZSTDv07_DCtx *dctx, const void *blockStart, size_t blockSize)
 
MEM_STATIC unsigned MEM_32bits (void)
 
MEM_STATIC unsigned MEM_64bits (void)
 
MEM_STATIC unsigned MEM_isLittleEndian (void)
 
MEM_STATIC U16 MEM_read16 (const void *memPtr)
 
MEM_STATIC U32 MEM_read32 (const void *memPtr)
 
MEM_STATIC U64 MEM_read64 (const void *memPtr)
 
MEM_STATIC void MEM_write16 (void *memPtr, U16 value)
 
MEM_STATIC U32 MEM_swap32 (U32 in)
 
MEM_STATIC U64 MEM_swap64 (U64 in)
 
MEM_STATIC U16 MEM_readLE16 (const void *memPtr)
 
MEM_STATIC void MEM_writeLE16 (void *memPtr, U16 val)
 
MEM_STATIC U32 MEM_readLE32 (const void *memPtr)
 
MEM_STATIC U64 MEM_readLE64 (const void *memPtr)
 
MEM_STATIC size_t MEM_readLEST (const void *memPtr)
 
MEM_STATIC size_t BITv07_initDStream (BITv07_DStream_t *bitD, const void *srcBuffer, size_t srcSize)
 
MEM_STATIC size_t BITv07_readBits (BITv07_DStream_t *bitD, unsigned nbBits)
 
MEM_STATIC BITv07_DStream_status BITv07_reloadDStream (BITv07_DStream_t *bitD)
 
MEM_STATIC unsigned BITv07_endOfDStream (const BITv07_DStream_t *bitD)
 
MEM_STATIC size_t BITv07_readBitsFast (BITv07_DStream_t *bitD, unsigned nbBits)
 
MEM_STATIC unsigned BITv07_highbit32 (U32 val)
 
MEM_STATIC size_t BITv07_lookBits (const BITv07_DStream_t *bitD, U32 nbBits)
 
MEM_STATIC size_t BITv07_lookBitsFast (const BITv07_DStream_t *bitD, U32 nbBits)
 
MEM_STATIC void BITv07_skipBits (BITv07_DStream_t *bitD, U32 nbBits)
 
MEM_STATIC size_t BITv07_readBits (BITv07_DStream_t *bitD, U32 nbBits)
 
MEM_STATIC size_t BITv07_readBitsFast (BITv07_DStream_t *bitD, U32 nbBits)
 
size_t FSEv07_decompress (void *dst, size_t dstCapacity, const void *cSrc, size_t cSrcSize)
 
unsigned FSEv07_isError (size_t code)
 
const char * FSEv07_getErrorName (size_t code)
 
size_t FSEv07_readNCount (short *normalizedCounter, unsigned *maxSymbolValuePtr, unsigned *tableLogPtr, const void *rBuffer, size_t rBuffSize)
 
FSEv07_DTableFSEv07_createDTable (unsigned tableLog)
 
void FSEv07_freeDTable (FSEv07_DTable *dt)
 
size_t FSEv07_buildDTable (FSEv07_DTable *dt, const short *normalizedCounter, unsigned maxSymbolValue, unsigned tableLog)
 
size_t FSEv07_decompress_usingDTable (void *dst, size_t dstCapacity, const void *cSrc, size_t cSrcSize, const FSEv07_DTable *dt)
 
size_t FSEv07_countFast (unsigned *count, unsigned *maxSymbolValuePtr, const void *src, size_t srcSize)
 
unsigned FSEv07_optimalTableLog_internal (unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue, unsigned minus)
 
size_t FSEv07_buildDTable_raw (FSEv07_DTable *dt, unsigned nbBits)
 
size_t FSEv07_buildDTable_rle (FSEv07_DTable *dt, unsigned char symbolValue)
 
MEM_STATIC BYTE FSEv07_peekSymbol (const FSEv07_DState_t *DStatePtr)
 
MEM_STATIC void FSEv07_updateState (FSEv07_DState_t *DStatePtr, BITv07_DStream_t *bitD)
 
size_t HUFv07_decompress (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
unsigned HUFv07_isError (size_t code)
 
const char * HUFv07_getErrorName (size_t code)
 
size_t HUFv07_decompress4X2 (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress4X4 (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress4X_DCtx (HUFv07_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress4X_hufOnly (HUFv07_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress4X2_DCtx (HUFv07_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress4X4_DCtx (HUFv07_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress1X_DCtx (HUFv07_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress1X2_DCtx (HUFv07_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress1X4_DCtx (HUFv07_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_readStats (BYTE *huffWeight, size_t hwSize, U32 *rankStats, U32 *nbSymbolsPtr, U32 *tableLogPtr, const void *src, size_t srcSize)
 
U32 HUFv07_selectDecoder (size_t dstSize, size_t cSrcSize)
 
size_t HUFv07_readDTableX2 (HUFv07_DTable *DTable, const void *src, size_t srcSize)
 
size_t HUFv07_readDTableX4 (HUFv07_DTable *DTable, const void *src, size_t srcSize)
 
size_t HUFv07_decompress4X_usingDTable (void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUFv07_DTable *DTable)
 
size_t HUFv07_decompress4X2_usingDTable (void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUFv07_DTable *DTable)
 
size_t HUFv07_decompress4X4_usingDTable (void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUFv07_DTable *DTable)
 
size_t HUFv07_decompress1X2 (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress1X4 (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)
 
size_t HUFv07_decompress1X_usingDTable (void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUFv07_DTable *DTable)
 
size_t HUFv07_decompress1X2_usingDTable (void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUFv07_DTable *DTable)
 
size_t HUFv07_decompress1X4_usingDTable (void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUFv07_DTable *DTable)
 
FORCE_INLINE size_t FSEv07_decompress_usingDTable_generic (void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const FSEv07_DTable *dt, const unsigned fast)
 
unsigned ZSTDv07_isError (size_t code)
 
const char * ZSTDv07_getErrorName (size_t code)
 
unsigned ZBUFFv07_isError (size_t errorCode)
 
const char * ZBUFFv07_getErrorName (size_t errorCode)
 
MEM_STATIC void ZSTDv07_wildcopy (void *dst, const void *src, ptrdiff_t length)
 
void ZSTDv07_seqToCodes (const seqStore_t *seqStorePtr, size_t const nbSeq)
 
int ZSTDv07_isSkipFrame (ZSTDv07_DCtx *dctx)
 
ZSTDv07_DCtxZSTDv07_createDCtx (void)
 
size_t ZSTDv07_freeDCtx (ZSTDv07_DCtx *dctx)
 
size_t ZSTDv07_getFrameParams (ZSTDv07_frameParams *fparamsPtr, const void *src, size_t srcSize)
 
unsigned long long ZSTDv07_getDecompressedSize (const void *src, size_t srcSize)
 
size_t ZSTDv07_decompress_usingDict (ZSTDv07_DCtx *dctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize, const void *dict, size_t dictSize)
 
size_t ZSTDv07_decompressDCtx (ZSTDv07_DCtx *dctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize)
 
size_t ZSTDv07_decompress (void *dst, size_t dstCapacity, const void *src, size_t srcSize)
 
void ZSTDv07_findFrameSizeInfoLegacy (const void *src, size_t srcSize, size_t *cSize, unsigned long long *dBound)
 
ZSTDv07_DDictZSTDv07_createDDict (const void *dict, size_t dictSize)
 
size_t ZSTDv07_freeDDict (ZSTDv07_DDict *ddict)
 
ZSTDLIBv07_API size_t ZSTDv07_decompress_usingDDict (ZSTDv07_DCtx *dctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize, const ZSTDv07_DDict *ddict)
 
ZSTDLIBv07_API ZBUFFv07_DCtxZBUFFv07_createDCtx_advanced (ZSTDv07_customMem customMem)
 
ZBUFFv07_DCtxZBUFFv07_createDCtx (void)
 
size_t ZBUFFv07_freeDCtx (ZBUFFv07_DCtx *zbd)
 
size_t ZBUFFv07_decompressInitDictionary (ZBUFFv07_DCtx *zbd, const void *dict, size_t dictSize)
 
size_t ZBUFFv07_decompressInit (ZBUFFv07_DCtx *zbd)
 
MEM_STATIC size_t ZBUFFv07_limitCopy (void *dst, size_t dstCapacity, const void *src, size_t srcSize)
 
size_t ZBUFFv07_decompressContinue (ZBUFFv07_DCtx *zbd, void *dst, size_t *dstCapacityPtr, const void *src, size_t *srcSizePtr)
 
size_t ZBUFFv07_recommendedDInSize (void)
 
size_t ZBUFFv07_recommendedDOutSize (void)
 

Macro Definition Documentation

◆ BIT0

#define BIT0   1

◆ BIT1

#define BIT1   2

◆ BIT4

#define BIT4   16

◆ BIT5

#define BIT5   32

◆ BIT6

#define BIT6   64

◆ BIT7

#define BIT7   128

◆ BITSTREAM_H_MODULE

#define BITSTREAM_H_MODULE

◆ COPY8

#define COPY8 ( d,
s )
Value:
{ ZSTDv07_copy8(d,s); d+=8; s+=8; }
#define d(i)
Definition sha256.c:44

◆ EQUAL_READ32

#define EQUAL_READ32   4

◆ FORCE_INLINE

#define FORCE_INLINE   static

◆ FSEv07_BLOCKBOUND

#define FSEv07_BLOCKBOUND ( size)
Value:
(size + (size>>7))
size_t size
Definition platform.h:559

◆ FSEv07_CAT

#define FSEv07_CAT ( X,
Y )
Value:
X##Y
#define X(name, r, bit)
Definition cpu.h:110

◆ FSEv07_DECODE_TYPE

#define FSEv07_DECODE_TYPE   FSEv07_decode_t

◆ FSEv07_DEFAULT_MEMORY_USAGE

#define FSEv07_DEFAULT_MEMORY_USAGE   13

◆ FSEv07_DEFAULT_TABLELOG

#define FSEv07_DEFAULT_TABLELOG   (FSEv07_DEFAULT_MEMORY_USAGE-2)

◆ FSEv07_DTABLE_SIZE_U32

#define FSEv07_DTABLE_SIZE_U32 ( maxTableLog)
Value:
(1 + (1<<maxTableLog))

◆ FSEv07_ENCODING_DYNAMIC

#define FSEv07_ENCODING_DYNAMIC   3

◆ FSEv07_ENCODING_RAW

#define FSEv07_ENCODING_RAW   0

◆ FSEv07_ENCODING_RLE

#define FSEv07_ENCODING_RLE   1

◆ FSEv07_ENCODING_STATIC

#define FSEv07_ENCODING_STATIC   2

◆ FSEv07_FUNCTION_EXTENSION

#define FSEv07_FUNCTION_EXTENSION

◆ FSEv07_FUNCTION_NAME

#define FSEv07_FUNCTION_NAME ( X,
Y )
Value:
#define FSEv07_CAT(X, Y)
Definition zstd_v07.c:1461

◆ FSEv07_FUNCTION_TYPE

#define FSEv07_FUNCTION_TYPE   BYTE

◆ FSEv07_GETSYMBOL

#define FSEv07_GETSYMBOL ( statePtr)
Value:
fast ? FSEv07_decodeSymbolFast(statePtr, &bitD) : FSEv07_decodeSymbol(statePtr, &bitD)

◆ FSEv07_H

#define FSEv07_H

◆ FSEv07_isError [1/2]

#define FSEv07_isError   ERR_isError

◆ FSEv07_isError [2/2]

#define FSEv07_isError   ERR_isError

◆ FSEv07_MAX_MEMORY_USAGE

#define FSEv07_MAX_MEMORY_USAGE   14

MEMORY_USAGE : Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) Increasing memory usage improves compression ratio Reduced memory usage can improve speed, due to cache effect Recommended max value is 14, for 16KB, which nicely fits into Intel x86 L1 cache

◆ FSEv07_MAX_SYMBOL_VALUE

#define FSEv07_MAX_SYMBOL_VALUE   255

FSEv07_MAX_SYMBOL_VALUE : Maximum symbol value authorized. Required for proper stack allocation

◆ FSEv07_MAX_TABLELOG

#define FSEv07_MAX_TABLELOG   (FSEv07_MAX_MEMORY_USAGE-2)

◆ FSEv07_MAX_TABLESIZE

#define FSEv07_MAX_TABLESIZE   (1U<<FSEv07_MAX_TABLELOG)

◆ FSEv07_MAXTABLESIZE_MASK

#define FSEv07_MAXTABLESIZE_MASK   (FSEv07_MAX_TABLESIZE-1)

◆ FSEv07_MIN_TABLELOG

#define FSEv07_MIN_TABLELOG   5

◆ FSEv07_NCOUNTBOUND

#define FSEv07_NCOUNTBOUND   512

Tutorial :

(Note : these functions only decompress FSE-compressed blocks. If block is uncompressed, use memcpy() instead If block is a single repeated byte, use memset() instead )

The first step is to obtain the normalized frequencies of symbols. This can be performed by FSEv07_readNCount() if it was saved using FSEv07_writeNCount(). 'normalizedCounter' must be already allocated, and have at least 'maxSymbolValuePtr[0]+1' cells of signed short. In practice, that means it's necessary to know 'maxSymbolValue' beforehand, or size the table to handle worst case situations (typically 256). FSEv07_readNCount() will provide 'tableLog' and 'maxSymbolValue'. The result of FSEv07_readNCount() is the number of bytes read from 'rBuffer'. Note that 'rBufferSize' must be at least 4 bytes, even if useful information is less than that. If there is an error, the function will return an error code, which can be tested using FSEv07_isError().

The next step is to build the decompression tables 'FSEv07_DTable' from 'normalizedCounter'. This is performed by the function FSEv07_buildDTable(). The space required by 'FSEv07_DTable' must be already allocated using FSEv07_createDTable(). If there is an error, the function will return an error code, which can be tested using FSEv07_isError().

FSEv07_DTable can then be used to decompress cSrc, with FSEv07_decompress_usingDTable(). cSrcSize must be strictly correct, otherwise decompression will fail. FSEv07_decompress_usingDTable() result will tell how many bytes were regenerated (<=dstCapacity). If there is an error, the function will return an error code, which can be tested using FSEv07_isError(). (ex: dst buffer too small)

◆ FSEv07_STATIC_ASSERT

#define FSEv07_STATIC_ASSERT ( c)
Value:
{ enum { FSEv07_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */
int
Definition lzoconf.h:340
#define c(i)
Definition sha256.c:43

◆ FSEv07_STATIC_LINKING_ONLY

#define FSEv07_STATIC_LINKING_ONLY   /* FSEv07_MIN_TABLELOG */

◆ FSEv07_TABLELOG_ABSOLUTE_MAX

#define FSEv07_TABLELOG_ABSOLUTE_MAX   15

◆ FSEv07_TABLESTEP

#define FSEv07_TABLESTEP ( tableSize)
Value:
((tableSize>>1) + (tableSize>>3) + 3)

◆ FSEv07_TYPE_NAME

#define FSEv07_TYPE_NAME ( X,
Y )
Value:

◆ GB

#define GB   *(1U<<30)

◆ HufLog

#define HufLog   12

◆ HUFv07_BLOCKBOUND

#define HUFv07_BLOCKBOUND ( size)
Value:
(size + (size>>8) + 8) /* only true if incompressible pre-filtered with fast heuristic */

◆ HUFv07_BLOCKSIZE_MAX

#define HUFv07_BLOCKSIZE_MAX   (128 * 1024)

◆ HUFv07_CREATE_STATIC_DTABLEX2

#define HUFv07_CREATE_STATIC_DTABLEX2 ( DTable,
maxTableLog )
Value:
HUFv07_DTable DTable[HUFv07_DTABLE_SIZE((maxTableLog)-1)] = { ((U32)((maxTableLog)-1)*0x1000001) }
unsigned int U32
Definition lz4.c:316
#define HUFv07_DTABLE_SIZE(maxTableLog)
Definition zstd_v07.c:1068
U32 HUFv07_DTable
Definition zstd_v07.c:1067

◆ HUFv07_CREATE_STATIC_DTABLEX4

#define HUFv07_CREATE_STATIC_DTABLEX4 ( DTable,
maxTableLog )
Value:
HUFv07_DTable DTable[HUFv07_DTABLE_SIZE(maxTableLog)] = { ((U32)(maxTableLog)*0x1000001) }

◆ HUFv07_DECODE_SYMBOLX2_0

#define HUFv07_DECODE_SYMBOLX2_0 ( ptr,
DStreamPtr )
Value:
*ptr++ = HUFv07_decodeSymbolX2(DStreamPtr, dt, dtLog)

◆ HUFv07_DECODE_SYMBOLX2_1

#define HUFv07_DECODE_SYMBOLX2_1 ( ptr,
DStreamPtr )
Value:
if (MEM_64bits() || (HUFv07_TABLELOG_MAX<=12)) \
HUFv07_DECODE_SYMBOLX2_0(ptr, DStreamPtr)
#define HUFv07_TABLELOG_MAX
Definition zstd_v07.c:1052
MEM_STATIC unsigned MEM_64bits(void)
Definition zstd_v07.c:291

◆ HUFv07_DECODE_SYMBOLX2_2

#define HUFv07_DECODE_SYMBOLX2_2 ( ptr,
DStreamPtr )
Value:
if (MEM_64bits()) \
HUFv07_DECODE_SYMBOLX2_0(ptr, DStreamPtr)

◆ HUFv07_DECODE_SYMBOLX4_0

#define HUFv07_DECODE_SYMBOLX4_0 ( ptr,
DStreamPtr )
Value:
ptr += HUFv07_decodeSymbolX4(ptr, DStreamPtr, dt, dtLog)

◆ HUFv07_DECODE_SYMBOLX4_1

#define HUFv07_DECODE_SYMBOLX4_1 ( ptr,
DStreamPtr )
Value:
if (MEM_64bits() || (HUFv07_TABLELOG_MAX<=12)) \
ptr += HUFv07_decodeSymbolX4(ptr, DStreamPtr, dt, dtLog)

◆ HUFv07_DECODE_SYMBOLX4_2

#define HUFv07_DECODE_SYMBOLX4_2 ( ptr,
DStreamPtr )
Value:
if (MEM_64bits()) \
ptr += HUFv07_decodeSymbolX4(ptr, DStreamPtr, dt, dtLog)

◆ HUFv07_DTABLE_SIZE

#define HUFv07_DTABLE_SIZE ( maxTableLog)
Value:
(1 + (1<<(maxTableLog)))

◆ HUFv07_H_298734234

#define HUFv07_H_298734234

◆ HUFv07_isError

#define HUFv07_isError   ERR_isError

◆ HUFv07_STATIC_ASSERT

#define HUFv07_STATIC_ASSERT ( c)
Value:
{ enum { HUFv07_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */

◆ HUFv07_STATIC_LINKING_ONLY

#define HUFv07_STATIC_LINKING_ONLY   /* HUFv07_TABLELOG_ABSOLUTEMAX */

◆ HUFv07_SYMBOLVALUE_MAX

#define HUFv07_SYMBOLVALUE_MAX   255

◆ HUFv07_TABLELOG_ABSOLUTEMAX

#define HUFv07_TABLELOG_ABSOLUTEMAX   16 /* absolute limit of HUFv07_MAX_TABLELOG. Beyond that value, code does not work */

◆ HUFv07_TABLELOG_DEFAULT

#define HUFv07_TABLELOG_DEFAULT   11 /* tableLog by default, when not specified */

◆ HUFv07_TABLELOG_MAX

#define HUFv07_TABLELOG_MAX   12 /* max configured tableLog (for static allocation); can be modified up to HUFv07_ABSOLUTEMAX_TABLELOG */

◆ inline

#define inline   /* disable inline */

◆ KB

#define KB   *(1 <<10)

◆ Litbits

#define Litbits   8

◆ LLFSELog

#define LLFSELog   9

◆ LONGNBSEQ

#define LONGNBSEQ   0x7F00

◆ MAX

#define MAX ( a,
b )
Value:
((a)>(b) ? (a) : (b))
#define b(i)
Definition sha256.c:42
#define a(i)
Definition sha256.c:41

◆ MaxLit

#define MaxLit   ((1<<Litbits) - 1)

◆ MaxLL

#define MaxLL   35

◆ MaxML

#define MaxML   52

◆ MaxOff

#define MaxOff   28

◆ MaxSeq

#define MaxSeq   MAX(MaxLL, MaxML) /* Assumption : MaxOff < MaxLL,MaxML */

◆ MB

#define MB   *(1 <<20)

◆ MEM_H_MODULE

#define MEM_H_MODULE

◆ MEM_STATIC

#define MEM_STATIC   static /* this version may generate warnings for unused static functions; disable the relevant warning */

◆ MIN

#define MIN ( a,
b )
Value:
((a)<(b) ? (a) : (b))

◆ MIN_CBLOCK_SIZE

#define MIN_CBLOCK_SIZE   (1 /*litCSize*/ + 1 /* RLE or RAW */ + MIN_SEQUENCES_SIZE /* nbSeq==0 */) /* for a non-null block */

◆ MIN_SEQUENCES_SIZE

#define MIN_SEQUENCES_SIZE   1 /* nbSeq==0 */

◆ MINMATCH

#define MINMATCH   3

◆ MLFSELog

#define MLFSELog   9

◆ OffFSELog

#define OffFSELog   8

◆ WILDCOPY_OVERLENGTH

#define WILDCOPY_OVERLENGTH   8

ZSTDv07_wildcopy() : custom version of memcpy(), can copy up to 7 bytes too many (8 bytes if length==0)

◆ XXH_STATIC_LINKING_ONLY

#define XXH_STATIC_LINKING_ONLY   /* XXH64_state_t */

◆ ZSTD_CONTENTSIZE_ERROR

#define ZSTD_CONTENTSIZE_ERROR   (0ULL - 2)

◆ ZSTDv07_BLOCKHEADERSIZE

#define ZSTDv07_BLOCKHEADERSIZE   3 /* C standard doesn't allow `static const` variable to be init using another `static const` variable */

◆ ZSTDv07_BLOCKSIZE_ABSOLUTEMAX

#define ZSTDv07_BLOCKSIZE_ABSOLUTEMAX   (128 * 1024) /* define, for static allocation */

Block functions produce and decode raw zstd blocks, without frame metadata. Frame metadata cost is typically ~18 bytes, which can be non-negligible for very small blocks (< 100 bytes). User will have to take in charge required information to regenerate data, such as compressed and content sizes.

A few rules to respect :

  • Compressing and decompressing require a context structure
  • It is necessary to init context before starting
    • compression : ZSTDv07_compressBegin()
    • decompression : ZSTDv07_decompressBegin()
    • variants _usingDict() are also allowed
    • copyCCtx() and copyDCtx() work too
  • Block size is limited, it must be <= ZSTDv07_getBlockSizeMax()
    • If you need to compress more, cut data into multiple blocks
    • Consider using the regular ZSTDv07_compress() instead, as frame metadata costs become negligible when source size is large.
  • When a block is considered not compressible enough, ZSTDv07_compressBlock() result will be zero. In which case, nothing is produced into dst.
    • User must test for such outcome and deal directly with uncompressed data
    • ZSTDv07_decompressBlock() doesn't accept uncompressed data as input !!!
    • In case of multiple successive blocks, decoder must be informed of uncompressed block existence to follow proper history. Use ZSTDv07_insertBlock() in such a case.

◆ ZSTDv07_CCOMMON_H_MODULE

#define ZSTDv07_CCOMMON_H_MODULE

◆ ZSTDv07_CHAINLOG_MAX

#define ZSTDv07_CHAINLOG_MAX   (ZSTDv07_WINDOWLOG_MAX+1)

◆ ZSTDv07_CHAINLOG_MIN

#define ZSTDv07_CHAINLOG_MIN   4

◆ ZSTDv07_DICT_MAGIC

#define ZSTDv07_DICT_MAGIC   0xEC30A437 /* v0.7 */

◆ ZSTDv07_FRAMEHEADERSIZE_MAX

#define ZSTDv07_FRAMEHEADERSIZE_MAX   18 /* for static allocation */

◆ ZSTDv07_HASHLOG3_MAX

#define ZSTDv07_HASHLOG3_MAX   17

◆ ZSTDv07_HASHLOG_MAX

#define ZSTDv07_HASHLOG_MAX   ZSTDv07_WINDOWLOG_MAX

◆ ZSTDv07_HASHLOG_MIN

#define ZSTDv07_HASHLOG_MIN   12

◆ ZSTDv07_HEAPMODE

#define ZSTDv07_HEAPMODE   1

HEAPMODE : Select how default decompression function ZSTDv07_decompress() will allocate memory, in memory stack (0), or in memory heap (1, requires malloc())

◆ ZSTDv07_isError

#define ZSTDv07_isError   ERR_isError /* for inlining */

◆ ZSTDv07_MAGIC_SKIPPABLE_START

#define ZSTDv07_MAGIC_SKIPPABLE_START   0x184D2A50U

◆ ZSTDv07_OPT_NUM

#define ZSTDv07_OPT_NUM   (1<<12)

◆ ZSTDv07_REP_INIT

#define ZSTDv07_REP_INIT   ZSTDv07_REP_NUM

◆ ZSTDv07_REP_MOVE

#define ZSTDv07_REP_MOVE   (ZSTDv07_REP_NUM-1)

◆ ZSTDv07_REP_NUM

#define ZSTDv07_REP_NUM   3

◆ ZSTDv07_SEARCHLENGTH_MAX

#define ZSTDv07_SEARCHLENGTH_MAX   7

◆ ZSTDv07_SEARCHLENGTH_MIN

#define ZSTDv07_SEARCHLENGTH_MIN   3

◆ ZSTDv07_SEARCHLOG_MAX

#define ZSTDv07_SEARCHLOG_MAX   (ZSTDv07_WINDOWLOG_MAX-1)

◆ ZSTDv07_SEARCHLOG_MIN

#define ZSTDv07_SEARCHLOG_MIN   1

◆ ZSTDv07_STATIC_LINKING_ONLY

#define ZSTDv07_STATIC_LINKING_ONLY

◆ ZSTDv07_TARGETLENGTH_MAX

#define ZSTDv07_TARGETLENGTH_MAX   999

◆ ZSTDv07_TARGETLENGTH_MIN

#define ZSTDv07_TARGETLENGTH_MIN   4

◆ ZSTDv07_WINDOWLOG_ABSOLUTEMIN

#define ZSTDv07_WINDOWLOG_ABSOLUTEMIN   10

◆ ZSTDv07_WINDOWLOG_MAX

#define ZSTDv07_WINDOWLOG_MAX   ((U32)(MEM_32bits() ? ZSTDv07_WINDOWLOG_MAX_32 : ZSTDv07_WINDOWLOG_MAX_64))

◆ ZSTDv07_WINDOWLOG_MAX_32

#define ZSTDv07_WINDOWLOG_MAX_32   25

◆ ZSTDv07_WINDOWLOG_MAX_64

#define ZSTDv07_WINDOWLOG_MAX_64   27

◆ ZSTDv07_WINDOWLOG_MIN

#define ZSTDv07_WINDOWLOG_MIN   18

Typedef Documentation

◆ decompressionAlgo

typedef size_t(* decompressionAlgo) (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize)

◆ FSEv07_DTable

typedef unsigned FSEv07_DTable

Constructor and Destructor of FSEv07_DTable. Note that its size depends on 'tableLog'

◆ HUFv07_DTable

typedef U32 HUFv07_DTable

◆ ZSTDv07_allocFunction

typedef void *(* ZSTDv07_allocFunction) (void *opaque, size_t size)

◆ ZSTDv07_freeFunction

typedef void(* ZSTDv07_freeFunction) (void *opaque, void *address)

◆ ZSTDv07_stats_t

Enumeration Type Documentation

◆ BITv07_DStream_status

Enumerator
BITv07_DStream_unfinished 
BITv07_DStream_endOfBuffer 
BITv07_DStream_completed 
BITv07_DStream_overflow 

◆ blockType_t

Enumerator
bt_compressed 
bt_raw 
bt_rle 
bt_end 

◆ litBlockType_t

Enumerator
lbt_huffman 
lbt_repeat 
lbt_raw 
lbt_rle 

◆ ZBUFFv07_dStage

Enumerator
ZBUFFds_init 
ZBUFFds_loadHeader 
ZBUFFds_read 
ZBUFFds_load 
ZBUFFds_flush 

◆ ZSTDv07_dStage

Enumerator
ZSTDds_getFrameHeaderSize 
ZSTDds_decodeFrameHeader 
ZSTDds_decodeBlockHeader 
ZSTDds_decompressBlock 
ZSTDds_decodeSkippableHeader 
ZSTDds_skipFrame 

Function Documentation

◆ BITv07_endOfDStream()

MEM_STATIC unsigned BITv07_endOfDStream ( const BITv07_DStream_t * DStream)

BITv07_endOfDStream() :

Returns
Tells if DStream has exactly reached its end (all bits consumed).

◆ BITv07_highbit32()

MEM_STATIC unsigned BITv07_highbit32 ( U32 val)

◆ BITv07_initDStream()

MEM_STATIC size_t BITv07_initDStream ( BITv07_DStream_t * bitD,
const void * srcBuffer,
size_t srcSize )

BITv07_initDStream() : Initialize a BITv07_DStream_t. bitD : a pointer to an already allocated BITv07_DStream_t structure. srcSize must be the exact size of the bitStream, in bytes.

Returns
: size of stream (== srcSize) or an errorCode if a problem is detected

◆ BITv07_lookBits()

MEM_STATIC size_t BITv07_lookBits ( const BITv07_DStream_t * bitD,
U32 nbBits )

◆ BITv07_lookBitsFast()

MEM_STATIC size_t BITv07_lookBitsFast ( const BITv07_DStream_t * bitD,
U32 nbBits )

BITv07_lookBitsFast() : unsafe version; only works only if nbBits >= 1

◆ BITv07_readBits() [1/2]

MEM_STATIC size_t BITv07_readBits ( BITv07_DStream_t * bitD,
U32 nbBits )

◆ BITv07_readBits() [2/2]

MEM_STATIC size_t BITv07_readBits ( BITv07_DStream_t * bitD,
unsigned nbBits )

◆ BITv07_readBitsFast() [1/2]

MEM_STATIC size_t BITv07_readBitsFast ( BITv07_DStream_t * bitD,
U32 nbBits )

BITv07_readBitsFast() : unsafe version; only works only if nbBits >= 1

◆ BITv07_readBitsFast() [2/2]

MEM_STATIC size_t BITv07_readBitsFast ( BITv07_DStream_t * bitD,
unsigned nbBits )

◆ BITv07_reloadDStream()

MEM_STATIC BITv07_DStream_status BITv07_reloadDStream ( BITv07_DStream_t * bitD)

◆ BITv07_skipBits()

MEM_STATIC void BITv07_skipBits ( BITv07_DStream_t * bitD,
U32 nbBits )

◆ FSEv07_buildDTable()

size_t FSEv07_buildDTable ( FSEv07_DTable * dt,
const short * normalizedCounter,
unsigned maxSymbolValue,
unsigned tableLog )

FSEv07_buildDTable(): Builds 'dt', which must be already allocated, using FSEv07_createDTable(). return : 0, or an errorCode, which can be tested using FSEv07_isError()

◆ FSEv07_buildDTable_raw()

size_t FSEv07_buildDTable_raw ( FSEv07_DTable * dt,
unsigned nbBits )

build a fake FSEv07_DTable, designed to read an uncompressed bitstream where each symbol uses nbBits

◆ FSEv07_buildDTable_rle()

size_t FSEv07_buildDTable_rle ( FSEv07_DTable * dt,
unsigned char symbolValue )

build a fake FSEv07_DTable, designed to always generate the same symbolValue

◆ FSEv07_countFast()

size_t FSEv07_countFast ( unsigned * count,
unsigned * maxSymbolValuePtr,
const void * src,
size_t srcSize )

same as FSEv07_count(), but blindly trusts that all byte values within src are <= *maxSymbolValuePtr

◆ FSEv07_createDTable()

FSEv07_DTable * FSEv07_createDTable ( unsigned tableLog)

◆ FSEv07_decompress()

size_t FSEv07_decompress ( void * dst,
size_t dstCapacity,
const void * cSrc,
size_t cSrcSize )

FSEv07_decompress(): Decompress FSE data from buffer 'cSrc', of size 'cSrcSize', into already allocated destination buffer 'dst', of size 'dstCapacity'.

Returns
: size of regenerated data (<= maxDstSize), or an error code, which can be tested using FSEv07_isError() .

Important ** : FSEv07_decompress() does not decompress non-compressible nor RLE data !!! Why ? : making this distinction requires a header. Header management is intentionally delegated to the user layer, which can better manage special cases.

◆ FSEv07_decompress_usingDTable()

size_t FSEv07_decompress_usingDTable ( void * dst,
size_t dstCapacity,
const void * cSrc,
size_t cSrcSize,
const FSEv07_DTable * dt )

FSEv07_decompress_usingDTable(): Decompress compressed source cSrc of size cSrcSize using dt into dst which must be already allocated.

Returns
: size of regenerated data (necessarily <= dstCapacity), or an errorCode, which can be tested using FSEv07_isError()

◆ FSEv07_decompress_usingDTable_generic()

FORCE_INLINE size_t FSEv07_decompress_usingDTable_generic ( void * dst,
size_t maxDstSize,
const void * cSrc,
size_t cSrcSize,
const FSEv07_DTable * dt,
const unsigned fast )

◆ FSEv07_freeDTable()

void FSEv07_freeDTable ( FSEv07_DTable * dt)

◆ FSEv07_getErrorName()

const char * FSEv07_getErrorName ( size_t code)

◆ FSEv07_isError()

unsigned FSEv07_isError ( size_t code)

◆ FSEv07_optimalTableLog_internal()

unsigned FSEv07_optimalTableLog_internal ( unsigned maxTableLog,
size_t srcSize,
unsigned maxSymbolValue,
unsigned minus )

same as FSEv07_optimalTableLog(), which used minus==2

◆ FSEv07_peekSymbol()

MEM_STATIC BYTE FSEv07_peekSymbol ( const FSEv07_DState_t * DStatePtr)

◆ FSEv07_readNCount()

size_t FSEv07_readNCount ( short * normalizedCounter,
unsigned * maxSymbolValuePtr,
unsigned * tableLogPtr,
const void * rBuffer,
size_t rBuffSize )

FSEv07_decompress() does the following:

  1. read normalized counters with readNCount()
  2. build decoding table 'DTable' from normalized counters
  3. decode the data stream using decoding table 'DTable'

The following API allows targeting specific sub-functions for advanced tasks. For example, it's possible to compress several blocks using the same 'CTable', or to save and provide normalized distribution using external method.

FSEv07_readNCount(): Read compactly saved 'normalizedCounter' from 'rBuffer'.

Returns
: size read from 'rBuffer', or an errorCode, which can be tested using FSEv07_isError(). maxSymbolValuePtr[0] and tableLogPtr[0] will also be updated with their respective values

◆ FSEv07_updateState()

MEM_STATIC void FSEv07_updateState ( FSEv07_DState_t * DStatePtr,
BITv07_DStream_t * bitD )

◆ HUFv07_decompress()

size_t HUFv07_decompress ( void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

HUFv07_decompress() : Decompress HUF data from buffer 'cSrc', of size 'cSrcSize', into already allocated buffer 'dst', of minimum size 'dstSize'. dstSize : must be the exact size of original (uncompressed) data. Note : in contrast with FSE, HUFv07_decompress can regenerate RLE (cSrcSize==1) and uncompressed (cSrcSize==dstSize) data, because it knows size to regenerate.

Returns
: size of regenerated data (== dstSize), or an error code, which can be tested using HUFv07_isError()

◆ HUFv07_decompress1X2()

size_t HUFv07_decompress1X2 ( void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

◆ HUFv07_decompress1X2_DCtx()

size_t HUFv07_decompress1X2_DCtx ( HUFv07_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

single-symbol decoder

◆ HUFv07_decompress1X2_usingDTable()

size_t HUFv07_decompress1X2_usingDTable ( void * dst,
size_t maxDstSize,
const void * cSrc,
size_t cSrcSize,
const HUFv07_DTable * DTable )

◆ HUFv07_decompress1X4()

size_t HUFv07_decompress1X4 ( void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

◆ HUFv07_decompress1X4_DCtx()

size_t HUFv07_decompress1X4_DCtx ( HUFv07_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

double-symbols decoder

◆ HUFv07_decompress1X4_usingDTable()

size_t HUFv07_decompress1X4_usingDTable ( void * dst,
size_t maxDstSize,
const void * cSrc,
size_t cSrcSize,
const HUFv07_DTable * DTable )

◆ HUFv07_decompress1X_DCtx()

size_t HUFv07_decompress1X_DCtx ( HUFv07_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

◆ HUFv07_decompress1X_usingDTable()

size_t HUFv07_decompress1X_usingDTable ( void * dst,
size_t maxDstSize,
const void * cSrc,
size_t cSrcSize,
const HUFv07_DTable * DTable )

◆ HUFv07_decompress4X2()

size_t HUFv07_decompress4X2 ( void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

single-symbol decoder

◆ HUFv07_decompress4X2_DCtx()

size_t HUFv07_decompress4X2_DCtx ( HUFv07_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

single-symbol decoder

◆ HUFv07_decompress4X2_usingDTable()

size_t HUFv07_decompress4X2_usingDTable ( void * dst,
size_t maxDstSize,
const void * cSrc,
size_t cSrcSize,
const HUFv07_DTable * DTable )

◆ HUFv07_decompress4X4()

size_t HUFv07_decompress4X4 ( void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

double-symbols decoder

◆ HUFv07_decompress4X4_DCtx()

size_t HUFv07_decompress4X4_DCtx ( HUFv07_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

double-symbols decoder

◆ HUFv07_decompress4X4_usingDTable()

size_t HUFv07_decompress4X4_usingDTable ( void * dst,
size_t maxDstSize,
const void * cSrc,
size_t cSrcSize,
const HUFv07_DTable * DTable )

◆ HUFv07_decompress4X_DCtx()

size_t HUFv07_decompress4X_DCtx ( HUFv07_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

decodes RLE and uncompressed

◆ HUFv07_decompress4X_hufOnly()

size_t HUFv07_decompress4X_hufOnly ( HUFv07_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize )

considers RLE and uncompressed as errors

◆ HUFv07_decompress4X_usingDTable()

size_t HUFv07_decompress4X_usingDTable ( void * dst,
size_t maxDstSize,
const void * cSrc,
size_t cSrcSize,
const HUFv07_DTable * DTable )

◆ HUFv07_getErrorName()

const char * HUFv07_getErrorName ( size_t code)

provides error code string (useful for debugging)

◆ HUFv07_isError()

unsigned HUFv07_isError ( size_t code)

tells if a return value is an error code

◆ HUFv07_readDTableX2()

size_t HUFv07_readDTableX2 ( HUFv07_DTable * DTable,
const void * src,
size_t srcSize )

◆ HUFv07_readDTableX4()

size_t HUFv07_readDTableX4 ( HUFv07_DTable * DTable,
const void * src,
size_t srcSize )

◆ HUFv07_readStats()

size_t HUFv07_readStats ( BYTE * huffWeight,
size_t hwSize,
U32 * rankStats,
U32 * nbSymbolsPtr,
U32 * tableLogPtr,
const void * src,
size_t srcSize )

The following API allows targeting specific sub-functions for advanced tasks. For example, it's possible to compress several blocks using the same 'CTable', or to save and regenerate 'CTable' using external methods.

HUFv07_readStats() : Read compact Huffman tree, saved by HUFv07_writeCTable(). huffWeight is destination buffer.

Returns
: size read from src , or an error Code . Note : Needed by HUFv07_readCTable() and HUFv07_readDTableXn() .

HUFv07_readStats() : Read compact Huffman tree, saved by HUFv07_writeCTable(). huffWeight is destination buffer.

Returns
: size read from src , or an error Code . Note : Needed by HUFv07_readCTable() and HUFv07_readDTableXn() .

◆ HUFv07_selectDecoder()

U32 HUFv07_selectDecoder ( size_t dstSize,
size_t cSrcSize )

HUFv07_selectDecoder() : Tells which decoder is likely to decode faster, based on a set of pre-determined metrics.

Returns
: 0==HUFv07_decompress4X2, 1==HUFv07_decompress4X4 . Assumption : 0 < cSrcSize < dstSize <= 128 KB

◆ MEM_32bits()

MEM_STATIC unsigned MEM_32bits ( void )

◆ MEM_64bits()

MEM_STATIC unsigned MEM_64bits ( void )

◆ MEM_isLittleEndian()

MEM_STATIC unsigned MEM_isLittleEndian ( void )

◆ MEM_read16()

MEM_STATIC U16 MEM_read16 ( const void * memPtr)

◆ MEM_read32()

MEM_STATIC U32 MEM_read32 ( const void * memPtr)

◆ MEM_read64()

MEM_STATIC U64 MEM_read64 ( const void * memPtr)

◆ MEM_readLE16()

MEM_STATIC U16 MEM_readLE16 ( const void * memPtr)

◆ MEM_readLE32()

MEM_STATIC U32 MEM_readLE32 ( const void * memPtr)

◆ MEM_readLE64()

MEM_STATIC U64 MEM_readLE64 ( const void * memPtr)

◆ MEM_readLEST()

MEM_STATIC size_t MEM_readLEST ( const void * memPtr)

◆ MEM_swap32()

MEM_STATIC U32 MEM_swap32 ( U32 in)

◆ MEM_swap64()

MEM_STATIC U64 MEM_swap64 ( U64 in)

◆ MEM_write16()

MEM_STATIC void MEM_write16 ( void * memPtr,
U16 value )

◆ MEM_writeLE16()

MEM_STATIC void MEM_writeLE16 ( void * memPtr,
U16 val )

◆ ZBUFFv07_createDCtx()

ZBUFFv07_DCtx * ZBUFFv07_createDCtx ( void )

◆ ZBUFFv07_createDCtx_advanced()

ZBUFFv07_DCtx * ZBUFFv07_createDCtx_advanced ( ZSTDv07_customMem customMem)

◆ ZBUFFv07_decompressContinue()

size_t ZBUFFv07_decompressContinue ( ZBUFFv07_DCtx * zbd,
void * dst,
size_t * dstCapacityPtr,
const void * src,
size_t * srcSizePtr )

◆ ZBUFFv07_decompressInit()

size_t ZBUFFv07_decompressInit ( ZBUFFv07_DCtx * zbd)

◆ ZBUFFv07_decompressInitDictionary()

size_t ZBUFFv07_decompressInitDictionary ( ZBUFFv07_DCtx * zbd,
const void * dict,
size_t dictSize )

◆ ZBUFFv07_freeDCtx()

size_t ZBUFFv07_freeDCtx ( ZBUFFv07_DCtx * zbd)

◆ ZBUFFv07_getErrorName()

const char * ZBUFFv07_getErrorName ( size_t errorCode)

◆ ZBUFFv07_isError()

unsigned ZBUFFv07_isError ( size_t errorCode)

◆ ZBUFFv07_limitCopy()

MEM_STATIC size_t ZBUFFv07_limitCopy ( void * dst,
size_t dstCapacity,
const void * src,
size_t srcSize )

◆ ZBUFFv07_recommendedDInSize()

size_t ZBUFFv07_recommendedDInSize ( void )

Functions below provide recommended buffer sizes for Compression or Decompression operations. These sizes are just hints, they tend to offer better latency

◆ ZBUFFv07_recommendedDOutSize()

size_t ZBUFFv07_recommendedDOutSize ( void )

◆ ZSTDv07_copyDCtx()

void ZSTDv07_copyDCtx ( ZSTDv07_DCtx * dctx,
const ZSTDv07_DCtx * preparedDCtx )

◆ ZSTDv07_createDCtx()

ZSTDv07_DCtx * ZSTDv07_createDCtx ( void )

◆ ZSTDv07_createDCtx_advanced()

ZSTDv07_DCtx * ZSTDv07_createDCtx_advanced ( ZSTDv07_customMem customMem)

ZSTDv07_createDCtx_advanced() : Create a ZSTD decompression context using external alloc and free functions

◆ ZSTDv07_createDDict()

ZSTDv07_DDict * ZSTDv07_createDDict ( const void * dict,
size_t dictSize )

ZSTDv07_createDDict() : Create a digested dictionary, ready to start decompression without startup delay. dict can be released after ZSTDv07_DDict creation

◆ ZSTDv07_decompress()

size_t ZSTDv07_decompress ( void * dst,
size_t dstCapacity,
const void * src,
size_t compressedSize )

ZSTDv07_decompress() : compressedSize : must be exact size of compressed input, otherwise decompression will fail. dstCapacity must be equal or larger than originalSize.

Returns
: the number of bytes decompressed into dst (<= dstCapacity), or an errorCode if it fails (which can be tested using ZSTDv07_isError())

◆ ZSTDv07_decompress_usingDDict()

ZSTDLIBv07_API size_t ZSTDv07_decompress_usingDDict ( ZSTDv07_DCtx * dctx,
void * dst,
size_t dstCapacity,
const void * src,
size_t srcSize,
const ZSTDv07_DDict * ddict )

ZSTDv07_decompress_usingDDict() : Decompression using a pre-digested Dictionary Use dictionary without significant overhead.

◆ ZSTDv07_decompress_usingDict()

size_t ZSTDv07_decompress_usingDict ( ZSTDv07_DCtx * dctx,
void * dst,
size_t dstCapacity,
const void * src,
size_t srcSize,
const void * dict,
size_t dictSize )

ZSTDv07_decompress_usingDict() : Decompression using a pre-defined Dictionary content (see dictBuilder). Dictionary must be identical to the one used during compression. Note : This function load the dictionary, resulting in a significant startup time

◆ ZSTDv07_decompressBegin()

size_t ZSTDv07_decompressBegin ( ZSTDv07_DCtx * dctx)

◆ ZSTDv07_decompressBegin_usingDict()

size_t ZSTDv07_decompressBegin_usingDict ( ZSTDv07_DCtx * dctx,
const void * dict,
size_t dictSize )

◆ ZSTDv07_decompressBlock()

size_t ZSTDv07_decompressBlock ( ZSTDv07_DCtx * dctx,
void * dst,
size_t dstCapacity,
const void * src,
size_t srcSize )

◆ ZSTDv07_decompressContinue()

size_t ZSTDv07_decompressContinue ( ZSTDv07_DCtx * dctx,
void * dst,
size_t dstCapacity,
const void * src,
size_t srcSize )

ZSTDv07_decompressContinue() :

Returns
: nb of bytes generated into dst (necessarily <= `dstCapacity) or an error code, which can be tested using ZSTDv07_isError()

◆ ZSTDv07_decompressDCtx()

size_t ZSTDv07_decompressDCtx ( ZSTDv07_DCtx * ctx,
void * dst,
size_t dstCapacity,
const void * src,
size_t srcSize )

ZSTDv07_decompressDCtx() : Same as ZSTDv07_decompress(), requires an allocated ZSTDv07_DCtx (see ZSTDv07_createDCtx())

◆ ZSTDv07_estimateDCtxSize()

size_t ZSTDv07_estimateDCtxSize ( void )

ZSTDv07_estimateDCtxSize() : Gives the potential amount of memory allocated to create a ZSTDv07_DCtx

◆ ZSTDv07_findFrameSizeInfoLegacy()

void ZSTDv07_findFrameSizeInfoLegacy ( const void * src,
size_t srcSize,
size_t * cSize,
unsigned long long * dBound )

ZSTDv07_findFrameSizeInfoLegacy() : get the source length and decompressed bound of a ZSTD frame compliant with v0.7.x format srcSize : The size of the 'src' buffer, at least as large as the frame pointed to by 'src' cSize (output parameter) : the number of bytes that would be read to decompress this frame or an error code if it fails (which can be tested using ZSTDv01_isError()) dBound (output parameter) : an upper-bound for the decompressed size of the data in the frame or ZSTD_CONTENTSIZE_ERROR if an error occurs

note : assumes cSize and dBound are not NULL.

◆ ZSTDv07_freeDCtx()

size_t ZSTDv07_freeDCtx ( ZSTDv07_DCtx * dctx)
Returns
: errorCode

◆ ZSTDv07_freeDDict()

size_t ZSTDv07_freeDDict ( ZSTDv07_DDict * ddict)

◆ ZSTDv07_getDecompressedSize()

unsigned long long ZSTDv07_getDecompressedSize ( const void * src,
size_t srcSize )

ZSTDv07_getDecompressedSize() : compatible with legacy mode

Returns
: decompressed size if known, 0 otherwise note : 0 can mean any of the following :
  • decompressed size is not provided within frame header
  • frame header unknown / not supported
  • frame header not completely provided (srcSize too small)

◆ ZSTDv07_getErrorName()

const char * ZSTDv07_getErrorName ( size_t code)

ZSTDv07_getErrorName() : provides error code string from function result (useful for debugging)

◆ ZSTDv07_getFrameParams()

size_t ZSTDv07_getFrameParams ( ZSTDv07_frameParams * fparamsPtr,
const void * src,
size_t srcSize )

ZSTDv07_getFrameParams() : decode Frame Header, or require larger srcSize.

Returns
: 0, fparamsPtr is correctly filled, >0, srcSize is too small, result is expected srcSize, or an error code, which can be tested using ZSTDv07_isError()

◆ ZSTDv07_insertBlock()

ZSTDLIBv07_API size_t ZSTDv07_insertBlock ( ZSTDv07_DCtx * dctx,
const void * blockStart,
size_t blockSize )

insert block into dctx history. Useful for uncompressed blocks

ZSTDv07_insertBlock() : insert src block into dctx history. Useful to track uncompressed blocks.

◆ ZSTDv07_isError()

unsigned ZSTDv07_isError ( size_t code)

ZSTDv07_isError() : tells if a return value is an error code

◆ ZSTDv07_isSkipFrame()

int ZSTDv07_isSkipFrame ( ZSTDv07_DCtx * dctx)

◆ ZSTDv07_nextSrcSizeToDecompress()

size_t ZSTDv07_nextSrcSizeToDecompress ( ZSTDv07_DCtx * dctx)

◆ ZSTDv07_seqToCodes()

void ZSTDv07_seqToCodes ( const seqStore_t * seqStorePtr,
size_t const nbSeq )

◆ ZSTDv07_sizeofDCtx()

size_t ZSTDv07_sizeofDCtx ( const ZSTDv07_DCtx * dctx)

ZSTDv07_sizeofDCtx() : Gives the amount of memory used by a given ZSTDv07_DCtx

◆ ZSTDv07_wildcopy()

MEM_STATIC void ZSTDv07_wildcopy ( void * dst,
const void * src,
ptrdiff_t length )