Add new comment

LibRaw 0.18 released

LibRaw 0.18 released and available on download page and in Github repository.

Changes (relative to 0.17)

Licensing changes:

  • there is no 'LibRaw Software License 27032010' licensing anymore (and all signed agreements have expired)
  • LibRaw now dual-licensed: LGPL 2.1 or CDDL 1.0
Camera support (+87):
  • Apple: iPad Pro, iPhone SE, iPhone 6s, iPhone 6 plus, iPhone 7, iPhone 7 plus
  • BlackMagic Micro Cinema Camera, URSA, URSA Mini
  • Canon PowerShot G5 X, PowerShot G7 X Mark II, PowerShot G9 X, IXUS 160 (CHDK hack), EOS 5D Mark IV, EOS 80D, EOS 1300D, EOS M10, EOS M5, EOS-1D X Mark II
  • Casio EX-ZR4000/5000
  • DXO One,
  • FujiFilm X-Pro2, X70, X-E2S, X-T2
  • Gione E7
  • Google Pixel,Pixel XL
  • Hasselblad X1D, True Zoom
  • HTC MyTouch 4G, One (A9), One (M9), 10
  • Huawei P9
  • Leica M (Typ 262), M-D (Typ 262), S (Typ 007), SL (Typ 601), X-U (Typ 113), TL
  • LG G3, G4
  • Meizy MX4
  • Nikon D5, D500, D3400
  • Olympus E-PL8, E-M10 Mark II, Pen F, SH-3, E-M1-II
  • Panasonic DMC-G8/80/81/85, DMC-GX80/85, DMC-TZ80/81/85/ZS60, DMC-TZ100/101/ZS100,DMC-LX9/10/15, FZ2000/FZ2500
  • Pentax K-1, K-3 II, K-70
  • PhaseOne IQ3 100MP
  • RaspberryPi Camera, Camera V2
  • Ricoh GR II
  • Samsung Galaxy S7, S7 Edge
  • Sigma sd Quattro
  • Sony A7S II, ILCA-68 (A68),ILCE-6300,DSC-RX1R II,DSC-RX10III, DSC-RX100V,ILCA-99M2 (A99-II), a6500, IMX214, IMX219, IMX230, IMX298-mipi 16mp, IMX219-mipi 8mp, Xperia L
  • PtGrey GRAS-50S5C
  • Xiaomi MI3, RedMi Note3 Pro
Floating point DNG support:
  • new data fields:
    imgdata.rawdata.float_image - bayer float data
    imgdata.rawdata.float3_image - 3-component float data
    imgdata.rawdata.float4_image - 4-component float data
    imgdata.color.fmaximum - float data maximum (calculated from real data, rounded to 1.0 if below 1.0)
  • new raw processing flag
    LIBRAW_PROCESSING_CONVERTFLOAT_TO_INT - converts float data to 16-bit integer immediately after decoding with default parameters
  • new API Calls:
    int LibRaw::is_floating_point() returns non-zero if RAW file contains floating point data
    int LibRaw::have_fpdata() returns non-zero if rawdata.float*_image is not null (so FP data has been unpacked but not converted to integrer, see below).
    LibRaw::convertFloatToInt(float dmin=4096.f, float dmax=32767.f, float dtarget = 16383.f) converts float/float3/float4_image to raw_image/color3/color4_image with or without scaling:
    - if both real data maximum and metadata maximum are within the range ( >= dmin && - if data is out of the range given above, values are scaled so real data maximum becomes dtarget
    - if data was rescaled (normalized), scale multiplier is stored in imgdata.color.fnorm
  • LibRaw can be built with Adobe DNG SDK support to decode exotic DNG formats (e.g. 8 bit). See README.DNGSDK.txt for details
  • New API calls
    unsigned LibRaw::capabilities and C-API libraw_capabilities() allows developers to determine LibRaw compile flags at runtime.
    Returns ORed bit fields:
    LIBRAW_CAPS_RAWSPEED - LibRaw was compiled with RawSpeed Support
    LIBRAW_CAPS_DNGSDK - LibRaw was compiled with Adobe DNG SDK
    LIBRAW_CAPS_DEMOSAICSGPL2, LIBRAW_CAPS_DEMOSAICSGPL3 - LibRaw was compiled with demosaic packs (GPL2/GPL3)
  • More metadata parsed:
    • White balance coefficients stored in the raw file are extracted into:
      int imgdata.color.WBCoeffs[256][4] - array indexed by EXIF lightsource type for example, WBCoeffs[21][..] contains coefficients for D65 lightsource
      float imgdata.color.WBCT_Coeffs[64][5] contains white balance data specified for given color temperature: WBCT_Coeffs[i][0] contains temperature value, and [1]..[4] are WB coefficients.
    • DNG analog balance, per-channel black/white level, and forward matrix
    • vendor specific metadata stored in vendor-specific data structures
  • new C-API calls:
    void libraw_set_user_mul(libraw_data_t *lr,int index, float val);
    void libraw_set_ca_correction(libraw_data_t *lr,int ca_correc, float ca_red, float ca_blue);
    void libraw_set_cfalinenoise(libraw_data_t *lr,int cfaline, float linenoise);
    void libraw_set_wf_debanding(libraw_data_t *lr, int wf_debanding, float wfd0, float wfd1, float wfd2, float wfd3);
    void libraw_set_interpolation_passes(libraw_data_t *lr,int passes);
  • Existing API changes:
    imgdata.params fields (all very specific purpose): sony_arw2_options, sraw_ycc, and params.x3f_flags replaced with single bit-field raw_processing_options See LIBRAW_PROCESSING_* bits in documentation.
  • zlib library is optional
    Use -DUSE_ZLIB to compile with zlib (to provide deflate DNG support)
  • libjpeg version: jpeg_mem_src() is mandatory, so use libjpeg-turbo or libjpeg 8+
  • Fixes in vng_intepolate to make modern compilers happy
  • Fixed bug in Sony SR2 files black level
  • DNG files with BlackLevel both in vendor makernotes and BlackLevel: BlackLevel tag always takes precedence
  • strlen replaced with strnlen in most cases, added local version of strnlen
  • ChannelBlackLevel added to canon makernotes
  • unpack_thumb() data size/offset check against file size