updated spec

This commit is contained in:
Yann Collet
2016-07-08 19:16:57 +02:00
parent c40ba718d7
commit bd10607063
2 changed files with 37 additions and 6 deletions
+32 -1
View File
@@ -16,7 +16,7 @@ Distribution of this document is unlimited.
### Version
0.0.2 (July 2016 - Work in progress - unfinished)
0.1.0 (08/07/16)
Introduction
@@ -1119,6 +1119,37 @@ with the new offset taking first spot.
pushing the other ones by one position.
Dictionary format
-----------------
`zstd` is compatible with "pure content" dictionaries, free of any format restriction.
But dictionaries created by `zstd --train` follow a format, described here.
__Pre-requisites__ : a dictionary has a known length,
defined either by a buffer limit, or a file size.
| Header | DictID | Stats | Content |
| ------ | ------ | ----- | ------- |
__Header__ : 4 bytes ID, value 0xEC30A437, Little Endian format
__Dict_ID__ : 4 bytes, stored in Little Endian format.
DictID can be any value, except 0 (which means no DictID).
It's used by decoders to check they use the correct dictionary.
__Stats__ : Entropy tables, following the same format as a [compressed blocks].
They are stored in following order :
Huffman tables for literals, FSE table for offset,
FSE table for matchLenth, and finally FSE table for litLength.
It's then followed by 3 offset values, populating recent offsets,
stored in order 4-bytes little endian each, for a total of 12 bytes.
__Content__ : Where the actual dictionary content is.
Content depends on Dictionary size.
[compressed blocks]: #compressed-block-format
Version changes
---------------
0.1.0 initial release