Tags: imazen/jxl-encoder
Tags
chore(release): jxl-encoder workspace 0.3.1 Bump workspace version 0.3.0 → 0.3.1. Mark CHANGELOG [Unreleased] section as [0.3.1] - 2026-05-02. Ships: - __expert cargo feature (renamed from unstable-tuning-knobs) - LossyInternalParams + LosslessInternalParams (segmented from EffortProfile) - ValidationError + Lossy/LosslessConfig::validate() - Theory docs + 27 expert tests + 37 validation tests
fix: bump to v0.1.2 — enable all non-square DCT transforms All four non-square large transforms (DCT32x16, DCT16x32, DCT64x32, DCT32x64) now produce correct quality and are enabled in auto-selection. 16 of 19 AC strategies now enabled (only AFV0-3 still disabled). Root cause was a missing bucket in the coefficient order mapping: bucket_to_cx_cy() didn't handle bucket 6 (DCT32X16/DCT16X32), causing custom coefficient orders to be skipped. The encoder and decoder used incompatible default orderings, scrambling 502/512 AC coefficient positions. Fixed by adding the missing bucket mapping, correcting bucket labels, and switching default orders to match the decoder's ComputeNaturalCoeffOrder. DCT32X16 produces 8% smaller files than DCT8 at equal quality.
feat: update butteraugli dependency to 0.6 butteraugli 0.6 adds upfront parameter validation (rejects zero/negative hf_asymmetry, zero intensity_target, NaN/Inf parameters) and input pixel scanning for non-finite values. No code changes needed — all existing usage patterns are compatible with the new version.
VarDCT encoder alpha - synthetic images working, real photos degraded Status: - DCT8/16/32 variable block sizes: WORKING - Synthetic test patterns: SSIM2 85-99 ✓ - Real photos (1507x2048): SSIM2 23 vs libjxl's 82 ✗ - File size: 4x larger than libjxl at same distance Known issues: - Real photo quality significantly worse than libjxl - Blurry 8x8 block artifacts visible on detailed images - Quantization or entropy coding needs investigation Test: cargo test test_vardct_quality_enforcement -- --ignored