#decompression #xnb #lzx

lzxd

Decompression implementation for Microsoft's LZXD compression format

11 releases

0.2.5 Dec 27, 2023
0.2.4 Dec 26, 2023
0.2.1 Nov 21, 2023
0.1.4 Oct 10, 2021
0.1.0 Jul 13, 2020

#61 in Compression

Download history 20350/week @ 2024-08-18 18326/week @ 2024-08-25 20474/week @ 2024-09-01 20413/week @ 2024-09-08 16901/week @ 2024-09-15 20026/week @ 2024-09-22 16810/week @ 2024-09-29 21895/week @ 2024-10-06 22661/week @ 2024-10-13 18183/week @ 2024-10-20 17910/week @ 2024-10-27 17211/week @ 2024-11-03 20009/week @ 2024-11-10 19434/week @ 2024-11-17 21349/week @ 2024-11-24 21718/week @ 2024-12-01

83,949 downloads per month
Used in 29 crates (via cab)

MIT/Apache

69KB
1K SLoC

lzxd

A Rust implementation of Microsoft's lzxd encoding, based in the description and code of the document itself. This crate currently only implements decompression.

use lzxd::{Lzxd, WindowSize};

let mut lzxd = Lzxd::new(WindowSize::KB64);

while let Some(chunk) = get_compressed_chunk() {
    let decompressed = lzxd.decompress_next(&chunk);
    write_data(decompressed.unwrap());
}

The project's motivation was to be able to read XNB files produced by XNA Game Studio, some of which are compressed under LZXD compression.

Huge thanks to LeonBlade for their xnbcli project which helped greatly to debug this implementation, and special mention to dorkbox's CabParser for further helping validate that this implementation is able to decompress real-world data correctly.

License

This library is licensed under either of

at your option.

No runtime deps