zstd/doc/educational_decoder
Yann Collet 2b0a271ed2 fix eductional decoder
fix #1774
also :
- fix minor compilation warnings
- make sure the `test` is run during CI tests
2019-09-06 14:30:13 -07:00
..
harness.c fixed more file headers after license change (#825) 2017-08-31 12:11:57 -07:00
Makefile fix eductional decoder 2019-09-06 14:30:13 -07:00
README.md Merge branch 'dev' into doc 2017-02-23 15:23:24 -08:00
zstd_decompress.c fix eductional decoder 2019-09-06 14:30:13 -07:00
zstd_decompress.h fix eductional decoder 2019-09-06 14:30:13 -07:00

Educational Decoder

zstd_decompress.c is a self-contained implementation in C99 of a decoder, according to the Zstandard format specification. While it does not implement as many features as the reference decoder, such as the streaming API or content checksums, it is written to be easy to follow and understand, to help understand how the Zstandard format works. It's laid out to match the format specification, so it can be used to understand how complex segments could be implemented. It also contains implementations of Huffman and FSE table decoding.

harness.c provides a simple test harness around the decoder:

harness <input-file> <output-file> [dictionary]

As an additional resource to be used with this decoder, see the decodecorpus tool in the tests directory. It generates valid Zstandard frames that can be used to verify a Zstandard decoder implementation. Note that to use the tool to verify this decoder implementation, the --content-size flag should be set, as this decoder does not handle streaming decoding, and so it must know the decompressed size in advance.