ReactOS 0.4.15-dev-8621-g4b051b9
|
#include <stddef.h>
Go to the source code of this file.
Typedefs | |
typedef unsigned | FSE_CTable |
typedef unsigned | FSE_DTable |
#define FSE_LIB_VERSION FSE_VERSION_MAJOR.FSE_VERSION_MINOR.FSE_VERSION_RELEASE |
#define FSE_VERSION_NUMBER (FSE_VERSION_MAJOR *100*100 + FSE_VERSION_MINOR *100 + FSE_VERSION_RELEASE) |
#define FSE_VERSION_STRING FSE_EXPAND_AND_QUOTE(FSE_LIB_VERSION) |
typedef unsigned FSE_CTable |
typedef unsigned FSE_DTable |
FSE_PUBLIC_API size_t FSE_buildCTable | ( | FSE_CTable * | ct, |
const short * | normalizedCounter, | ||
unsigned | maxSymbolValue, | ||
unsigned | tableLog | ||
) |
FSE_buildCTable(): Builds ct
, which must be already allocated, using FSE_createCTable().
Definition at line 175 of file fse_compress.c.
FSE_PUBLIC_API size_t FSE_buildDTable | ( | FSE_DTable * | dt, |
const short * | normalizedCounter, | ||
unsigned | maxSymbolValue, | ||
unsigned | tableLog | ||
) |
FSE_buildDTable(): Builds 'dt', which must be already allocated, using FSE_createDTable(). return : 0, or an errorCode, which can be tested using FSE_isError()
Definition at line 73 of file fse_decompress.c.
Referenced by FSE_decompress_wksp().
FSE_PUBLIC_API size_t FSE_compress | ( | void * | dst, |
size_t | dstCapacity, | ||
const void * | src, | ||
size_t | srcSize | ||
) |
FSE_compress() : Compress content of buffer 'src', of size 'srcSize', into destination buffer 'dst'. 'dst' buffer must be already allocated. Compression runs faster is dstCapacity >= FSE_compressBound(srcSize).
Definition at line 695 of file fse_compress.c.
FSE_PUBLIC_API size_t FSE_compress2 | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
unsigned | maxSymbolValue, | ||
unsigned | tableLog | ||
) |
FSE_compress2() : Same as FSE_compress(), but allows the selection of 'maxSymbolValue' and 'tableLog' Both parameters can be defined as '0' to mean : use default value
Definition at line 687 of file fse_compress.c.
Referenced by FSE_compress().
FSE_PUBLIC_API size_t FSE_compress_usingCTable | ( | void * | dst, |
size_t | dstCapacity, | ||
const void * | src, | ||
size_t | srcSize, | ||
const FSE_CTable * | ct | ||
) |
FSE_compress_usingCTable(): Compress src
using ct
into dst
which must be already allocated.
dstCapacity
), or 0 if compressed data could not fit into dst
, or an errorCode, which can be tested using FSE_isError() Definition at line 616 of file fse_compress.c.
Referenced by FSE_compress_wksp(), and HUF_compressWeights().
FSE_PUBLIC_API size_t FSE_compressBound | ( | size_t | size | ) |
Definition at line 629 of file fse_compress.c.
FSE_PUBLIC_API FSE_CTable * FSE_createCTable | ( | unsigned | maxSymbolValue, |
unsigned | tableLog | ||
) |
Definition at line 308 of file fse_compress.c.
FSE_PUBLIC_API FSE_DTable * FSE_createDTable | ( | unsigned | tableLog | ) |
Definition at line 62 of file fse_decompress.c.
FSE_PUBLIC_API size_t FSE_decompress | ( | void * | dst, |
size_t | dstCapacity, | ||
const void * | cSrc, | ||
size_t | cSrcSize | ||
) |
FSE_decompress(): Decompress FSE data from buffer 'cSrc', of size 'cSrcSize', into already allocated destination buffer 'dst', of size 'dstCapacity'.
Important ** : FSE_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.
Definition at line 281 of file fse_decompress.c.
FSE_PUBLIC_API size_t FSE_decompress_usingDTable | ( | void * | dst, |
size_t | dstCapacity, | ||
const void * | cSrc, | ||
size_t | cSrcSize, | ||
const FSE_DTable * | dt | ||
) |
FSE_decompress_usingDTable(): Decompress compressed source cSrc
of size cSrcSize
using dt
into dst
which must be already allocated.
dstCapacity
), or an errorCode, which can be tested using FSE_isError() Definition at line 243 of file fse_decompress.c.
Referenced by FSE_decompress_wksp().
FSE_PUBLIC_API void FSE_freeCTable | ( | FSE_CTable * | ct | ) |
Definition at line 316 of file fse_compress.c.
FSE_PUBLIC_API void FSE_freeDTable | ( | FSE_DTable * | dt | ) |
Definition at line 68 of file fse_decompress.c.
FSE_PUBLIC_API const char * FSE_getErrorName | ( | size_t | code | ) |
Definition at line 32 of file entropy_common.c.
FSE_PUBLIC_API unsigned FSE_isError | ( | size_t | code | ) |
Definition at line 31 of file entropy_common.c.
FSE_PUBLIC_API size_t FSE_NCountWriteBound | ( | unsigned | maxSymbolValue, |
unsigned | tableLog | ||
) |
FSE_NCountWriteBound(): Provides the maximum possible size of an FSE normalized table, given 'maxSymbolValue' and 'tableLog'. Typically useful for allocation purpose.
Definition at line 189 of file fse_compress.c.
Referenced by FSE_writeNCount().
FSE_PUBLIC_API size_t FSE_normalizeCount | ( | short * | normalizedCounter, |
unsigned | tableLog, | ||
const unsigned * | count, | ||
size_t | srcSize, | ||
unsigned | maxSymbolValue | ||
) |
FSE_normalizeCount(): normalize counts so that sum(count[]) == Power_of_2 (2^tableLog) 'normalizedCounter' is a table of short, of minimum size (maxSymbolValue+1).
Definition at line 438 of file fse_compress.c.
Referenced by FSE_compress_wksp(), HUF_compressWeights(), ZSTD_buildCTable(), and ZSTD_NCountCost().
FSE_PUBLIC_API unsigned FSE_optimalTableLog | ( | unsigned | maxTableLog, |
size_t | srcSize, | ||
unsigned | maxSymbolValue | ||
) |
FSE_compress() does the following:
FSE_decompress() does the following:
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.
FSE_optimalTableLog(): dynamically downsize 'tableLog' when conditions are met. It saves CPU time, by using smaller tables, while preserving or even improving compression ratio.
Definition at line 342 of file fse_compress.c.
Referenced by FSE_compress_wksp(), HUF_compressWeights(), ZSTD_buildCTable(), and ZSTD_NCountCost().
FSE_PUBLIC_API size_t FSE_readNCount | ( | short * | normalizedCounter, |
unsigned * | maxSymbolValuePtr, | ||
unsigned * | tableLogPtr, | ||
const void * | rBuffer, | ||
size_t | rBuffSize | ||
) |
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'.
Definition at line 41 of file entropy_common.c.
Referenced by FSE_decompress_wksp(), FSE_readNCount(), ZSTD_loadCEntropy(), and ZSTD_loadDEntropy().
FSE_PUBLIC_API unsigned FSE_versionNumber | ( | void | ) |
library version number; to be used when checking dll version
Definition at line 27 of file entropy_common.c.
FSE_PUBLIC_API size_t FSE_writeNCount | ( | void * | buffer, |
size_t | bufferSize, | ||
const short * | normalizedCounter, | ||
unsigned | maxSymbolValue, | ||
unsigned | tableLog | ||
) |
FSE_writeNCount(): Compactly save 'normalizedCounter' into 'buffer'.
Definition at line 291 of file fse_compress.c.
Referenced by FSE_compress_wksp(), HUF_compressWeights(), ZSTD_buildCTable(), and ZSTD_NCountCost().