v0.11.2
-
Fixes subsampled JPEG 2000 decoding with nonzero image origins at reduced
resolutions and for cropped regions, including the wsi-rs fuzz reproducer. -
Improves JPEG entropy decoding, extended and lossless sample output,
progressive scan handling, and AArch64 NEON conversion and IDCT. -
Improves native bitplane scanning and full-resolution subsampled placement.
-
Improves grouped JPEG Metal decode, pooled output reuse, HT cleanup,
and inverse wavelet transform dispatch with regression coverage. -
JPEG DCT-scaled decodes (1/2, 1/4, 1/8) now match libjpeg-turbo, and
therefore OpenSlide's NDPI/VMS levels, bit for bit. Checked against a
committed libjpeg-turbo 3.1.4.1 reference matrix covering every chroma
layout, restart intervals, progressive scans and 12-bit precision:- Reduced IDCTs round like libjpeg's
DESCALEinstead of truncating. - Each component gets libjpeg-turbo's IDCT size: 4:2:0 and 4:1:0 chroma is
decoded with a larger reduced IDCT, so 4:2:0 needs no upsampling below
full size. - Chroma is replicated instead of smoothed at 1/8 scale, and at any scale
(including full size) when 2:1 chroma is at most two samples wide. - Progressive images apply the reduced IDCT to their coefficients instead
of decimating a full-size decode. - 12-bit images use 12-bit reduced IDCTs instead of decimating a full-size
decode. 12-bit 4:4:0, 4:1:1, 4:1:0 and 1x4 layouts still return
NotImplemented.
- Reduced IDCTs round like libjpeg's
-
Fixes a panic in 12-bit region decodes when the region excluded image
blocks on its left or right. -
Includes output rows in the 12-bit scratch budget so tall, narrow JPEGs
decode without false memory-cap failures. -
j2k-jpeg-cudaCPU-backed scaled and region-scaled surfaces now have the
scaled dimensions; they were sized from the source rectangle. -
JPEG Metal scaled decodes follow the same rules, and 4:2:0/4:2:2 region
decodes keep the neighbouring chroma their smoothing reads when a region
ends inside the image. JPEG images at most four pixels wide with 4:2:0 or
4:2:2 chroma are no longer Metal or CUDA fast shapes: explicit Metal
requests reject them and automatic routing decodes them on the CPU. -
Upgrades
fearless_simdto 1.0.0 for thej2k-jpegAArch64 NEON kernels
and the optionalj2k-nativesimdfeature. The dependency is private, so
public APIs are unchanged.j2k-jpegkeeps its private exact-AVX2 token on
x86-64 becausefearless_simd::Avx2still represents the broader x86-64-v3
feature set.
Release validation passed for the tagged source:
- Hosted CPU, API, package, and release checks.
- Full CUDA and Metal hardware validation.
- The release verifier validated all five attached T.803 reports for CPU on Linux, macOS, and Windows, plus CUDA and Metal.