minor comment changes
This commit is contained in:
@@ -173,7 +173,7 @@ size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|||||||
size_t iSize = ip[0];
|
size_t iSize = ip[0];
|
||||||
size_t oSize;
|
size_t oSize;
|
||||||
|
|
||||||
//memset(huffWeight, 0, hwSize); /* is not necessary, even though some analyzer complain ... */
|
/* memset(huffWeight, 0, hwSize); *//* is not necessary, even though some analyzer complain ... */
|
||||||
|
|
||||||
if (iSize >= 128) { /* special header */
|
if (iSize >= 128) { /* special header */
|
||||||
if (iSize >= (242)) { /* RLE */
|
if (iSize >= (242)) { /* RLE */
|
||||||
@@ -181,8 +181,7 @@ size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|||||||
oSize = l[iSize-242];
|
oSize = l[iSize-242];
|
||||||
memset(huffWeight, 1, hwSize);
|
memset(huffWeight, 1, hwSize);
|
||||||
iSize = 0;
|
iSize = 0;
|
||||||
}
|
} else { /* Incompressible */
|
||||||
else { /* Incompressible */
|
|
||||||
oSize = iSize - 127;
|
oSize = iSize - 127;
|
||||||
iSize = ((oSize+1)/2);
|
iSize = ((oSize+1)/2);
|
||||||
if (iSize+1 > srcSize) return ERROR(srcSize_wrong);
|
if (iSize+1 > srcSize) return ERROR(srcSize_wrong);
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ size_t HUF_readCTable (HUF_CElt* CTable, U32 maxSymbolValue, const void* src, si
|
|||||||
U32 tableLog = 0;
|
U32 tableLog = 0;
|
||||||
size_t readSize;
|
size_t readSize;
|
||||||
U32 nbSymbols = 0;
|
U32 nbSymbols = 0;
|
||||||
//memset(huffWeight, 0, sizeof(huffWeight)); /* is not necessary, even though some analyzer complain ... */
|
/*memset(huffWeight, 0, sizeof(huffWeight));*/ /* is not necessary, even though some analyzer complain ... */
|
||||||
|
|
||||||
/* get symbol weights */
|
/* get symbol weights */
|
||||||
readSize = HUF_readStats(huffWeight, HUF_SYMBOLVALUE_MAX+1, rankVal, &nbSymbols, &tableLog, src, srcSize);
|
readSize = HUF_readStats(huffWeight, HUF_SYMBOLVALUE_MAX+1, rankVal, &nbSymbols, &tableLog, src, srcSize);
|
||||||
@@ -196,7 +196,7 @@ size_t HUF_readCTable (HUF_CElt* CTable, U32 maxSymbolValue, const void* src, si
|
|||||||
{ U32 n; for (n=0; n<nbSymbols; n++) {
|
{ U32 n; for (n=0; n<nbSymbols; n++) {
|
||||||
const U32 w = huffWeight[n];
|
const U32 w = huffWeight[n];
|
||||||
CTable[n].nbBits = (BYTE)(tableLog + 1 - w);
|
CTable[n].nbBits = (BYTE)(tableLog + 1 - w);
|
||||||
}}
|
} }
|
||||||
|
|
||||||
/* fill val */
|
/* fill val */
|
||||||
{ U16 nbPerRank[HUF_TABLELOG_MAX+1] = {0};
|
{ U16 nbPerRank[HUF_TABLELOG_MAX+1] = {0};
|
||||||
@@ -535,7 +535,6 @@ static size_t HUF_compress_internal (
|
|||||||
{ size_t const hSize = HUF_writeCTable (op, dstSize, CTable, maxSymbolValue, huffLog);
|
{ size_t const hSize = HUF_writeCTable (op, dstSize, CTable, maxSymbolValue, huffLog);
|
||||||
if (HUF_isError(hSize)) return hSize;
|
if (HUF_isError(hSize)) return hSize;
|
||||||
if (hSize + 12 >= srcSize) return 0; /* not useful to try compression */
|
if (hSize + 12 >= srcSize) return 0; /* not useful to try compression */
|
||||||
//static U64 totalHSize = 0; static U32 nbHSize = 0; totalHSize += hSize; nbHSize++; if ((nbHSize & 63) == 1) printf("average : %6.3f \n", (double)totalHSize / nbHSize);
|
|
||||||
op += hSize;
|
op += hSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -194,117 +194,7 @@ void ZSTD_copyDCtx(ZSTD_DCtx* dstDCtx, const ZSTD_DCtx* srcDCtx)
|
|||||||
* Decompression section
|
* Decompression section
|
||||||
***************************************************************/
|
***************************************************************/
|
||||||
|
|
||||||
/* Frame format description
|
/* See compression format details in : zstd_compression_format.md */
|
||||||
Frame Header - [ Block Header - Block ] - Frame End
|
|
||||||
1) Frame Header
|
|
||||||
- 4 bytes - Magic Number : ZSTD_MAGICNUMBER (defined within zstd.h)
|
|
||||||
- 1 byte - Frame Descriptor
|
|
||||||
2) Block Header
|
|
||||||
- 3 bytes, starting with a 2-bits descriptor
|
|
||||||
Uncompressed, Compressed, Frame End, unused
|
|
||||||
3) Block
|
|
||||||
See Block Format Description
|
|
||||||
4) Frame End
|
|
||||||
- 3 bytes, compatible with Block Header
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* Frame Header :
|
|
||||||
|
|
||||||
1 byte - FrameHeaderDescription :
|
|
||||||
bit 0-1 : dictID (0, 1, 2 or 4 bytes)
|
|
||||||
bit 2 : checksumFlag
|
|
||||||
bit 3 : reserved (must be zero)
|
|
||||||
bit 4 : reserved (unused, can be any value)
|
|
||||||
bit 5 : Single Segment (if 1, WindowLog byte is not present)
|
|
||||||
bit 6-7 : FrameContentFieldSize (0, 2, 4, or 8)
|
|
||||||
if (SkippedWindowLog && !FrameContentFieldsize) FrameContentFieldsize=1;
|
|
||||||
|
|
||||||
Optional : WindowLog (0 or 1 byte)
|
|
||||||
bit 0-2 : octal Fractional (1/8th)
|
|
||||||
bit 3-7 : Power of 2, with 0 = 1 KB (up to 2 TB)
|
|
||||||
|
|
||||||
Optional : dictID (0, 1, 2 or 4 bytes)
|
|
||||||
Automatic adaptation
|
|
||||||
0 : no dictID
|
|
||||||
1 : 1 - 255
|
|
||||||
2 : 256 - 65535
|
|
||||||
4 : all other values
|
|
||||||
|
|
||||||
Optional : content size (0, 1, 2, 4 or 8 bytes)
|
|
||||||
0 : unknown (fcfs==0 and swl==0)
|
|
||||||
1 : 0-255 bytes (fcfs==0 and swl==1)
|
|
||||||
2 : 256 - 65535+256 (fcfs==1)
|
|
||||||
4 : 0 - 4GB-1 (fcfs==2)
|
|
||||||
8 : 0 - 16EB-1 (fcfs==3)
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* Compressed Block, format description
|
|
||||||
|
|
||||||
Block = Literal Section - Sequences Section
|
|
||||||
Prerequisite : size of (compressed) block, maximum size of regenerated data
|
|
||||||
|
|
||||||
1) Literal Section
|
|
||||||
|
|
||||||
1.1) Header : 1-5 bytes
|
|
||||||
flags: 2 bits
|
|
||||||
00 compressed by Huff0
|
|
||||||
01 unused
|
|
||||||
10 is Raw (uncompressed)
|
|
||||||
11 is Rle
|
|
||||||
Note : using 01 => Huff0 with precomputed table ?
|
|
||||||
Note : delta map ? => compressed ?
|
|
||||||
|
|
||||||
1.1.1) Huff0-compressed literal block : 3-5 bytes
|
|
||||||
srcSize < 1 KB => 3 bytes (2-2-10-10) => single stream
|
|
||||||
srcSize < 1 KB => 3 bytes (2-2-10-10)
|
|
||||||
srcSize < 16KB => 4 bytes (2-2-14-14)
|
|
||||||
else => 5 bytes (2-2-18-18)
|
|
||||||
big endian convention
|
|
||||||
|
|
||||||
1.1.2) Raw (uncompressed) literal block header : 1-3 bytes
|
|
||||||
size : 5 bits: (IS_RAW<<6) + (0<<4) + size
|
|
||||||
12 bits: (IS_RAW<<6) + (2<<4) + (size>>8)
|
|
||||||
size&255
|
|
||||||
20 bits: (IS_RAW<<6) + (3<<4) + (size>>16)
|
|
||||||
size>>8&255
|
|
||||||
size&255
|
|
||||||
|
|
||||||
1.1.3) Rle (repeated single byte) literal block header : 1-3 bytes
|
|
||||||
size : 5 bits: (IS_RLE<<6) + (0<<4) + size
|
|
||||||
12 bits: (IS_RLE<<6) + (2<<4) + (size>>8)
|
|
||||||
size&255
|
|
||||||
20 bits: (IS_RLE<<6) + (3<<4) + (size>>16)
|
|
||||||
size>>8&255
|
|
||||||
size&255
|
|
||||||
|
|
||||||
1.1.4) Huff0-compressed literal block, using precomputed CTables : 3-5 bytes
|
|
||||||
srcSize < 1 KB => 3 bytes (2-2-10-10) => single stream
|
|
||||||
srcSize < 1 KB => 3 bytes (2-2-10-10)
|
|
||||||
srcSize < 16KB => 4 bytes (2-2-14-14)
|
|
||||||
else => 5 bytes (2-2-18-18)
|
|
||||||
big endian convention
|
|
||||||
|
|
||||||
1- CTable available (stored into workspace ?)
|
|
||||||
2- Small input (fast heuristic ? Full comparison ? depend on clevel ?)
|
|
||||||
|
|
||||||
|
|
||||||
1.2) Literal block content
|
|
||||||
|
|
||||||
1.2.1) Huff0 block, using sizes from header
|
|
||||||
See Huff0 format
|
|
||||||
|
|
||||||
1.2.2) Huff0 block, using prepared table
|
|
||||||
|
|
||||||
1.2.3) Raw content
|
|
||||||
|
|
||||||
1.2.4) single byte
|
|
||||||
|
|
||||||
|
|
||||||
2) Sequences section
|
|
||||||
TO DO
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** ZSTD_frameHeaderSize() :
|
/** ZSTD_frameHeaderSize() :
|
||||||
* srcSize must be >= ZSTD_frameHeaderSize_min.
|
* srcSize must be >= ZSTD_frameHeaderSize_min.
|
||||||
|
|||||||
Reference in New Issue
Block a user