Skip to content

Commit 2a27312

Browse files
Merge pull request #183 from Shnatsel/zune-inflate
Use zune-inflate for decompression, take 2
2 parents a3004cc + 213ac22 commit 2a27312

File tree

4 files changed

+23
-4
lines changed

4 files changed

+23
-4
lines changed

Cargo.lock

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ lebe = "^0.5.2" # generic binary serialization
3131
half = "^2.1.0" # 16 bit float pixel data type
3232
bit_field = "^0.10.1" # exr file version bit flags
3333
miniz_oxide = "^0.6.2" # zip compression for pxr24
34+
zune-inflate = { version = "^0.2.3", default-features = false, features = ["zlib"] } # zip decompression, faster than miniz_oxide
3435
smallvec = "^1.7.0" # make cache-friendly allocations TODO profile if smallvec is really an improvement!
3536
threadpool = "^1.8.1" # threading for parallel compression TODO make this an optional feature?
3637
flume = "^0.10.9" # crossbeam, but less unsafe code TODO make this an optional feature?

src/compression/pxr24.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,9 @@ pub fn decompress(channels: &ChannelList, bytes: ByteVec, area: IntegerBounds, e
145145
))
146146
}
147147

148-
let raw = miniz_oxide::inflate
149-
::decompress_to_vec_zlib_with_limit(&bytes, expected_byte_size)
148+
let options = zune_inflate::DeflateOptions::default().set_limit(expected_byte_size).set_size_hint(expected_byte_size);
149+
let mut decoder = zune_inflate::DeflateDecoder::new_with_options(&bytes, options);
150+
let raw = decoder.decode_zlib()
150151
.map_err(|_| Error::invalid("zlib-compressed data malformed"))?; // TODO share code with zip?
151152

152153
let mut read = raw.as_slice();

src/compression/zip.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ pub fn decompress_bytes(
1919
expected_byte_size: usize,
2020
_pedantic: bool,
2121
) -> Result<ByteVec> {
22-
let mut decompressed = miniz_oxide::inflate
23-
::decompress_to_vec_zlib_with_limit(&data, expected_byte_size)
22+
let options = zune_inflate::DeflateOptions::default().set_limit(expected_byte_size).set_size_hint(expected_byte_size);
23+
let mut decoder = zune_inflate::DeflateDecoder::new_with_options(&data, options);
24+
let mut decompressed = decoder.decode_zlib()
2425
.map_err(|_| Error::invalid("zlib-compressed data malformed"))?;
2526

2627
differences_to_samples(&mut decompressed);

0 commit comments

Comments
 (0)