![]() |
Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
|
#include "../common/zstd_deps.h"
#include "../common/compiler.h"
#include "../common/bitstream.h"
#include "hist.h"
#include "../common/fse.h"
#include "../common/huf.h"
#include "../common/error_private.h"
Data Structures | |
struct | HUF_CompressWeightsWksp |
struct | HUF_WriteCTableWksp |
struct | nodeElt_s |
struct | rankPos |
struct | HUF_buildCTable_wksp_tables |
struct | HUF_CStream_t |
struct | HUF_compress_tables_t |
Macros | |
#define | FSE_STATIC_LINKING_ONLY /* FSE_optimalTableLog_internal */ |
#define | HUF_STATIC_LINKING_ONLY |
#define | HUF_isError ERR_isError |
#define | HUF_STATIC_ASSERT(c) |
#define | HUF_WORKSPACE_MAX_ALIGNMENT 8 |
#define | MAX_FSE_TABLELOG_FOR_HUFF_HEADER 6 |
#define | RANK_POSITION_TABLE_SIZE 192 |
#define | RANK_POSITION_MAX_COUNT_LOG 32 |
#define | RANK_POSITION_LOG_BUCKETS_BEGIN (RANK_POSITION_TABLE_SIZE - 1) - RANK_POSITION_MAX_COUNT_LOG - 1 /* == 158 */ |
#define | RANK_POSITION_DISTINCT_COUNT_CUTOFF RANK_POSITION_LOG_BUCKETS_BEGIN + BIT_highbit32(RANK_POSITION_LOG_BUCKETS_BEGIN) /* == 166 */ |
#define | STARTNODE (HUF_SYMBOLVALUE_MAX+1) |
#define | HUF_BITS_IN_CONTAINER (sizeof(size_t) * 8) |
#define | SUSPECT_INCOMPRESSIBLE_SAMPLE_SIZE 4096 |
#define | SUSPECT_INCOMPRESSIBLE_SAMPLE_RATIO 10 /* Must be >= 2 */ |
Typedefs | |
typedef struct nodeElt_s | nodeElt |
typedef nodeElt | huffNodeTable[HUF_CTABLE_WORKSPACE_SIZE_U32] |
Enumerations | |
enum | HUF_nbStreams_e { HUF_singleStream , HUF_fourStreams } |
Functions | |
unsigned | HUF_optimalTableLog (unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue) |
size_t | HUF_writeCTable_wksp (void *dst, size_t maxDstSize, const HUF_CElt *CTable, unsigned maxSymbolValue, unsigned huffLog, void *workspace, size_t workspaceSize) |
size_t | HUF_writeCTable (void *dst, size_t maxDstSize, const HUF_CElt *CTable, unsigned maxSymbolValue, unsigned huffLog) |
size_t | HUF_readCTable (HUF_CElt *CTable, unsigned *maxSymbolValuePtr, const void *src, size_t srcSize, unsigned *hasZeroWeights) |
U32 | HUF_getNbBitsFromCTable (HUF_CElt const *CTable, U32 symbolValue) |
MEM_STATIC int | HUF_isSorted (nodeElt huffNode[], U32 const maxSymbolValue1) |
HINT_INLINE void | HUF_insertionSort (nodeElt huffNode[], int const low, int const high) |
size_t | HUF_buildCTable_wksp (HUF_CElt *CTable, const unsigned *count, U32 maxSymbolValue, U32 maxNbBits, void *workSpace, size_t wkspSize) |
size_t | HUF_estimateCompressedSize (const HUF_CElt *CTable, const unsigned *count, unsigned maxSymbolValue) |
int | HUF_validateCTable (const HUF_CElt *CTable, const unsigned *count, unsigned maxSymbolValue) |
size_t | HUF_compressBound (size_t size) |
FORCE_INLINE_TEMPLATE void | HUF_addBits (HUF_CStream_t *bitC, HUF_CElt elt, int idx, int kFast) |
FORCE_INLINE_TEMPLATE void | HUF_zeroIndex1 (HUF_CStream_t *bitC) |
FORCE_INLINE_TEMPLATE void | HUF_mergeIndex1 (HUF_CStream_t *bitC) |
FORCE_INLINE_TEMPLATE void | HUF_flushBits (HUF_CStream_t *bitC, int kFast) |
FORCE_INLINE_TEMPLATE void | HUF_encodeSymbol (HUF_CStream_t *bitCPtr, U32 symbol, const HUF_CElt *CTable, int idx, int fast) |
FORCE_INLINE_TEMPLATE void | HUF_compress1X_usingCTable_internal_body_loop (HUF_CStream_t *bitC, const BYTE *ip, size_t srcSize, const HUF_CElt *ct, int kUnroll, int kFastFlush, int kLastFast) |
FORCE_INLINE_TEMPLATE size_t | HUF_compress1X_usingCTable_internal_body (void *dst, size_t dstSize, const void *src, size_t srcSize, const HUF_CElt *CTable) |
size_t | HUF_compress1X_usingCTable (void *dst, size_t dstSize, const void *src, size_t srcSize, const HUF_CElt *CTable) |
size_t | HUF_compress1X_usingCTable_bmi2 (void *dst, size_t dstSize, const void *src, size_t srcSize, const HUF_CElt *CTable, int bmi2) |
size_t | HUF_compress4X_usingCTable (void *dst, size_t dstSize, const void *src, size_t srcSize, const HUF_CElt *CTable) |
size_t | HUF_compress4X_usingCTable_bmi2 (void *dst, size_t dstSize, const void *src, size_t srcSize, const HUF_CElt *CTable, int bmi2) |
size_t | HUF_compress1X_wksp (void *dst, size_t dstSize, const void *src, size_t srcSize, unsigned maxSymbolValue, unsigned huffLog, void *workSpace, size_t wkspSize) |
size_t | HUF_compress1X_repeat (void *dst, size_t dstSize, const void *src, size_t srcSize, unsigned maxSymbolValue, unsigned huffLog, void *workSpace, size_t wkspSize, HUF_CElt *hufTable, HUF_repeat *repeat, int preferRepeat, int bmi2, unsigned suspectUncompressible) |
size_t | HUF_compress4X_wksp (void *dst, size_t dstSize, const void *src, size_t srcSize, unsigned maxSymbolValue, unsigned huffLog, void *workSpace, size_t wkspSize) |
size_t | HUF_compress4X_repeat (void *dst, size_t dstSize, const void *src, size_t srcSize, unsigned maxSymbolValue, unsigned huffLog, void *workSpace, size_t wkspSize, HUF_CElt *hufTable, HUF_repeat *repeat, int preferRepeat, int bmi2, unsigned suspectUncompressible) |
size_t | HUF_buildCTable (HUF_CElt *tree, const unsigned *count, unsigned maxSymbolValue, unsigned maxNbBits) |
size_t | HUF_compress1X (void *dst, size_t dstSize, const void *src, size_t srcSize, unsigned maxSymbolValue, unsigned huffLog) |
size_t | HUF_compress2 (void *dst, size_t dstSize, const void *src, size_t srcSize, unsigned maxSymbolValue, unsigned huffLog) |
size_t | HUF_compress (void *dst, size_t maxDstSize, const void *src, size_t srcSize) |
#define FSE_STATIC_LINKING_ONLY /* FSE_optimalTableLog_internal */ |
#define HUF_BITS_IN_CONTAINER (sizeof(size_t) * 8) |
HUF_CStream_t: Huffman uses its own BIT_CStream_t implementation. There are three major differences from BIT_CStream_t:
#define HUF_isError ERR_isError |
#define HUF_STATIC_ASSERT | ( | c | ) |
#define HUF_STATIC_LINKING_ONLY |
#define HUF_WORKSPACE_MAX_ALIGNMENT 8 |
#define MAX_FSE_TABLELOG_FOR_HUFF_HEADER 6 |
#define RANK_POSITION_DISTINCT_COUNT_CUTOFF RANK_POSITION_LOG_BUCKETS_BEGIN + BIT_highbit32(RANK_POSITION_LOG_BUCKETS_BEGIN) /* == 166 */ |
#define RANK_POSITION_LOG_BUCKETS_BEGIN (RANK_POSITION_TABLE_SIZE - 1) - RANK_POSITION_MAX_COUNT_LOG - 1 /* == 158 */ |
#define RANK_POSITION_MAX_COUNT_LOG 32 |
#define RANK_POSITION_TABLE_SIZE 192 |
#define STARTNODE (HUF_SYMBOLVALUE_MAX+1) |
HUF_buildCTable_wksp() : Same as HUF_buildCTable(), but using externally allocated scratch buffer. workSpace
must be aligned on 4-bytes boundaries, and be at least as large as sizeof(HUF_buildCTable_wksp_tables).
#define SUSPECT_INCOMPRESSIBLE_SAMPLE_RATIO 10 /* Must be >= 2 */ |
#define SUSPECT_INCOMPRESSIBLE_SAMPLE_SIZE 4096 |
typedef nodeElt huffNodeTable[2 *(HUF_SYMBOLVALUE_MAX+1)] |
enum HUF_nbStreams_e |
FORCE_INLINE_TEMPLATE void HUF_addBits | ( | HUF_CStream_t * | bitC, |
HUF_CElt | elt, | ||
int | idx, | ||
int | kFast ) |
HUF_addBits(): Adds the symbol stored in HUF_CElt elt to the bitstream.
elt | The element we're adding. This is a (nbBits, value) pair. See the HUF_CStream_t docs for the format. |
idx | Insert into the bitstream at this idx. |
kFast | This is a template parameter. If the bitstream is guaranteed to have at least 4 unused bits after this call it may be 1, otherwise it must be 0. HUF_addBits() is faster when fast is set. |
size_t HUF_buildCTable | ( | HUF_CElt * | tree, |
const unsigned * | count, | ||
unsigned | maxSymbolValue, | ||
unsigned | maxNbBits ) |
size_t HUF_buildCTable_wksp | ( | HUF_CElt * | CTable, |
const unsigned * | count, | ||
U32 | maxSymbolValue, | ||
U32 | maxNbBits, | ||
void * | workSpace, | ||
size_t | wkspSize ) |
size_t HUF_compress | ( | void * | dst, |
size_t | dstCapacity, | ||
const void * | src, | ||
size_t | srcSize ) |
HUF_compress() : Compress content from buffer 'src', of size 'srcSize', into buffer 'dst'. 'dst' buffer must be already allocated. Compression runs faster if dstCapacity
>= HUF_compressBound(srcSize). srcSize
must be <= HUF_BLOCKSIZE_MAX
== 128 KB.
dstCapacity
). Special values : if return == 0, srcData is not compressible => Nothing is stored within dst !!! if HUF_isError(return), compression failed (more details using HUF_getErrorName()) size_t HUF_compress1X | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
unsigned | maxSymbolValue, | ||
unsigned | huffLog ) |
size_t HUF_compress1X_repeat | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
unsigned | maxSymbolValue, | ||
unsigned | huffLog, | ||
void * | workSpace, | ||
size_t | wkspSize, | ||
HUF_CElt * | hufTable, | ||
HUF_repeat * | repeat, | ||
int | preferRepeat, | ||
int | bmi2, | ||
unsigned | suspectUncompressible ) |
size_t HUF_compress1X_usingCTable | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
const HUF_CElt * | CTable ) |
size_t HUF_compress1X_usingCTable_bmi2 | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
const HUF_CElt * | CTable, | ||
int | bmi2 ) |
FORCE_INLINE_TEMPLATE size_t HUF_compress1X_usingCTable_internal_body | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
const HUF_CElt * | CTable ) |
FORCE_INLINE_TEMPLATE void HUF_compress1X_usingCTable_internal_body_loop | ( | HUF_CStream_t * | bitC, |
const BYTE * | ip, | ||
size_t | srcSize, | ||
const HUF_CElt * | ct, | ||
int | kUnroll, | ||
int | kFastFlush, | ||
int | kLastFast ) |
size_t HUF_compress1X_wksp | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
unsigned | maxSymbolValue, | ||
unsigned | huffLog, | ||
void * | workSpace, | ||
size_t | wkspSize ) |
size_t HUF_compress2 | ( | void * | dst, |
size_t | dstCapacity, | ||
const void * | src, | ||
size_t | srcSize, | ||
unsigned | maxSymbolValue, | ||
unsigned | tableLog ) |
HUF_compress2() : Same as HUF_compress(), but offers control over maxSymbolValue
and tableLog
. maxSymbolValue
must be <= HUF_SYMBOLVALUE_MAX . tableLog
must be <= HUF_TABLELOG_MAX
.
size_t HUF_compress4X_repeat | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
unsigned | maxSymbolValue, | ||
unsigned | huffLog, | ||
void * | workSpace, | ||
size_t | wkspSize, | ||
HUF_CElt * | hufTable, | ||
HUF_repeat * | repeat, | ||
int | preferRepeat, | ||
int | bmi2, | ||
unsigned | suspectUncompressible ) |
size_t HUF_compress4X_usingCTable | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
const HUF_CElt * | CTable ) |
size_t HUF_compress4X_usingCTable_bmi2 | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
const HUF_CElt * | CTable, | ||
int | bmi2 ) |
size_t HUF_compress4X_wksp | ( | void * | dst, |
size_t | dstSize, | ||
const void * | src, | ||
size_t | srcSize, | ||
unsigned | maxSymbolValue, | ||
unsigned | huffLog, | ||
void * | workSpace, | ||
size_t | wkspSize ) |
size_t HUF_compressBound | ( | size_t | size | ) |
maximum compressed size (worst case)
FORCE_INLINE_TEMPLATE void HUF_encodeSymbol | ( | HUF_CStream_t * | bitCPtr, |
U32 | symbol, | ||
const HUF_CElt * | CTable, | ||
int | idx, | ||
int | fast ) |
size_t HUF_estimateCompressedSize | ( | const HUF_CElt * | CTable, |
const unsigned * | count, | ||
unsigned | maxSymbolValue ) |
FORCE_INLINE_TEMPLATE void HUF_flushBits | ( | HUF_CStream_t * | bitC, |
int | kFast ) |
HUF_flushBits() : Flushes the bits in the bit container @ index 0.
kFast | If kFast is set then we must know a-priori that the bit container will not overflow. |
HUF_getNbBitsFromCTable() : Read nbBits from CTable symbolTable, for symbol symbolValue
presumed <= HUF_SYMBOLVALUE_MAX Note 1 : is not inlined, as HUF_CElt definition is private
MEM_STATIC int HUF_isSorted | ( | nodeElt | huffNode[], |
U32 const | maxSymbolValue1 ) |
FORCE_INLINE_TEMPLATE void HUF_mergeIndex1 | ( | HUF_CStream_t * | bitC | ) |
HUF_mergeIndex1() : Merges the bit container @ index 1 into the bit container @ index 0 and zeros the bit container @ index 1.
unsigned HUF_optimalTableLog | ( | unsigned | maxTableLog, |
size_t | srcSize, | ||
unsigned | maxSymbolValue ) |
size_t HUF_readCTable | ( | HUF_CElt * | CTable, |
unsigned * | maxSymbolValuePtr, | ||
const void * | src, | ||
size_t | srcSize, | ||
unsigned * | hasZeroWeights ) |
HUF_readCTable() : Loading a CTable saved with HUF_writeCTable()
size_t HUF_writeCTable | ( | void * | dst, |
size_t | maxDstSize, | ||
const HUF_CElt * | CTable, | ||
unsigned | maxSymbolValue, | ||
unsigned | huffLog ) |
HUF_writeCTable() : CTable
: Huffman tree to save, using huf representation.
size_t HUF_writeCTable_wksp | ( | void * | dst, |
size_t | maxDstSize, | ||
const HUF_CElt * | CTable, | ||
unsigned | maxSymbolValue, | ||
unsigned | huffLog, | ||
void * | workspace, | ||
size_t | workspaceSize ) |
FORCE_INLINE_TEMPLATE void HUF_zeroIndex1 | ( | HUF_CStream_t * | bitC | ) |