From c7be09429d610d649a715778d197eb1400cf6ce5 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 30 Sep 2026 23:45:06 -0400 Subject: [PATCH] M10.4: multithreaded AVIF encoding (ravif threading, speed 8): ~4x faster export Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 2 ++ Cargo.toml | 2 +- crates/engine/src/export.rs | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aa997eba..0ffd4eea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2239,6 +2239,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" dependencies = [ "cfg-if", + "rayon", ] [[package]] @@ -3261,6 +3262,7 @@ dependencies = [ "loop9", "quick-error 2.0.1", "rav1e", + "rayon", "rgb", ] diff --git a/Cargo.toml b/Cargo.toml index 1e47d213..0cf6a740 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,7 +50,7 @@ tiff = "0.11" image-webp = "0.2" moxcms = { version = "0.9", default-features = false, features = ["lut"] } jxl-oxide = { version = "0.12", default-features = false } -ravif = { version = "0.13", default-features = false } +ravif = { version = "0.13", default-features = false, features = ["threading"] } # no "asm": it needs nasm (non-Rust) # ui egui = "0.36" diff --git a/crates/engine/src/export.rs b/crates/engine/src/export.rs index fb939739..91cef977 100644 --- a/crates/engine/src/export.rs +++ b/crates/engine/src/export.rs @@ -207,7 +207,7 @@ pub fn encode_image(img: &Rgba8, o: &ExportOptions) -> Result, String> { ExportFormat::Png => encode::encode_png(&e, &meta), ExportFormat::Tiff => encode::encode_tiff(&e, TiffCompression::Deflate, &meta), ExportFormat::Webp => encode::encode_webp_lossless(&e, &meta), - ExportFormat::Avif => encode::encode_avif(&e, o.quality, 6, &meta), + ExportFormat::Avif => encode::encode_avif(&e, o.quality, 8, &meta), }; r.map_err(|e| e.to_string()) }