Skip to content

Tags: imazen/jxl-encoder

Tags

v0.3.1

Toggle v0.3.1's commit message
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

v0.3.0

Toggle v0.3.0's commit message
style: cargo fmt splines.rs

v0.2.0

Toggle v0.2.0's commit message
chore: bump version to 0.2.0 for release

Update workspace version to 0.2.0, update internal dep refs,
set CHANGELOG date to 2026-04-01, cargo update.

v0.1.4

Toggle v0.1.4's commit message
fix: update internal dep version refs to 0.1.4

Hardcoded version strings in jxl-encoder and jxl-encoder-cli
still referenced 0.2.0 after workspace bump was reverted.

v0.1.3

Toggle v0.1.3's commit message
release: v0.1.3

Multi-resolution butteraugli loop, butteraugli 0.7, IDCT transpose fix,
float quant_field, AFV corner strategies, non-square DCT coefficient
order fix.

v0.1.2

Toggle v0.1.2's commit message
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.

v0.1.0

Toggle v0.1.0's commit message
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.

v0.1.0-alpha1

Toggle v0.1.0-alpha1's commit message
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