Project Alice
Loading...
Searching...
No Matches
entropy_common.c File Reference
#include "mem.h"
#include "error_private.h"
#include "fse.h"
#include "huf.h"
#include "bits.h"
Include dependency graph for entropy_common.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define FSE_STATIC_LINKING_ONLY   /* FSE_MIN_TABLELOG */
 

Functions

unsigned FSE_versionNumber (void)
 
const char * FSE_getErrorName (size_t code)
 
const char * HUF_getErrorName (size_t code)
 
FORCE_INLINE_TEMPLATE size_t FSE_readNCount_body (short *normalizedCounter, unsigned *maxSVPtr, unsigned *tableLogPtr, const void *headerBuffer, size_t hbSize)
 
size_t FSE_readNCount_bmi2 (short *normalizedCounter, unsigned *maxSVPtr, unsigned *tableLogPtr, const void *headerBuffer, size_t hbSize, int bmi2)
 
size_t FSE_readNCount (short *normalizedCounter, unsigned *maxSVPtr, unsigned *tableLogPtr, const void *headerBuffer, size_t hbSize)
 
size_t HUF_readStats (BYTE *huffWeight, size_t hwSize, U32 *rankStats, U32 *nbSymbolsPtr, U32 *tableLogPtr, const void *src, size_t srcSize)
 
FORCE_INLINE_TEMPLATE size_t HUF_readStats_body (BYTE *huffWeight, size_t hwSize, U32 *rankStats, U32 *nbSymbolsPtr, U32 *tableLogPtr, const void *src, size_t srcSize, void *workSpace, size_t wkspSize, int bmi2)
 
size_t HUF_readStats_wksp (BYTE *huffWeight, size_t hwSize, U32 *rankStats, U32 *nbSymbolsPtr, U32 *tableLogPtr, const void *src, size_t srcSize, void *workSpace, size_t wkspSize, int flags)
 

Macro Definition Documentation

◆ FSE_STATIC_LINKING_ONLY

#define FSE_STATIC_LINKING_ONLY   /* FSE_MIN_TABLELOG */

Definition at line 20 of file entropy_common.c.

Function Documentation

◆ FSE_getErrorName()

const char * FSE_getErrorName ( size_t  code)

Definition at line 32 of file entropy_common.c.

Here is the call graph for this function:

◆ FSE_readNCount()

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

Tutorial :

The first step is to count all symbols. FSE_count() does this job very fast. Result will be saved into 'count', a table of unsigned int, which must be already allocated, and have 'maxSymbolValuePtr[0]+1' cells. 'src' is a table of bytes of size 'srcSize'. All values within 'src' MUST be <= maxSymbolValuePtr[0] maxSymbolValuePtr[0] will be updated, with its real value (necessarily <= original value) FSE_count() will return the number of occurrence of the most frequent symbol. This can be used to know if there is a single symbol within 'src', and to quickly evaluate its compressibility. If there is an error, the function will return an ErrorCode (which can be tested using FSE_isError()).

The next step is to normalize the frequencies. FSE_normalizeCount() will ensure that sum of frequencies is == 2 ^'tableLog'. It also guarantees a minimum of 1 to any Symbol with frequency >= 1. You can use 'tableLog'==0 to mean "use default tableLog value". If you are unsure of which tableLog value to use, you can ask FSE_optimalTableLog(), which will provide the optimal valid tableLog given sourceSize, maxSymbolValue, and a user-defined maximum (0 means "default").

The result of FSE_normalizeCount() will be saved into a table, called 'normalizedCounter', which is a table of signed short. 'normalizedCounter' must be already allocated, and have at least 'maxSymbolValue+1' cells. The return value is tableLog if everything proceeded as expected. It is 0 if there is a single symbol within distribution. If there is an error (ex: invalid tableLog value), the function will return an ErrorCode (which can be tested using FSE_isError()).

'normalizedCounter' can be saved in a compact manner to a memory area using FSE_writeNCount(). 'buffer' must be already allocated. For guaranteed success, buffer size must be at least FSE_headerBound(). The result of the function is the number of bytes written into 'buffer'. If there is an error, the function will return an ErrorCode (which can be tested using FSE_isError(); ex : buffer size too small).

'normalizedCounter' can then be used to create the compression table 'CTable'. The space required by 'CTable' must be already allocated, using FSE_createCTable(). You can then use FSE_buildCTable() to fill 'CTable'. If there is an error, both functions will return an ErrorCode (which can be tested using FSE_isError()).

'CTable' can then be used to compress 'src', with FSE_compress_usingCTable(). Similar to FSE_count(), the convention is that 'src' is assumed to be a table of char of size 'srcSize' The function returns the size of compressed data (without header), necessarily <= dstCapacity. If it returns '0', compressed data could not fit into 'dst'. If there is an error, the function will return an ErrorCode (which can be tested using FSE_isError()).

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

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

Definition at line 219 of file entropy_common.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FSE_readNCount_bmi2()

size_t FSE_readNCount_bmi2 ( short *  normalizedCounter,
unsigned *  maxSymbolValuePtr,
unsigned *  tableLogPtr,
const void *  rBuffer,
size_t  rBuffSize,
int  bmi2 
)

FSE_readNCount_bmi2(): Same as FSE_readNCount() but pass bmi2=1 when your CPU supports BMI2 and 0 otherwise.

Definition at line 206 of file entropy_common.c.

Here is the caller graph for this function:

◆ FSE_readNCount_body()

FORCE_INLINE_TEMPLATE size_t FSE_readNCount_body ( short *  normalizedCounter,
unsigned *  maxSVPtr,
unsigned *  tableLogPtr,
const void *  headerBuffer,
size_t  hbSize 
)

Definition at line 42 of file entropy_common.c.

Here is the call graph for this function:

◆ FSE_versionNumber()

unsigned FSE_versionNumber ( void  )

library version number; to be used when checking dll version

Definition at line 27 of file entropy_common.c.

◆ HUF_getErrorName()

const char * HUF_getErrorName ( size_t  code)

provides error code string (useful for debugging)

Definition at line 35 of file entropy_common.c.

Here is the call graph for this function:

◆ HUF_readStats()

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

HUF_readStats() : Read compact Huffman tree, saved by HUF_writeCTable(). huffWeight is destination buffer. rankStats is assumed to be a table of at least HUF_TABLELOG_MAX U32.

Returns
: size read from src , or an error Code . Note : Needed by HUF_readCTable() and HUF_readDTableX?() .

Definition at line 234 of file entropy_common.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HUF_readStats_body()

FORCE_INLINE_TEMPLATE size_t HUF_readStats_body ( BYTE huffWeight,
size_t  hwSize,
U32 rankStats,
U32 nbSymbolsPtr,
U32 tableLogPtr,
const void *  src,
size_t  srcSize,
void *  workSpace,
size_t  wkspSize,
int  bmi2 
)

Definition at line 243 of file entropy_common.c.

Here is the call graph for this function:

◆ HUF_readStats_wksp()

size_t HUF_readStats_wksp ( BYTE huffWeight,
size_t  hwSize,
U32 rankStats,
U32 nbSymbolsPtr,
U32 tableLogPtr,
const void *  src,
size_t  srcSize,
void *  workSpace,
size_t  wkspSize,
int  flags 
)

Definition at line 327 of file entropy_common.c.

Here is the caller graph for this function: