mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-25 10:37:11 -06:00
Compression 52546 tiles and strips decode through jxl-oxide (new default-on `jxl` feature of lightcraft-raw): bare codestreams and ISO-BMFF containers, 1 or 3 planes, 8-16-bit integers scaled back exactly from the codestream's own bit depth, 16-bit floats. Edge tiles may be coded at their nominal or in-image size. Headers are checked against the IFD in header-only probing too. A single-chunk JPEG XL preview IFD (RGB or grey) is offered as the embedded preview. The decoder's memory is bounded by the tile: 16 bytes per sample (three times that for a lossy grey tile, which the decoder expands to three channels) plus 64 KiB; jxl-oxide 0.12 was measured at <= 10.3 bytes per sample for lossless and <= 13.5 per colour sample for lossy tiles. A codestream needing more (e.g. extra channels) is an error. Lossless tiles are checked bit-exact on synthetic CFA and LinearRaw files (zune-jpegxl as a test-only encoder); lossy tiles are unverified on a real file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
36 lines
1.1 KiB
TOML
36 lines
1.1 KiB
TOML
[package]
|
|
name = "lightcraft-raw"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "LightCraft RAW decoding, demosaicing and DNG colour model (L1)"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
lightcraft-tiff = { workspace = true }
|
|
lightcraft-meta = { workspace = true }
|
|
lightcraft-raster = { workspace = true }
|
|
lightcraft-color = { workspace = true }
|
|
lightcraft-geom = { workspace = true }
|
|
serde = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
rayon = { workspace = true }
|
|
miniz_oxide = { workspace = true }
|
|
zune-jpeg = { workspace = true }
|
|
zune-core = { workspace = true }
|
|
jxl-oxide = { workspace = true, optional = true }
|
|
|
|
[features]
|
|
default = ["jxl"]
|
|
## JPEG XL compressed DNGs (DNG 1.7, compression 52546) via jxl-oxide (pure Rust, MIT OR Apache-2.0).
|
|
jxl = ["dep:jxl-oxide"]
|
|
|
|
[dev-dependencies]
|
|
jpeg-encoder = { workspace = true }
|
|
proptest = { workspace = true }
|
|
zune-jpegxl = { workspace = true }
|
|
# Pinned CC0 corpus identities; not a product dependency.
|
|
sha2 = { version = "0.10", default-features = false, features = ["std"] }
|