mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-14 06:22:24 +00:00
* craft-raw: the file-format layer of camera raw files, with DNG and CRW A new crate for #587 and #778: bytes in, the sensor data out as a neutral RawImage (samples, CFA, levels, active area, crop, orientation, colour tags, opcode lists, profile tables), and back for DNG. One Cargo feature per format: dng (read and write), jxl (JPEG XL DNG), crw (through craft-crw). The base is LightCraft's crates/raw at 5ff567a4: dng, dngwrite, tiffraw, unpack, ljpeg, jxl, semantic, preview, the parsing half of opcodes, profile and gaintable, the model and probe. Demosaicing and everything after it stay with the develop pipeline. Ported from PhotoCraft's and FilmCraft's DNG readers, each with a test: the default crop's per-tag defaults, an unusable crop falling back to the active area, non-finite white levels, the white default of a linearized image, the AsShotWhiteXY range, 8-bit-only lossy JPEG, lossy tiles that must cover their part of the image, and the CinemaDNG frame tags. * craft-raw: Hasselblad 3FR and FFF (feature hasselblad) RawFormat::CfaTiff decodes: the DNG-layout reader plus what these files add. Uncompressed data or Hasselblad's lossless JPEG (selection value 8), RGGB when no CFAPattern is stated, an FFF's colour matrix from the 3FR header it embeds, and the 8-bit RGB preview handed on as a baseline TIFF. Moved from LightCraft's vendor/hasselblad.rs at 5ff567a4 with its tests. Ported from PhotoCraft's reader: four BlackLevel values without a BlackLevelRepeatDim are one per CFA site in a file that is not a DNG. * craft-raw: Minolta MRW, Epson ERF, Mamiya MEF and Kodak DCS520C Four formats only LightCraft decodes, one feature each (mrw, erf, mef, kodak), moved from its vendor modules at 5ff567a4 with their tests; the MRW block container comes from lightcraft-meta. src/shared.rs holds the level helpers the maker decoders share. ERF and MEF state no white balance: the estimate LightCraft made from the preview is develop-side work, so wb_multipliers is None for them here. * craft-raw: shared scan budget for tagged previews, tile-sized lossy JPEG budget, bound on Deflate tile padding Ported from storytold/lightcraft#3695. Candidate preview ranges are deduplicated and charged to one byte budget and one header-walk budget; a lossy JPEG decoded for a tile may hold no more samples than the tile rounded up to whole MCUs (and never more than Limits::max_lossy_tile_samples); a Deflate chunk whose nominal size is mostly padding outside the image is refused before it is inflated. * craft-raw: lossless JPEG sample bound per referenced byte; previews larger than the file are passed over Ported from storytold/lightcraft#3910 (the parts whose code is in craft-raw today). check_image refuses a lossless JPEG image that declares more than 32 samples per referenced byte, counted once per chunk that points at the bytes so identical tiles stored once still decode. The Hasselblad RGB preview search passes over an image whose pixel bytes exceed the file and still takes a smaller complete one. * craft-raw: test for the Deflate padding bound * craft-raw: Pentax PEF and Samsung SRW Moved from LightCraft crates/raw (vendor/pef.rs, vendor/srw.rs) at 5ff567a4. The Huffman difference decoder and bit reader that PEF shares with the Nikon, Panasonic and Sony codings become the huffman module. * craft-raw: Canon CR2, with sRAW and mRAW Moved from LightCraft crates/raw (vendor/cr2.rs, vendor/cr2/sraw.rs) at 5ff567a4. The white-balance presets a CR2 lists come back as data in ColorData::kelvin_presets (the ordering from LightCraft's kelvin_presets.rs; the temperature and tint arithmetic stays with the developer). * craft-raw: an sRAW preview larger than the file is refused before its buffer is reserved Ported from storytold/lightcraft#3910 (cr2::sraw::read_preview). * WIP craft-raw: Nikon NEF/NRW (does not compile yet: limits threading, develop() calls in tests) * craft-raw: Nikon NEF/NRW, with PhotoCraft's maker-note compression routing and 12-bit D4 white level * craft-raw: Panasonic RW2 / RWL / RAW, every raw format * craft-raw: RW2 format 8 refuses strips stating fewer bits than samples Ported from storytold/lightcraft#3910. * craft-raw: RW2 format 8 refuses samples above the declared bit depth Ported from storytold/photocraft#11838. * craft-raw: the RW2 format 8 robustness seed carries a valid stream Its random payload decoded only while out-of-depth samples were clamped; mutations now start from a file that decodes. * craft-raw: Fujifilm RAF, uncompressed and compressed, with lens corrections * craft-raw: compressed RAF stripes cap their capacity hint at the stripe's bits Ported from storytold/lightcraft#3910. * craft-raw: test RAF orientation and camera from the embedded JPEG's Exif * WIP craft-raw: Olympus ORF * craft-raw: RAF embedded preview, and its range from the header alone (bounded_preview) * craft-raw: Olympus ORF, the uncompressed layouts, with its maker-note preview and WB_GLevel * WIP craft-raw: Sony ARW * craft-raw: tiled lossless ARW decodes hold one group of tiles at a time Ported from storytold/lightcraft#3910. * craft-raw: dark 12-bit uncompressed ARWs keep Sony's 14-bit levels, and the DNG writer's depth holds the white level Ported from storytold/lightcraft#3429. * craft-raw: Sony ARW family, docs, seeds and the derivation records * WIP craft-raw: Canon CR3 * craft-raw: Canon CR3 (CRX) through craft-metadata's container, header plans, CR3 previews and the coverage records --------- Co-authored-by: radialmonster <radial@gmail.com> Co-authored-by: wnanbei <wnanbei@gmail.com> Co-authored-by: lownlyrider <lownlyrider@gmail.com>
115 lines
3.9 KiB
Plaintext
115 lines
3.9 KiB
Plaintext
# Estimated share of Lightroom raw photographers by camera maker, and the popular bodies of the last ~8 years inside each.
|
|
# Sources (2026-10-10): Nikkei 2025 mirrorless production via PhotoRumors (Canon 2.3 M, Sony 1.8 M, Nikon 0.86 M, Fujifilm 0.75 M
|
|
# units, i.e. ~36 / 29 / 14 / 12 % of CIPA's 6.31 M); BCN 2025 Japanese retail via PetaPixel (Sony 29.9 %, Canon 27.4 %, Nikon 15.1 %);
|
|
# camera makers named in this repo's user issues (325 issues: Sony 33, Nikon 31, Canon 26, phones 23, Fujifilm 9, Panasonic/Leica 8,
|
|
# OM/Olympus 6, Pentax/Ricoh 6, Samsung NX 5). Canon and Nikon get extra weight for their installed base of DSLRs.
|
|
# Rows "maker" give the maker bucket's weight (percent of photographers); rows "body" give a popular body inside a bucket.
|
|
# Inside a bucket, the listed bodies share 80 % equally and every other Adobe-listed model of the bucket's makers shares 20 %.
|
|
kind bucket makers_or_camera weight
|
|
maker Canon Canon 33
|
|
maker Sony Sony 27
|
|
maker Nikon Nikon 16
|
|
maker Fujifilm Fujifilm 10
|
|
maker Panasonic Panasonic 4
|
|
maker OM / Olympus Olympus,OM Digital Solutions 3
|
|
maker Phones Apple,Google,Samsung,Xiaomi,Huawei,Oppo,OnePlus,LG,Motorola,Nokia 3
|
|
maker Pentax / Ricoh Pentax,Ricoh 1.5
|
|
maker Leica Leica 1
|
|
maker DJI DJI 1
|
|
maker Medium format and others Hasselblad,Phase One,Leaf,Mamiya,Sigma,Kodak,Konica Minolta,Epson,Casio,GoPro,Insta360,Zeiss,Pixii,Light,Skydio,Parrot,Yuneec,Contax,DxO 0.5
|
|
body Canon EOS R6 Mark II 1
|
|
body Canon EOS R5 1
|
|
body Canon EOS R6 1
|
|
body Canon EOS R7 1
|
|
body Canon EOS R8 1
|
|
body Canon EOS R10 1
|
|
body Canon EOS R50 1
|
|
body Canon EOS RP 1
|
|
body Canon EOS R (** see note) 1
|
|
body Canon EOS R5 Mark II 1
|
|
body Canon EOS R6 Mark III 1
|
|
body Canon EOS R3 1
|
|
body Canon EOS R100 1
|
|
body Canon EOS 90D 1
|
|
body Canon EOS M50 (EOS Kiss M) 1
|
|
body Canon EOS M50 Mark II 1
|
|
body Canon EOS M6 Mark II 1
|
|
body Canon EOS-5D Mark IV (** see note) 1
|
|
body Canon EOS 6D Mark II 1
|
|
body Canon EOS 80D 1
|
|
body Canon EOS 250D (EOS Rebel SL3, EOS 200D II, EOS Kiss X10) 1
|
|
body Canon EOS 1500D (EOS Rebel T7, EOS Kiss X90, EOS 2000D) 1
|
|
body Sony A7 IV (ILCE-7M4) 1
|
|
body Sony A7 III (ILCE-7M3) 1
|
|
body Sony A7R V (ILCE-7RM5) 1
|
|
body Sony A7R IV (ILCE-7RM4) 1
|
|
body Sony A7C (ILCE-7C) 1
|
|
body Sony A7C II (ILCE-7CM2) 1
|
|
body Sony A7CR (ILCE-7CR) 1
|
|
body Sony A6400 (ILCE-6400) 1
|
|
body Sony A6700 (ILCE-6700) 1
|
|
body Sony A6600 (ILCE-6600) 1
|
|
body Sony A6100 (ILCE-6100) 1
|
|
body Sony Alpha 1 (ILCE-1)* 1
|
|
body Sony A9 III (ILCE-9M3) 1
|
|
body Sony ZV-E10 1
|
|
body Sony A7s III (ILCE-7SM3) 1
|
|
body Sony RX100 VII (DSC-RX100M7) 1
|
|
body Nikon Z 6 II 1
|
|
body Nikon Z 6 III 1
|
|
body Nikon Z 8 1
|
|
body Nikon Z 9 (*See note) 1
|
|
body Nikon Z f 1
|
|
body Nikon Z 5 1
|
|
body Nikon Z 50 1
|
|
body Nikon Z 50 II 1
|
|
body Nikon Z fc 1
|
|
body Nikon Z 7 II 1
|
|
body Nikon D850 1
|
|
body Nikon D750 1
|
|
body Nikon D7500 1
|
|
body Nikon D780 1
|
|
body Fujifilm X-T5 1
|
|
body Fujifilm X-T4** 1
|
|
body Fujifilm X-S20 1
|
|
body Fujifilm X-S10 1
|
|
body Fujifilm X-H2S 1
|
|
body Fujifilm X-H2 1
|
|
body Fujifilm X100V** 1
|
|
body Fujifilm X100VI 1
|
|
body Fujifilm X-T30 II 1
|
|
body Fujifilm X-E4 1
|
|
body Fujifilm X-T50 1
|
|
body Fujifilm GFX 100S 1
|
|
body Fujifilm X-M5 1
|
|
body Panasonic LUMIX DC-S5 1
|
|
body Panasonic LUMIX DC-S5M2 1
|
|
body Panasonic LUMIX DC-GH6 1
|
|
body Panasonic LUMIX DC-GH5M2 1
|
|
body Panasonic LUMIX DCG9M2 1
|
|
body Panasonic LUMIX DC-G9 1
|
|
body Panasonic LUMIX DC-S1 1
|
|
body Panasonic LUMIX DC-GX9 (DC-GX7MK3) 1
|
|
body Panasonic LUMIX DMC-G8 (DMC-G80, DMC-G81, DMC-G85) 1
|
|
body Panasonic LUMIX DC-LX100 II 1
|
|
body OM / Olympus OM-D E-M1 Mark III 1
|
|
body OM / Olympus OM-D E-M1 Mark II 1
|
|
body OM / Olympus OM-D E-M10 Mark IV 1
|
|
body OM / Olympus OM-D E-M5 Mark III 1
|
|
body OM / Olympus PEN E-P7 1
|
|
body OM / Olympus Stylus Tough TG-6 1
|
|
body OM / Olympus OM System OM-1 1
|
|
body OM / Olympus OM System OM-1 MARK II 1
|
|
body OM / Olympus OM System OM-5 1
|
|
body Pentax / Ricoh K-1 II (* see note) 1
|
|
body Pentax / Ricoh K-3 Mark III 1
|
|
body Pentax / Ricoh KF 1
|
|
body Pentax / Ricoh K-70 1
|
|
body Pentax / Ricoh GR III 1
|
|
body Pentax / Ricoh GR IIIx 1
|
|
body Leica Q3 1
|
|
body Leica Q2 1
|
|
body Leica M11 1
|
|
body Leica SL2 1
|
|
body Leica M10 1
|