From f66c660b892a3b8a63fc729f8858a1ea3808b93a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Gonz=C3=A1lez?= Date: Thu, 28 Sep 2023 13:22:54 +0200 Subject: [PATCH] Update `zopfli` to v0.8.0 This update brings several parameterization and usage flexibility improvements on Zopfli, allowing users to choose to limit execution time by a number of iterations without improvement, and exposing a more advanced `ZlibEncoder` struct to tune compression block sizes and DEFLATE block types. Some minor microoptimizations were also made. For now, I don't expect this PR to substantially affect how OxiPNG compresses images using its Zopfli mode, but the additional parameter customization may come in handy for future work improving how Zopfli is used in OxiPNG. --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- src/deflate/zopfli_oxipng.rs | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 422f295d..5466053c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -385,9 +385,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memoffset" @@ -571,9 +571,9 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "simd-adler32" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "strsim" @@ -716,9 +716,9 @@ dependencies = [ [[package]] name = "zopfli" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0650ae6a051326d798eb099b632f1afb0d323d25ee4ec82ffb0779512084d5" +checksum = "5c1f48f3508a3a3f2faee01629564400bc12260f6214a056d06a3aaaa6ef0736" dependencies = [ "crc32fast", "log", diff --git a/Cargo.toml b/Cargo.toml index 77e8dd79..69c86ef5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ name = "zopfli" required-features = ["zopfli"] [dependencies] -zopfli = { version = "0.7.4", optional = true, default-features = false, features = ["std", "zlib"] } +zopfli = { version = "0.8.0", optional = true, default-features = false, features = ["std", "zlib"] } rgb = "0.8.36" indexmap = "2.0.0" libdeflater = "1.19.0" diff --git a/src/deflate/zopfli_oxipng.rs b/src/deflate/zopfli_oxipng.rs index b59b93df..49a0a251 100644 --- a/src/deflate/zopfli_oxipng.rs +++ b/src/deflate/zopfli_oxipng.rs @@ -6,10 +6,10 @@ pub fn deflate(data: &[u8], iterations: NonZeroU8) -> PngResult> { let mut output = Vec::with_capacity(max(1024, data.len() / 20)); let options = zopfli::Options { - iteration_count: iterations, + iteration_count: iterations.into(), ..Default::default() }; - match zopfli::compress(&options, &zopfli::Format::Zlib, data, &mut output) { + match zopfli::compress(options, zopfli::Format::Zlib, data, &mut output) { Ok(_) => (), Err(_) => return Err(PngError::new("Failed to compress in zopfli")), };