Crate fdeflate

Source
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:

Modulesยง

compress ๐Ÿ”’
decompress ๐Ÿ”’
huffman ๐Ÿ”’
tables ๐Ÿ”’

Structsยง

Compressor
Compressor that produces fdeflate compressed streams.
Decompressor
Decompressor for arbitrary zlib streams.
StoredOnlyCompressor
Compressor that only writes the stored blocks.

Enumsยง

BoundedDecompressionError
An error encountered while decompressing a deflate stream given a bounded maximum output.
DecompressionError
An error encountered while decompressing a deflate stream.

Functionsยง

compress_to_vec
Compresses the given data.
compute_codes ๐Ÿ”’
decompress_to_vec
Decompress the given data.
decompress_to_vec_bounded
Decompress the given data, returning an error if the output is larger than maxlen bytes.