Use craft-heif from craft-libs for HEIC/HEIF (#13076)

* Use craft-heif from craft-libs; remove crates/heif

PhotoCraft's HEIF decoder had drifted from LightCraft's by about 700 lines;
both now use craft-heif (storytold/craft-libs#784), built from LightCraft's
copy. HEIC colours now follow the HEVC VUI's range and matrix and libheif's
chroma upsampling. 8-bit files still open as 8-bit documents; a colour
description the VUI specifies now tags the image as an nclx did.

The codecs -> heif standalone exception ends with the local crate, and the
HEIF nextest step drops -p photocraft-heif, which no longer exists.

* Pin craft-heif to the merge of storytold/craft-libs#794

* heif: count the decoder's 16-bit buffer against max_alloc

* heif: match Apple's chroma upsampling; pin craft-heif to storytold/craft-libs#799

* heif: free the decoder's buffer before the HDR conversion and count that conversion's peak

* heif: hold the canvas the decoder really allocates to max_alloc
This commit is contained in:
Dylan M. Taylor authored and GitHub committed 2026-11-11 01:59:37 -05:00
1 parent 5d58d5fa2a
commit 5d4b68f04c
21 files changed
+119 -634

No files matched your search

+1 -1
View File
@@ -320,7 +320,7 @@ jobs:
tool: cargo-nextest@0.9.150
- name: Test without heif
run: cargo nextest run -p photocraft-heif -p photocraft-codecs -p photocraft-io --locked --profile ci
run: cargo nextest run -p photocraft-codecs -p photocraft-io --locked --profile ci
corpus:
if: github.event.action != 'labeled' || github.event.label.name == 'full-ci'