mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-28 03:47:00 -06:00
* raw: decode Nikon compressed NEF (lossless + lossy) Nikon's default NEF (TIFF compression 34713) opened only as the embedded 8-bit JPEG preview. Decode the Huffman-coded strip: lossless and lossy type 1 / 2, 12 and 14 bit, with the seeds and curve of maker note 0x0096 in the maker note's byte order. "Lossy after split" files stay unsupported and keep the preview fallback. Clean-room: format facts from prose write-ups (Clévy, Claff, ExifTool tag names, T.81). The fixed Huffman tables are not in the files; they come from LightCraft's black-box analysis of CC0 raw.pixls.us samples (storytold/lightcraft#86, verified there on ~45 files from ~35 bodies). No decoder code is shared: nefc.rs is written against this crate's TIFF reader. Also read Nikon BlackLevel (0x003d) in 14-bit units for 12-bit data, as measured for LightCraft (D750 / D850 / Z 50). Refs #50. * raw: Nikon NEF without a BlackLevel tag is black-subtracted in camera A D3200 NEF's darkest samples are 0-4 (noise around zero): assume 0 without the "black level not recorded" warning when the Nikon maker note is present but has no 0x003d tag. * raw: trim Nikon's right-edge padding columns A D3200 NEF pads every row with 46 columns of 256 (exact in 97.5% of the rows, lossy-coding noise elsewhere) after its 6034 image columns; they developed as a pink stripe on the right. Trailing columns (at most 128) that hold the last column's value in at least 90% of their rows, when that value is dark, are left out of the active area and crop. A white- clipped edge is never trimmed.