Allow user to specify maximum block splits

This commit is contained in:
Chris Hennick 2023-06-18 13:55:18 -07:00
parent 548f21d92f
commit 971edf7b8c
No known key found for this signature in database
GPG key ID: 25653935CC8B6C74

View file

@ -60,14 +60,16 @@ impl Deflater for Deflaters {
pub struct BufferedZopfliDeflater { pub struct BufferedZopfliDeflater {
iterations: NonZeroU8, iterations: NonZeroU8,
input_buffer_size: usize, input_buffer_size: usize,
output_buffer_size: usize output_buffer_size: usize,
max_block_splits: u16
} }
impl BufferedZopfliDeflater { impl BufferedZopfliDeflater {
pub const fn new(iterations: NonZeroU8, pub const fn new(iterations: NonZeroU8,
input_buffer_size: usize, input_buffer_size: usize,
output_buffer_size: usize) -> Self { output_buffer_size: usize,
BufferedZopfliDeflater {iterations, input_buffer_size, output_buffer_size } max_block_splits: u16) -> Self {
BufferedZopfliDeflater {iterations, input_buffer_size, output_buffer_size, max_block_splits }
} }
} }
@ -76,6 +78,7 @@ impl Deflater for BufferedZopfliDeflater {
fn deflate(&self, data: &[u8], max_size: &AtomicMin) -> PngResult<Vec<u8>> { fn deflate(&self, data: &[u8], max_size: &AtomicMin) -> PngResult<Vec<u8>> {
let options = Options { let options = Options {
iteration_count: self.iterations, iteration_count: self.iterations,
maximum_block_splits: self.max_block_splits,
..Default::default() ..Default::default()
}; };
let mut buffer = BufWriter::with_capacity(self.input_buffer_size, let mut buffer = BufWriter::with_capacity(self.input_buffer_size,