You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Camera RAW support is at 0% (docs/codec-parity.md). CinemaDNG is the one widely used cinema RAW format with a public specification, so it can be implemented clean-room in pure Rust without any vendor SDK. Related: #383.
Raw CFA data: uncompressed (8–16-bit, packed and unpacked) and lossless JPEG (T.81 process 14, predictors 1–7, tiles and strips).
Processing to RGB following the DNG pipeline: linearization table, black/white levels (incl. per-CFA black), DefaultCrop, AsShotNeutral white balance, demosaic, ColorMatrix/ForwardMatrix to a linear working space, and an output transform consistent with FilmCraft's colour pipeline.
CinemaDNG sequences: a folder of numbered .dng frames imported as one clip (reusing image-sequence import), frame rate from the CinemaDNG FrameRate tag when present.
Tests on synthetic DNGs written by a test-only spec-based writer (no camera files committed), plus hostile-input tests.
Out of scope for the first PR: lossy DNG (JPEG/JPEG XL), MXF-wrapped CinemaDNG, opcode lists, a Raw/Color settings UI.
Follow-up work on the decoder internals (building on #1068), which I'm doing now in a separate PR: ProcessOptions (raw development settings: white balance as shot or temperature/tint, exposure, highlights, demosaic quality, output space, target size for a reduced-resolution path), lossy JPEG DNG (Compression 34892), DNG opcode lists (OpcodeList1/2/3, DNG 1.7 chapter 7), and faster CinemaDNG decode/processing. JPEG XL DNG (52546) may follow as a separate draft PR behind an off-by-default feature, since it needs a new dependency (maintainer decision).
After each merge I'll merge main into the next branch and push, so nothing needs resolving on your side. #1068 also overlaps #837 (OpenEXR) in sequence.rs / still.rs; same applies there.
Activity
vangel76 commentedon Oct 11, 2026
Follow-up work on the decoder internals (building on #1068), which I'm doing now in a separate PR:
ProcessOptions(raw development settings: white balance as shot or temperature/tint, exposure, highlights, demosaic quality, output space, target size for a reduced-resolution path), lossy JPEG DNG (Compression 34892), DNG opcode lists (OpcodeList1/2/3, DNG 1.7 chapter 7), and faster CinemaDNG decode/processing. JPEG XL DNG (52546) may follow as a separate draft PR behind an off-by-default feature, since it needs a new dependency (maintainer decision).storytold#1065: optional serde derives on the DNG raw settings
storytold#1065: faster DNG decode and development, reduced-resolution…
storytold#1065: tint sign of the DNG white balance follows the raw-co…
storytold#1065: DNG opcode lists (OpcodeList1/2/3)
storytold#1065: lossy JPEG DNG (Compression 34892)
storytold#1065: DNG README: CinemaDNG spec edition, MXF-wrapped Cinem…
storytold#1065: JPEG XL DNG behind an off-by-default `jxl` feature
vangel76 commentedon Oct 11, 2026
Merge order for the CinemaDNG series (each builds on the previous one, so each PR also shows the earlier commits until those land):
ProcessOptions(raw development settings), faster decode/develop incl. reduced-resolution development, DNG opcode lists, lossy (JPEG) DNGjxlcargo feature; adds a new dependency, so it needs your decisionAfter each merge I'll merge
maininto the next branch and push, so nothing needs resolving on your side. #1068 also overlaps #837 (OpenEXR) insequence.rs/still.rs; same applies there.#1065: clean-room DNG / CinemaDNG decoder crate
#1065: import DNG stills and CinemaDNG folders as one clip
Merge pull request #1068 from vangel76/feat-cinemadng
storytold#1065: DNG opcode lists are opt-in (ProcessOptions::apply_op…