Expand description
A fast deflate implementation.
This crate contains an optimized implementation of the deflate algorithm tuned to compress PNG images. It is compatible with standard zlib, but make a bunch of simplifying assumptions that drastically improve encoding performance:
- Exactly one block per deflate stream.
- No distance codes except for run length encoding of zeros.
- A single fixed huffman tree trained on a large corpus of PNG images.
- All huffman codes are 12 bits or less.
It also contains a fast decompressor that supports arbitrary zlib streams but does especially well on streams that meet the above assumptions.
Inspiration
The algorithms in this crate take inspiration from multiple sources:
Structs
- Compressor that produces fdeflate compressed streams.
- Decompressor for arbitrary zlib streams.
- Compressor that only writes the stored blocks.
Enums
- An error encountered while decompressing a deflate stream given a bounded maximum output.
- An error encountered while decompressing a deflate stream.
Functions
- Compresses the given data.
- Decompress the given data.
- Decompress the given data, returning an error if the output is larger than
maxlen
bytes.