1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use super::*;
use super::optimize_bytes::*;
use crate::error::Result;
pub fn decompress_bytes(
channels: &ChannelList,
data: ByteVec,
rectangle: IntegerBounds,
expected_byte_size: usize,
_pedantic: bool,
) -> Result<ByteVec> {
let mut decompressed = miniz_oxide::inflate
::decompress_to_vec_zlib_with_limit(&data, expected_byte_size)
.map_err(|_| Error::invalid("zlib-compressed data malformed"))?;
differences_to_samples(&mut decompressed);
interleave_byte_blocks(&mut decompressed);
Ok(super::convert_little_endian_to_current(&decompressed, channels, rectangle))}
pub fn compress_bytes(channels: &ChannelList, uncompressed: Bytes<'_>, rectangle: IntegerBounds) -> Result<ByteVec> {
let mut packed = convert_current_to_little_endian(uncompressed, channels, rectangle);
separate_bytes_fragments(&mut packed);
samples_to_differences(&mut packed);
Ok(miniz_oxide::deflate::compress_to_vec_zlib(packed.as_slice(), 4))
}