Expand description
§LZW decoder and encoder
This crates provides a LzwEncoder
and LzwDecoder
. The code words are written from
and to bit streams where it is possible to write either the most or least significant
bit first. The maximum possible code size is 16 bits. Both types rely on RAII to
produced correct results.
The de- and encoder expect the LZW stream to start with a clear code and end with an end code which are defined as follows:
CLEAR_CODE == 1 << min_code_size
END_CODE == CLEAR_CODE + 1
Examplary use of the encoder:
use lzw::{LsbWriter, Encoder};
let size = 8;
let data = b"TOBEORNOTTOBEORTOBEORNOT";
let mut compressed = vec![];
{
let mut enc = Encoder::new(LsbWriter::new(&mut compressed), size).unwrap();
enc.encode_bytes(data).unwrap();
}
Structs§
- Decoder
- Decoder for a LZW compressed stream (this algorithm is used for GIF files).
- Decoder
Early Change - Decoder for a LZW compressed stream using an “early change” algorithm (used in TIFF files).
- Encoder
- LZW encoder using the algorithm of GIF files.
- LsbReader
- Reads bits from a byte stream, LSB first.
- LsbWriter
- Writes bits to a byte stream, LSB first.
- MsbReader
- Reads bits from a byte stream, MSB first.
- MsbWriter
- Writes bits to a byte stream, MSB first.
Enums§
- Bits
- Containes either the consumed bytes and reconstructed bits or only the consumed bytes if the supplied buffer was not bit enough
Traits§
Functions§
- encode
- Convenience function that reads and compresses all bytes from
R
.