Wire progressive JPEG, AVIF speed, and custom per-format quality to encoder
- Add EncoderOptions struct with progressive_jpeg and avif_speed fields - Pass encoder options through ProcessingJob to PipelineExecutor - mozjpeg set_progressive_mode() called when progressive JPEG enabled - AVIF encoder speed now configurable (was hardcoded to 6) - run_processing uses CompressConfig::Custom when user overrides preset defaults - Executor properly handles AVIF quality and PNG level in Custom mode
This commit is contained in:
@@ -1265,9 +1265,31 @@ fn run_processing(_window: &adw::ApplicationWindow, ui: &WizardUi) {
|
||||
}
|
||||
|
||||
if cfg.compress_enabled {
|
||||
job.compress = Some(pixstrip_core::operations::CompressConfig::Preset(cfg.quality_preset));
|
||||
// Check if user has customized per-format quality values beyond the preset defaults
|
||||
let preset_jpeg = cfg.quality_preset.jpeg_quality();
|
||||
let preset_webp = cfg.quality_preset.webp_quality();
|
||||
let has_custom = cfg.jpeg_quality != preset_jpeg
|
||||
|| cfg.webp_quality != preset_webp as u8
|
||||
|| cfg.avif_quality != preset_webp as u8
|
||||
|| cfg.avif_speed != 6
|
||||
|| cfg.webp_effort != 4;
|
||||
|
||||
if has_custom {
|
||||
job.compress = Some(pixstrip_core::operations::CompressConfig::Custom {
|
||||
jpeg_quality: Some(cfg.jpeg_quality),
|
||||
png_level: Some(cfg.png_level),
|
||||
webp_quality: Some(cfg.webp_quality as f32),
|
||||
avif_quality: Some(cfg.avif_quality as f32),
|
||||
});
|
||||
} else {
|
||||
job.compress = Some(pixstrip_core::operations::CompressConfig::Preset(cfg.quality_preset));
|
||||
}
|
||||
}
|
||||
|
||||
// Pass encoder options to the job
|
||||
job.progressive_jpeg = cfg.progressive_jpeg;
|
||||
job.avif_speed = cfg.avif_speed;
|
||||
|
||||
if cfg.metadata_enabled {
|
||||
job.metadata = Some(match cfg.metadata_mode {
|
||||
MetadataMode::StripAll => pixstrip_core::operations::MetadataConfig::StripAll,
|
||||
|
||||
Reference in New Issue
Block a user