mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-25 10:37:11 -06:00
Split out of #240 without the compressed decoder (crates/raw/src/vendor/orfc.rs is not part of this change; compressed ORF stays preview-only). - The layout is read from Exif CFAPattern (0xa302, repeat counts in either byte order) when it describes a 2x2 Bayer cell. BGGR and GBRG were not reachable before. - Without a usable tag the green diagonal is still found from the samples, now from totals of 32x32 blocks instead of single-pixel differences, so fine texture no longer outweighs a small red/blue difference. The old version indexed the samples directly; this one reads them with get(). - probe_info no longer unpacks 12-bit packed ORFs that state their layout (XZ-2: under 0.1 ms; it ran the same unpack as a decode before, which takes 11 ms). 16-bit files still read their samples to find the bit depth. Tests: stated layouts in both byte orders, unusable tags falling back to the samples, the texture case, hostile areas for the fallback, probe_info equal to decode; a corpus test comparing the E-1, E-400 and XZ-2 mosaics with their embedded JPEGs under every layout. No user-visible change yet for the bodies whose layout the old guess got wrong (E-M1 and E-620 are BGGR): they write compressed ORF. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>