- Replace `formats/dng.rs` + `formats/dng_export.rs` with `gamut-dng` (`DngDecoder`/`DecodedDng`/`DngEncoder`); bridge `gamut_dng::RawImage`/`CfaLayout`/`CameraProfile` to `rawshift_core::RawImage`/`ImageMetadata`. - Bridge-surface gaps tracked upstream in justin13888/gamut#253 (per-cell black levels, LinearizationTable access, OpcodeList1/2/3 blobs, DNG 1.7 JXL tiles, public lossless-JPEG) — the affected slices wait on it. - Replace `codecs/ljpeg.rs` on the DNG path with gamut-dng lossless-JPEG once public; keep local copy only while CR2/NEF still need it, then delete. - `DngExportConfig` → `DngEncodeConfig` on the gamut-dng encoder. - Validate against existing DNG fixtures; feed results to justin13888/gamut#174 (ref #109/#163). - Depends on: TIFF-parser migration.
formats/dng.rs+formats/dng_export.rswithgamut-dng(DngDecoder/DecodedDng/DngEncoder); bridgegamut_dng::RawImage/CfaLayout/CameraProfiletorawshift_core::RawImage/ImageMetadata.codecs/ljpeg.rson the DNG path with gamut-dng lossless-JPEG once public; keep local copy only while CR2/NEF still need it, then delete.DngExportConfig→DngEncodeConfigon the gamut-dng encoder.