mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-25 10:37:11 -06:00
heic-rs reconstructs iPhone HEVC tiles bit-exactly (checked against libde265), but its colour stage was 2-27 code values off libheif on every iPhone photo: it ignores the HEVC VUI and assumes BT.709 limited range. lightcraft-heif now converts YCbCr itself (nclx, else VUI, else H.265 defaults; nearest chroma, bilinear for odd clap offsets, as libheif), inherits tile ICC/nclx on grids, follows libheif's imir axis and clap rounding, and outputs 16-bit RGB. Measured on 30 real and synthetic files: within 1 code value of libheif (pillow-heif 1.8 / libheif 1.23). Also: HEIF header reader for import (no pixel decode), embedded thumbnail for small decodes, nclx/VUI colour hint (shared CICP mapping with PNG), clear 4:2:2/4:4:4 Unsupported error, Format::not_decodable as the one source of "why not" (import reports "HEIC/HEIF support isn't included in this build"), `.heif` imports. Release packaging and Nix build with the heif feature, as whats-new promised. lightcraft_heif::testdata writes lossless (PCM) synthetic HEICs for the tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
56 lines
2.1 KiB
TOML
56 lines
2.1 KiB
TOML
[package]
|
||
name = "lightcraft-engine"
|
||
version.workspace = true
|
||
edition.workspace = true
|
||
license.workspace = true
|
||
description = "LightCraft engine: session, command registry, history, render jobs, view-models (L4)"
|
||
|
||
[lints]
|
||
workspace = true
|
||
|
||
[dependencies]
|
||
lightcraft-geom = { workspace = true }
|
||
lightcraft-color = { workspace = true }
|
||
lightcraft-raster = { workspace = true }
|
||
lightcraft-develop = { workspace = true }
|
||
lightcraft-scenes = { workspace = true }
|
||
lightcraft-pipeline = { workspace = true }
|
||
lightcraft-gpu = { workspace = true }
|
||
lightcraft-catalog = { workspace = true }
|
||
web-time = { workspace = true }
|
||
lightcraft-preview = { workspace = true }
|
||
lightcraft-codecs = { workspace = true }
|
||
lightcraft-raw = { workspace = true }
|
||
lightcraft-denoise-core = { workspace = true }
|
||
lightcraft-denoise = { workspace = true, optional = true }
|
||
lightcraft-meta = { workspace = true }
|
||
lightcraft-faces = { workspace = true }
|
||
miniz_oxide = { workspace = true }
|
||
lightcraft-merge = { workspace = true }
|
||
rayon = { workspace = true }
|
||
serde = { workspace = true }
|
||
serde_json = { workspace = true }
|
||
thiserror = { workspace = true }
|
||
log = { workspace = true }
|
||
ab_glyph = { workspace = true }
|
||
# Apply the font’s vertical substitutions and origins to Japanese watermarks.
|
||
harfrust = { version = "0.12", default-features = false, features = ["std"] }
|
||
unicode-segmentation = "1.13"
|
||
lightcraft-segment = { workspace = true, optional = true }
|
||
|
||
# model downloads run natively only (the web build fetches no models)
|
||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||
lightcraft-fetch = { workspace = true }
|
||
|
||
[features]
|
||
# AI masks with SAM 3 (Object / Describe). Off for the web and CLI builds.
|
||
sam = ["dep:lightcraft-segment"]
|
||
denoise = ["dep:lightcraft-denoise", "lightcraft-denoise/runtime", "lightcraft-gpu/denoise"]
|
||
rawnind-model = ["denoise", "lightcraft-denoise/rawnind-model", "lightcraft-denoise-core/rawnind-model"]
|
||
|
||
[dev-dependencies]
|
||
# Lossless synthetic HEIC files (the import test; decoded when the codecs' `heif` feature is on).
|
||
lightcraft-heif = { workspace = true, features = ["testdata"] }
|
||
libc = { workspace = true }
|
||
lightcraft-tiff = { workspace = true }
|