LibRaw 202101 snapshot

LibRaw 202101 snapshot is just published in our Github repository. Changes are:

Camera format support

  • Lossy compressed CR3 files
  • Lossy compressed RAF files
  • uncompressed floating point DNG files (16-24-32 bit)
  • Deflate compressed striped DNG files
  • XMP and HEIF-preview extraction from CR3 files

Camera support

  • Apple iPhone 12 Max, iPhone 12 Max Pro
  • Canon EOS R5, EOS R6, EOS 850D, EOS-1D X Mark III (lossy compressed files)
  • FujiFilm X-S10
  • Hasselblad CFV II 50C
  • Leica M10-R, Q2 Monochrom, S3, SL2-S
  • Nikon Z 5, Z 6 II, Z 7 II
  • Olympus E-M10 Mark IV
  • Panasonic DC-G100 / G110, DC-S5
  • Sony ILCE-7C (A7C), ILCE-7SM3 (A7S III)
  • Zeiss ZX1
Plus multiple DNG-recording cameraphones/drones/etc.

Almost dropped camera support

Old/partially supported video/cinema cameras support is available only if LibRaw is compiled with USE_OLD_VIDEOCAMS defined (this #define is converted internally to LIBRAW_OLD_VIDEO_SUPPORT defined). This affects:
  • Arri cameras
  • Canon C500
  • RED Cine cameras
We plan to keep the support in LibRaw 0.21 (if compiled with define mentioned above) and completely drop the support after 0.21.
If you're using LibRaw to decode RED Cine files, see LibRaw*datastreams section below (in short: you'll need to use old fstream-based datastream under Windows).
Cinema DNG files are not affected by this change.

Compile/build changes

Old (0.19-compatibility) files (dcraw_common.cpp dcraw_fileio.cpp demosaic_packs.cpp) are removed from LibRaw repository.
Please switch to 'modern' multiple source files build.

API/ABI changes

Decoding parameters

imgdata.params is split into
imgdata.rawparams: parameters used for metadata/raw data decoding
imgdata.params: parameters used at postprocessing stage

imgdata.params.raw_processing options are split into two sub-options sets
imgdata.rawparams.options: raw processing flags, useful for normal operations
imgdata.rawparams.specials: special modes (e.g decoding only delta pixels from Sony ARW)

Old LIBRAW_PROCESSING_* flags are renamed to LIBRAW_RAWOPTIONS_* and LIBRAW_RAWSPECIAL* LIBRAW_PROCESSING_DP2Q_INTERPOLATE... flags are renamed to LIBRAW_RAWSPECIAL_NODP2Q_INTERPOLATE with inverted meaning (with the goal to have zero imgdata.rawparams.specials in normal use).

Other changes

  • New processing flag LIBRAW_RAWOPTIONS_PROVIDE_NONSTANDARD_WB
    If set (default is not), and when applicable, color.cam_mul[] and color.WB_Coeffs/WBCT_Coeffs will contain WB settings for a non-standard workflow.
    Right now only Sony DSC-F828 is affected: camera-recorded white balance can't be directly applied to raw data because WB is for RGB, while raw data is RGBE.
  • New processing flag: LIBRAW_RAWOPTIONS_CAMERAWB_FALLBACK_TO_DAYLIGHT
    If set (default is not), LibRaw::dcraw_process() will fallback to daylight WB (excluding some very specific cases like Canon D30). This is how LibRaw 0.19 (and older) works.
    If not set: LibRaw::dcraw_process() will fallback to calculated auto WB if camera WB is requested, but appropriate white balance was not found in metadata.
  • Removed LIBRAW_PROCESSING_SKIP_MAKERNOTES processing flag: with new Windows(-handle) datastreams metadata parsing performance is enough to not skip makernotes parsing.
  • new output parameter: imgdata.params.output_flags and new enum LibRaw_output_flags
    Right now the only flag is implemented: LIBRAW_OUTPUT_FLAGS_PPMMETA setting it will result into metadata written to PPM/PGM output file
  • LibRaw_*datastreams change and corresponding open_file() parameters change
    LibRaw_file_datastream (based on iostreams) is moved under #ifdef LIBRAW_USE_DEPRECATED_IOSTREAMS_DATASTREAM Standard datastreams are:
    LibRaw_bigfile_datastream (FILE* based) for POSIX systems
    LibRaw_bigfile_buffered_datastream - for use with Win32 syscalls
    API changes:
    if LIBRAW_USE_DEPRECATED_IOSTREAMS_DATASTREAM is NOT defined, than LibRaw::open_file() and similar calls drops the last INT64 max_buffered_sz parameter which defines automatic selection between iostreams and FILE* based datasteams.

    Note: LibRaw_bigfile_buffered_datastream does NOT implements make_jas_stream() call, so RED Cine file decoding is not possible with this datastream. Use deprecaded iostreams implementation instead.

    We plan to keep LIBRAW_USE_DEPRECATED_IOSTREAMS_DATASTREAM up to LibRaw 0.21 and drop in 0.22.

  • Fuji decoder: fuji_decode_loop/fuji_decode_strip parameters has changed; look into source code for details if you're implementing your own fuji_decode_loop() call in subclass to provide parallel fuji decoding.
  • Canon CR3 H265 (HEIF) preview limited support:
    - new format value: LIBRAW_THUMBNAIL_H265
    - this thumbnail is NOT extracted by LibRaw::make_mem_thumb() yet;
  • LibRaw::capabilities
    Two bits added:
    LIBRAW_CAPS_ZLIB if compiled with USE_ZLIB
    LIBRAW_CAPS_JPEG if compiled with USE_JPEG
  • samples/raw-identify.cpp sample: removed lot of extra output used only by development team
  • Windows datastreams: CreateFile2 is used if compiled for UWP.
  • doc/API-datastruct: clarified behavior with use_camera_wb=1 setting.
  • identify(): restored the differentiation between fsize and flen.
  • New compile-time LIBRAW_FORCE_OPENMP to skip compiler version check (if LibRaw user is absolutely sure that OpenMP is supported by compiler)

Comments

RawSpeed?

It seems that RawSpeed support is removed from this release?

Kuro

rawProcessor->imgdata.params

rawProcessor->imgdata.params.use_rawspeed = 1

Produces compile error. params.use_rawspeed is not found.

Kuro

samples/raw-identify.cpp

samples/raw-identify.cpp sample: removed lot of extra output used only by development team
I'm not sure this was a good change. It was great to be able to get more info about the files. Please add it back.