Skip to main content

Crate ai_fdeflate

Crate ai_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:

Structs§

Compressor
Compressor that produces zlib or raw deflate compressed streams.
Decompressor
Decompressor for arbitrary zlib streams.
StoredOnlyCompressor
Compressor that only writes stored (uncompressed) deflate blocks inside a zlib stream.
UltraFastCompressor
Compressor that produces fdeflate compressed streams.

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.
compress_to_vec_rle
Compresses the given data using only RLE matches.
compress_to_vec_ultra_fast
Compresses the given data using the ultra fast compression method.
compress_to_vec_with_level
Compresses the given data with a specific compression level.
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.