S15.1: rawler reads back a linear DNG, so that is the container
A hand-rolled 64×48 LinearRaw DNG — one IFD, 16-bit RGB, DNGVersion, ColorMatrix1, AsShotNeutral — comes back through rawler 0.7 with cpp 3, the samples in the order written and the matrix parsed into the camera definition; CameraProfile::extract builds a profile from it. ImageMagick reads the same bytes. dr_decode::decode currently accepts the file as CFA and passes three times the samples on, so the cpp == 3 branch is the decode work FR-MRG-3 needs, and the only decode work. panorama.md §8 records the result.
This commit is contained in:
+16
-4
@@ -167,7 +167,7 @@ the way S9 calibrates R1.
|
||||
FR-MRG-3. Scene-linear, ≥ 16 bits, wide gamut, the first source's capture
|
||||
metadata, named from the first source with a `-pano` suffix, beside it.
|
||||
|
||||
Two containers are candidates and S15.1 decides:
|
||||
Two containers were candidates and S15.1 decided, on 2026-09-19:
|
||||
|
||||
- **Linear DNG.** `PhotometricInterpretation = LinearRaw`, three samples per
|
||||
pixel, `ColorMatrix1` carried from the first source. Re-enters through
|
||||
@@ -178,9 +178,21 @@ Two containers are candidates and S15.1 decides:
|
||||
the existing encoder with a different sample type, and nothing about it is
|
||||
uncertain.
|
||||
|
||||
Either way the composite enters the pipeline as a non-CFA, *linear* source —
|
||||
`from_rgba8`'s sibling with `non_linear = false` and the base curve resolved
|
||||
from the carried matrix — and is developed as any RAW is.
|
||||
**Linear DNG.** [`examples/linear_dng.rs`](../core/dr-decode/examples/linear_dng.rs)
|
||||
hand-rolls a 64 × 48 `LinearRaw` DNG — one IFD, uncompressed 16-bit RGB,
|
||||
`DNGVersion`, `ColorMatrix1`, `AsShotNeutral`, `CalibrationIlluminant1` — and
|
||||
rawler 0.7 reads it back: `cpp 3`, the samples interleaved as written, the
|
||||
matrix parsed into the camera definition, and `CameraProfile::extract` builds
|
||||
the same profile it would for a camera file. ImageMagick's libraw reads the
|
||||
same bytes. What does *not* yet work is `dr_decode::decode`, which accepts the
|
||||
file as CFA and hands the pipeline three times the samples it expects: the
|
||||
`cpp == 3` branch is the work, and it is the only decode work.
|
||||
|
||||
The composite therefore enters the pipeline as a non-CFA, *linear* source —
|
||||
`from_rgba8`'s sibling with `non_linear = false` and the colour matrix carried
|
||||
from the DNG — and is developed as any RAW is. The writer is the example's
|
||||
IFD, grown up: tiled rather than one strip (FR-MRG-11 encodes per chunk), and
|
||||
carrying the first source's EXIF in a sub-IFD as `dr-export` already does.
|
||||
|
||||
## 9. Interaction
|
||||
|
||||
|
||||
Reference in New Issue
Block a user