LibRaw Changelog

What's new in LibRaw 0.21.2

Dec 19, 2023
  • New compile-defined limit LIBRAW_MAX_PROFILE_SIZE_MB: limits allocation/read size for embedded color profile (default: 256Mb)
  • Embedded color profile allocation/read size: limited by input file size.
  • Multiple fixes (mostly inspired by oss-fuzz) to improve library stability and/or input checks.
  • raw-identify: use fallback if PATH_MAX not available
  • Disabled color conversion for Canon 16-bit thumbnails
  • docs/changelog: explained the case when no thumbnail is found in specific file
  • swapXX renamed to libraw_swapXX to avoid name conflict
  • better striped thumbnails handling

New in LibRaw 0.21.1 (Jan 5, 2023)

  • Fixed typo in Panasonic metadata parser that prevents correct data processing for some Panasonic cameras.

New in LibRaw 0.21.0 (Dec 19, 2022)

  • Camera format support:
  • Phase One/Leaf IIQ-S v2 support
  • Canon CR3 filmrolls/RawBurst
  • Canon CRM (movie) files
  • Tiled bit-packed (and 16-bit unpacked) DNGs
  • (non-standard) Deflate-compressed integer DNG files are allowed
  • Camera support:
  • Canon EOS R3, R7 and R10
  • Fujifilm X-H2S, X-T30 II
  • OM System OM-1
  • Leica M11
  • Sony A7-IV (ILCE-7M4)
  • DJI Mavic 3
  • Nikon Z9: standard compression formats only
  • Multiple (resultion) thumbnails support:
  • New imgdata.thumbs_list data item with data fields:
  • int thumbcount: thumbnail count
  • libraw_thumbnail_item_t thumblist[LIBRAW_THUMBNAIL_MAXCOUNT]: list of thumbnails
  • libraw_thumbnail_item_t fields:
  • enum LibRaw_internal_thumbnail_formats tformat: internal thumbnail format (this is not PPM/JPEG, but internal type related to thumbnail reading/unpacking method)
  • ushort twidth, theight: thumbnail image size.
  • ushort tflip: image rotation (see notes below)
  • unsigned tlength: on-disk data size (not uncompressed for compressed formats)
  • unsigned tmisc: bit depth and channel count: (color INT64 toffset: Thumbnail data offset in file
  • Notes:
  • Only TIFF-based and CR3 files are parsed for thumbnail list, other formats will have thumbcount = 1 (or 0 if no thumbnail found in file).
  • Thumbnail image size may be unknown (not recorded in metadata), in this case twidth and theight are zero. Usually small(er) thumbnails will always have twidth/theight filled, while largest one may have these fields set to zero.
  • Thumbnail rotation (tflip) is filled only for TIFF-based RAWs (if Orientation tag is not present in IFD, default zero value is used) For non-tiff images, tflip is initialized to 0xffff (not known...)
  • There is no code to select thumbnail based on some criteria (e.g. minimal resolution), it is left to user to implement such a criteria, if needed (see unpack_thumb_ex() call below)
  • If you want to get largest possible thumbnail: just use old unpack_thumb() call to get it.
  • new API call: LibRaw::unpack_thumb_ex(int i): Unpacks i-th thumbnail if it exists into imgdata.thumbnail structure i should be non-zero and less then imgdata.thumbs_list.thumbcount.
  • samples/simple_dcraw.cpp: new -E command line switch to extract all thumbnails from input file(s)
  • (Experimental) RawSpeed "version 3" (develop branch) support
  • Build with -DUSE_RAWSPEED3, see details in RawSpeed3/README.md
  • LibRaw::capabilities will set bit LIBRAW_CAPS_RAWSPEED3 if compiled w/ RawSpeed-v3 support
  • If file was processed (or tried to process) via RawSpeed-v3, these bits are rised in imgdata.process_warnings:
  • LIBRAW_WARN_RAWSPEED3_PROCESSED - processed via RawSpeed v3
  • LIBRAW_WARN_RAWSPEED3_PROBLEM - not processed (due to exception in RawSpeed library)
  • LIBRAW_WARN_RAWSPEED3_UNSUPPORTED - unsupported file
  • LIBRAW_WARN_RAWSPEED3_NOTLISTED - file not listed in cameras.xml data
  • RawSpeed-v3 support is controlled via libraw_decoder_info.t->flags (LIBRAW_DECODER_TRYRAWSPEED3 bit). The bit is set for:
  • lossless jpeg decoder
  • Canon sRAW decoder
  • lossless compressed and packed-compressed DNG decoders
  • Pentax decoder
  • Nikon (compressed) decoder
  • Phase One Compressed and Hasselblad/Compressed decoders
  • bitpacked decoder
  • Panasonic (old 12-bit compression) decoder
  • Olympus decoder
  • Sony ARW (v1 and v2) decoders
  • Samsung (version 1) decoder
  • (Experimental) Fine control of RawSpeed version selection/use
  • To enable, build LibRaw with -DUSE_RAWSPEED_BITS
  • LibRaw::capabilities will set bit LIBRAW_CAPS_RAWSPEED_BITS if compiled with this flag.
  • If enabled: imgdata.rawparams.use_rawspeed becomes bit-field (instead of 0/1 off/on) with bits:
  • LIBRAW_RAWSPEEDV1_USE - use RawSpeed Version 1 (if compiled with)
  • LIBRAW_RAWSPEEDV1_FAILONUNKNOWN - do not process unknown files (not listed in RawSpeed v1 camera definitions file)
  • LIBRAW_RAWSPEEDV1_IGNOREERRORS - ignore mirror decoding errors (out of range data,etc)
  • LIBRAW_RAWSPEEDV3_USE - Use RawSpeed Version 3 (if compiled with)
  • LIBRAW_RAWSPEEDV3_FAILONUNKNOWN - do not process unknown files
  • LIBRAW_RAWSPEEDV3_IGNOREERRORS - ignore minor decoding errors
  • Misc changes/improvements:
  • New compile time define LIBRAW_OWN_SWAB to use on platforms without swab() in C/C++ runtime
  • New imgdata.rawparams.options bit: LIBRAW_RAWOPTIONS_CANON_IGNORE_MAKERNOTES_ROTATION
  • If set: image orientation is set based on TIFF/IFD0:Orientation tag, makernotes orientation data is ignored
  • Nikon makernotes: read NEFCompression tag for HE/HE* files
  • Nikon orientation tag: more fixed offsets for known cameras
  • Adobe DNG SDK 1.6 support (meaning, just an additional patch for GPR SDK)
  • Removed LibRaw::memerr(), memory allocation failures are already handled in LibRaw_memmgr::*alloc w/ exception thrown
  • Removed memory error callback, out-of-memory error should be handled via returned error code check, all related parameters (e.g. LibRaw constructor option to not set such callback) is also removed
  • imgdata.params.adjust_maximum_thr is settable via C-API libraw_set_adjust_maximum_thr(..)
  • New rawoptions/processing flags for DNG processing if compiled with Adobe DNG SDK:
  • LIBRAW_RAWOPTIONS_DNG_STAGE2_IFPRESENT,LIBRAW_RAWOPTIONS_DNG_STAGE3_IFPRESENT If these flag(s) are set: Stage2/Stage3 processing will be performed only if OpcodeList2/OpcodeList3 tags are present in the input DNG file Old (hard) flags (LIBRAW_RAWOPTIONS_DNG_STAGE2 and LIBRAW_RAWOPTIONS_DNG_STAGE3) are not removed and will force Stage2/3 processing if set (regardless of input file tags)
  • New imgdata.rawparams.options bit: LIBRAW_RAWOPTIONS_DNG_ADD_MASKS If set: DNG Transparency Masks will be extracted (if selected via shot_select)
  • New decoder flag: LIBRAW_DECODER_UNSUPPORTED_FORMAT
  • Bugs fixed:
  • Fixed possible out-of-buffer read in Nikon orientation tag parser
  • Windows datastream: fixed logic errors (not showing up in real life)
  • Out-of-range read-only array access in postprocessing if output_color is set to 0 (raw color)
  • Minolta Z2 was not recognized correctly on 32-bit systems
  • Fixed possible buffer overflow in Kodak C330 decoder
  • dcraw_process(): check for buffer allocation results to avoid NULL deref
  • Multiple bugfixes inspired by oss-fuzz project

New in LibRaw 0.20.2 (Oct 15, 2020)

  • Reverted 0.20.1 change:
  • const buffer for open_buffer() and open_bayer() calls
  • Because of 0.20.0 ABI break.

New in LibRaw 0.20.1 (Oct 14, 2020)

  • Improvements:
  • exif callback is called on EXIF GPS and EXIF Interop IFDs
  • open_bayer call documented
  • Canon (ColorDatsSubver==32): parse Specular White instead of hardcoded value
  • Fixes for normal files processing:
  • Olympus XZ-1: do not provide linear_max (it is wrong in metadata)
  • Nikon Z cameras: added space in camera list
  • raw-identify: fixed wb-preset print
  • Pentax Optio 33WR: maker index was incorrect
  • dcraw_emu: corrected help line for -6 option.
  • raw-identify: corrected range check for color matrices print
  • use_camera_matrix option: fixed a bug introduced when making compiler more happy.
  • Fixes for damaged/special crafted files processing:
  • Fix for truncated CR3 files parsing
  • DNG metadata merger: all color loops are limited to MIN(4,colors)
  • Check for marings: should be less than raw image size
  • Check for xmpdata present in Samsung Lens ID assignment
  • Check for column range in leaf_hdr decoder
  • Additional checks in Hasselblad model parser
  • Fuji rotate: better limits check
  • DNG files: limit tiff_samples
  • Not fixes, but makes ASAN/compilers/etc happy:
  • corrected GPS EXIF output
  • const buffer for open_buffer() and open_bayer() calls
  • Camera Format support:
  • Canon CR3
  • GoPro (via GPR SDK)
  • Panasonic 14-bit
  • Fujifilm compressed/16bit
  • Rapsberry Pi RAW+JPEG format (if USE_6BY9RPI defined)
  • Foveon X3F support changed: it is supported only if USE_X3FTOOLS defined at build (see below for 'Imported code policy disclaimer')
  • Camera support (1133 total):
  • Canon: PowerShot G5 X Mark II, G7 X Mark III, SX70 HS, EOS R, EOS RP, EOS 90D, EOS 250D, EOS M6 Mark II, EOS M50, EOS M200, EOS 1DX Mark III (lossless files only)
  • DJI Mavic Air, Air2, Osmo Action
  • FujiFilm GFX 100, X-A7, X-Pro3, X100V, X-T4 (uncompressed and lossless compressed only), X-T200
  • GoPro Fusion, HERO5, HERO6, HERO7, HERO8
  • Hasselblad L1D-20c, X1D II 50C
  • Leica D-LUX7, Q-P, Q2, V-LUX5, C-Lux / CAM-DC25, SL2, M10 Monochrom
  • Nikon D780, Z50, P950
  • Olympus TG-6, E-M5 Mark III, E-PL10, E-M1 Mark III,
  • Panasonic DC-FZ1000 II, DC-G90, DC-S1, DC-S1R, DC-S1H, DC-TZ95
  • PhaseOne IQ4 150MP
  • Ricoh GR III
  • Sony A7R IV, A9 II, ILCE-6100, ILCE-6600, RX0 II, RX100 VII
  • Zenit M
  • also multiple smartphones (the tested ones are listed in LibRaw::cameraList)
  • Source code re-arranged
  • dcraw.c is not used in the generation and build processes
  • dcraw_common.cpp and libraw_cxx.cpp are split into multiple code chunks placed in separate subfolders (decoders/ for raw data decoders, metadata/ for metadata parsers, etc)
  • dcraw_common.cpp and libraw_cxx.cpp remain to preserve existing build environments (these files are now just a bunch of #include directives).
  • It is possible to build LibRaw (It may be useful to reduce library memory/code footprint.)
  • without postprocessing functions (dcraw_process() and called function)
  • without postprocessing and LibRaw::raw2image() call (and called function).
  • See Makefile.devel.nopp and Makefile.devel.noppr2i for the list of source files needed to build reduced/stripped library.
  • Normalized make/model:
  • There is a huge number of identical cameras sold under different names, depending on the market (e.g. multiple Panasonic or Canon models) and even some identical cameras sold under different brands
  • (Panasonic -> Leica, Sony -> Hasselblad).
  • To reduce clutter, a normalization mechanism has been implemented in LibRaw:
  • In imgdata.idata:
  • char normalized_make[64]; - primary vendor name (e.g. Panasonic for Leica re-branded cameras)
  • char normalized_model[64]; - primary camera model name
  • unsigned maker_index; - primary vendor name in indexed form (enum LibRaw_cameramaker_index, LIBRAW_CAMERAMAKER_* constant).
  • These fields are always filled upon LibRaw::open_file()/open_buffer() calls.
  • const char* LibRaw::cameramakeridx2maker(int index): converts maker_index to normalized_make.
  • We recommend that you use these normalized names in a variety of data tables (color profiles, etc.) to reduce the number of duplicate entries.
  • New vendor index values will be added strictly to the end of the LibRaw_cameramaker_index table, ensuring that the numbers assigned to vendors that are already known to LibRaw will not change.
  • DNG frame selection (and other changes)
  • DNG frames selection code re-worked:
  • by default all frames w/ the NewSubfileType tag equal to 0 (high-res image) are added to the list of available images (selection performed via imgdata.params.shot_select field, as usual)
  • the special case for Fuju SuperCCD (SamplesPerPixel == 2) works as before: shot_select=1 will extract second sub-image.
  • Additional flags to imgdata.params.raw_processing_options:
  • LIBRAW_PROCESSING_DNG_ADD_ENHANCED - will add Enhanced DNG frame (NewSubfileType == 16) to the list of available frames
  • LIBRAW_PROCESSING_DNG_ADD_PREVIEWS - will add previews (NewSubfileType == 1) to the list.
  • By default, DNG frames are not reordered and are available in same order as in DNG (LibRaw traverses IFD/Sub-IFD trees in deep-first order). To prioritize the largest image, set LIBRAW_PROCESSING_DNG_PREFER_LARGEST_IMAGE bit in imgdata.params.raw_processing_options.
  • DNG Stage2/Stage3 processing via DNG SDK (request via flags in raw_processing_options)
  • Imported code policy disclaimer
  • We've changed the policy regarding 3rd party code imported into LibRaw:
  • We (like other authors of open-source RAW parsers) gladly import support code for various RAW formats from other projects (if the license allows it).
  • This is done to expand camera support.
  • Unfortunately, not all imported code can tolerate truncated or otherwise damaged raw files, as well as arbitrary conditions or arbitrary data; not all authors handle rejecting unexpected input well.
  • LibRaw is now widely used in various projects, including ImageMagick, which, in turn, is often used on web sites to process any input images, including arbitrary data from unknown users. This opens up wide possibilities for exploiting the various vulnerabilities present in the code borrowed from other projects into LibRaw. In order to avoid such security risks, - the borrowed code will no longer compile by default.
  • We are not able to support it in general case, and the authors refuse to add code to reject unexpected input.
  • Thus, if you use some kind of camera for which the support is disabled by default, you need to recompile LibRaw for your specific case.
  • Formats currently affected:
  • X3F (Foveon) file format.
  • Code is imported from Kalpanika X3F tools: https://github.com/Kalpanika/x3f
  • To turn the support on, define USE_X3FTOOLS
  • Rapsberry Pi RAW+JPEG format.
  • Code is imported from https://github.com/6by9/dcraw/
  • To turn the support on, define USE_6BY9RPI
  • Format support is indicated via LibRaw::capabilities() call with flags:
  • LIBRAW_CAPS_X3FTOOLS - Foveon support
  • LIBRAW_CAPS_RPI6BY9 - RPi RAW+JPEG support
  • GoPro .gpr format support
  • GoPro format supported via open-source GPR SDK See README.GoPro.txt for details.
  • Windows support/Windows unicode (wchar_t*) filenames support
  • (old) LibRaw's WIN32 external define split into 3 defines to fine tune compiler/api compatibility:
  • LIBRAW_WIN32_DLLDEFS - use to compile DLLs (__dllimport/__dllexport attributes)
  • LIBRAW_WIN32_UNICODEPATHS - indicates that runtime has calls/datatypes for wchar_t filenames
  • LIBRAW_WIN32_CALLS - use Win32 calls where appropriative (binary mode for files, LibRaw_windows_datastream, _snprintf instead of snprintf, etc).
  • If the (old) WIN32 macro is defined at compile time, all three new defines are defined in libraw.h
  • If not, these defines are defined based on compiler version/libc++ defines
  • LibRaw::open_file(wchar_t*) is always compiled in under Windows, but if LIBRAW_WIN32_UNICODEPATHS (see above) is not defined, this call will return LIBRAW_NOT_IMPLEMENTED.
  • Use (LibRaw::capabilities() & LIBRAW_CAPS_UNICODEPATHS) on runtime to check that this call was really implemented (or check for #ifdef LIBRAW_WIN32_UNICODEPATHS after #include <libraw.h>)
  • LibRaw*datastream simplified
  • tempbuffer_open, subfile_open are not used, so removed from LibRaw_abstract_datastream and derived classes.
  • jpeg_src() call implemented using ->read() call and own buffering (16k buffer).
  • buffering_off() call added. It should be used in derived classes to switch from buffered reads to unbuffered.
  • Minor/unsorted changes:
  • new flag LIBRAW_WARN_DNGSDK_PROCESSED to indicate decoder used
  • LibRaw::open() call, max_buf_size special meaning:
  • 1 => open using bigfile_datastream
  • 2 => open using file_datastream
  • New processing flag LIBRAW_PROCESSING_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_PROCESSING_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.
  • Add support for zlib during configure
  • Fixed multiple problems found by OSS-Fuzz
  • Lots of changes in imgdata.makernotes (hope someone will document it)
  • DNG SDK could be used (if enabled) to unpack multi-image DNG files.
  • DNG whitelevel calculated via BitsPerSample if not set via tags.
  • DNG: support for LinearDNG w/ BlackLevelRepeat.. pattern
  • Generic Arri camera format replaced w/ list of specific camera models in supported cameras list.
  • new samples/rawtextdump sample: allows one to dump (small selection) of RAW data in text format.
  • samples/raw-identify:
  • +M/-M params (same as in dcraw_emu)
  • L <file-w-filelist> parameter to get file list from a file
  • m paramerer to use mmap'ed IO.
  • t parameter for timing
  • samples/dcraw_emu: fixed +M handling
  • better support for Nikon Coolscan 16-bit NEF files.
  • Visual Studio project files: re-generated to .vcxproj (Visual Studio 2019), different intermediate folders for different sub-projects to allow 1-step rebuild.
  • imgdata.makernotes...cameraspecific: removed the vendor name prefix from variables.
  • Bayer images: ensure that even margins have the same COLOR() for both the active sensor area and the full sensor area.
  • raw processing flag bit LIBRAW_PROCESSING_CHECK_DNG_ILLUMINANT inverted and renamed to LIBRAW_PROCESSING_DONT_CHECK_DNG_ILLUMINANT. If not set, DNG illuminant will be checked.
  • New libraw_decoder_t flags:
  • LIBRAW_DECODER_FLATDATA - in-file data could be used as is (if byte order matches), e.g. via mmap()
  • LIBRAW_DECODER_FLAT_BG2_SWAPPED - special flag for Sony ARQ: indicates R-G-G2-B channel order in 4-color data
  • Camera-recorded image crop data is parsed into imgdata.sizes.raw_inset_crop structure:
  • ctop,cleft,cwidth,cheight - crop size.
  • aspect - LibRawImageAspects enum (3to2, 4to3, etc)
  • New define LIBRAW_NO_WINSOCK2 to not include winsock2.h on compile
  • Google changes cherry-picked (thanks to Jamie Pinheiro)
  • speedup: ppg interpolate: const loop invariant
  • Bugs fixed
  • Fixed several UBs found by OSS Fuzz
  • Fixed several problems found by other fuzzers.
  • Thumbnail size range check (CVE-2020-15503). Thanks to Jennifer Gehrke of Recurity Labs GmbH for problem report.
  • fixed possible overflows in canon and sigma makernotes parsers
  • fixed possible buffer overrun in crx (cr3) decoder
  • fixed memory leak in crx decoder (if compiled with LIBRAW_NO_CR3_MEMPOOL)
  • fixed possible overrun in Sony SRF and SR2 metadata parsers
  • Fixed typo in longitude (member of parsed GPS structure), update required for code that uses it.

New in LibRaw 0.20.0 (Jul 26, 2020)

  • Camera Format support:
  • Canon CR3
  • GoPro (via GPR SDK)
  • Panasonic 14-bit
  • Fujifilm compressed/16bit
  • Rapsberry Pi RAW+JPEG format (if USE_6BY9RPI defined)
  • Foveon X3F support changed: it is supported only if USE_X3FTOOLS defined at build (see below for 'Imported code policy disclaimer')
  • Camera support (1133 total):
  • Canon: PowerShot G5 X Mark II, G7 X Mark III, SX70 HS, EOS R, EOS RP, EOS 90D, EOS 250D, EOS M6 Mark II, EOS M50, EOS M200, EOS 1DX Mark III (lossless files only)
  • DJI Mavic Air, Air2, Osmo Action
  • FujiFilm GFX 100, X-A7, X-Pro3, X100V, X-T4 (uncompressed and lossless compressed only), X-T200
  • GoPro Fusion, HERO5, HERO6, HERO7, HERO8
  • Hasselblad L1D-20c, X1D II 50C
  • Leica D-LUX7, Q-P, Q2, V-LUX5, C-Lux / CAM-DC25, SL2, M10 Monochrom
  • Nikon D780, Z50, P950
  • Olympus TG-6, E-M5 Mark III, E-PL10, E-M1 Mark III,
  • Panasonic DC-FZ1000 II, DC-G90, DC-S1, DC-S1R, DC-S1H, DC-TZ95
  • PhaseOne IQ4 150MP
  • Ricoh GR III
  • Sony A7R IV, A9 II, ILCE-6100, ILCE-6600, RX0 II, RX100 VII
  • Zenit M
  • also multiple smartphones (the tested ones are listed in LibRaw::cameraList)
  • Source code re-arranged:
  • dcraw.c is not used in the generation and build processes
  • dcraw_common.cpp and libraw_cxx.cpp are split into multiple code chunks placed in separate subfolders (decoders/ for raw data decoders, metadata/ for metadata parsers, etc)
  • dcraw_common.cpp and libraw_cxx.cpp remain to preserve existing build environments (these files are now just a bunch of #include directives).
  • It is possible to build LibRaw (It may be useful to reduce library memory/code footprint.)
  • without postprocessing functions (dcraw_process() and called function)
  • without postprocessing and LibRaw::raw2image() call (and called function).
  • See Makefile.devel.nopp and Makefile.devel.noppr2i for the list of source files needed to build reduced/stripped library.
  • Normalized make/model:
  • There is a huge number of identical cameras sold under different names, depending on the market (e.g. multiple Panasonic or Canon models) and even some identical cameras sold under different brands
  • (Panasonic -> Leica, Sony -> Hasselblad).
  • To reduce clutter, a normalization mechanism has been implemented in LibRaw:
  • In imgdata.idata:
  • char normalized_make[64]; - primary vendor name (e.g. Panasonic for Leica re-branded cameras)
  • char normalized_model[64]; - primary camera model name
  • unsigned maker_index; - primary vendor name in indexed form (enum LibRaw_cameramaker_index, LIBRAW_CAMERAMAKER_* constant).
  • These fields are always filled upon LibRaw::open_file()/open_buffer() calls.
  • const char* LibRaw::cameramakeridx2maker(int index): converts maker_index to normalized_make.
  • We recommend that you use these normalized names in a variety of data tables (color profiles, etc.) to reduce the number of duplicate entries.
  • New vendor index values will be added strictly to the end of the LibRaw_cameramaker_index table, ensuring that the numbers assigned to vendors that are already known to LibRaw will not change.
  • DNG frame selection (and other changes)
  • DNG frames selection code re-worked:
  • by default all frames w/ the NewSubfileType tag equal to 0 (high-res image) are added to the list of available images (selection performed via imgdata.params.shot_select field, as usual)
  • the special case for Fuju SuperCCD (SamplesPerPixel == 2) works as before: shot_select=1 will extract second sub-image.
  • Additional flags to imgdata.params.raw_processing_options:
  • LIBRAW_PROCESSING_DNG_ADD_ENHANCED - will add Enhanced DNG frame (NewSubfileType == 16) to the list of available frames
  • LIBRAW_PROCESSING_DNG_ADD_PREVIEWS - will add previews (NewSubfileType == 1) to the list.
  • By default, DNG frames are not reordered and are available in same order as in DNG (LibRaw traverses IFD/Sub-IFD trees in deep-first order). To prioritize the largest image, set LIBRAW_PROCESSING_DNG_PREFER_LARGEST_IMAGE bit in imgdata.params.raw_processing_options.
  • Imported code policy disclaimer:
  • We've changed the policy regarding 3rd party code imported into LibRaw:
  • We (like other authors of open-source RAW parsers) gladly import support code for various RAW formats from other projects (if the license allows it).
  • This is done to expand camera support.
  • Unfortunately, not all imported code can tolerate truncated or otherwise damaged raw files, as well as arbitrary conditions or arbitrary data; not all authors handle rejecting unexpected input well.
  • LibRaw is now widely used in various projects, including ImageMagick, which, in turn, is often used on web sites to process any input images, including arbitrary data from unknown users. This opens up wide possibilities for exploiting the various vulnerabilities present in the code borrowed from other projects into LibRaw. In order to avoid such security risks, - the borrowed code will no longer compile by default.
  • We are not able to support it in general case, and the authors refuse to add code to reject unexpected input.
  • Thus, if you use some kind of camera for which the support is disabled by default, you need to recompile LibRaw for your specific case.
  • Formats currently affected:
  • X3F (Foveon) file format.
  • Code is imported from Kalpanika X3F tools: https://github.com/Kalpanika/x3f
  • To turn the support on, define USE_X3FTOOLS
  • Rapsberry Pi RAW+JPEG format.
  • Code is imported from https://github.com/6by9/dcraw/
  • To turn the support on, define USE_6BY9RPI
  • Format support is indicated via LibRaw::capabilities() call with flags:
  • LIBRAW_CAPS_X3FTOOLS - Foveon support
  • LIBRAW_CAPS_RPI6BY9 - RPi RAW+JPEG support
  • GoPro .gpr format support:
  • GoPro format supported via open-source GPR SDK See README.GoPro.txt for details.
  • Windows support/Windows unicode (wchar_t*) filenames support
  • (old) LibRaw's WIN32 external define split into 3 defines to fine tune compiler/api compatibility:
  • LIBRAW_WIN32_DLLDEFS - use to compile DLLs (__dllimport/__dllexport attributes)
  • LIBRAW_WIN32_UNICODEPATHS - indicates that runtime has calls/datatypes for wchar_t filenames
  • LIBRAW_WIN32_CALLS - use Win32 calls where appropriative (binary mode for files, LibRaw_windows_datastream, _snprintf instead of snprintf, etc).
  • If the (old) WIN32 macro is defined at compile time, all three new defines are defined in libraw.h
  • If not, these defines are defined based on compiler version/libc++ defines
  • LibRaw::open_file(wchar_t*) is always compiled in under Windows, but if LIBRAW_WIN32_UNICODEPATHS (see above) is not defined, this call will return LIBRAW_NOT_IMPLEMENTED.
  • Use (LibRaw::capabilities() & LIBRAW_CAPS_UNICODEPATHS) on runtime to check that this call was really implemented (or check for #ifdef LIBRAW_WIN32_UNICODEPATHS after #include <libraw.h>)
  • LibRaw*datastream simplified:
  • tempbuffer_open, subfile_open are not used, so removed from LibRaw_abstract_datastream and derived classes.
  • jpeg_src() call implemented using ->read() call and own buffering (16k buffer).
  • buffering_off() call added. It should be used in derived classes to switch from buffered reads to unbuffered.
  • Minor/unsorted changes:
  • new flag LIBRAW_WARN_DNGSDK_PROCESSED to indicate decoder used
  • LibRaw::open() call, max_buf_size special meaning:
  • 1 => open using bigfile_datastream
  • 2 => open using file_datastream
  • New processing flag LIBRAW_PROCESSING_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_PROCESSING_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.
  • Add support for zlib during configure
  • Fixed multiple problems found by OSS-Fuzz
  • Lots of changes in imgdata.makernotes (hope someone will document it)
  • DNG SDK could be used (if enabled) to unpack multi-image DNG files.
  • DNG whitelevel calculated via BitsPerSample if not set via tags.
  • DNG: support for LinearDNG w/ BlackLevelRepeat.. pattern
  • Generic Arri camera format replaced w/ list of specific camera models in supported cameras list.
  • new samples/rawtextdump sample: allows one to dump (small selection) of RAW data in text format.
  • samples/raw-identify:
  • +M/-M params (same as in dcraw_emu)
  • -L <file-w-filelist> parameter to get file list from a file
  • -m paramerer to use mmap'ed IO.
  • -t parameter for timing
  • samples/dcraw_emu: fixed +M handling
  • better support for Nikon Coolscan 16-bit NEF files.
  • Visual Studio project files: re-generated to .vcxproj (Visual Studio 2019), different intermediate folders for different sub-projects to allow 1-step rebuild.
  • imgdata.makernotes...cameraspecific: removed the vendor name prefix from variables.
  • Bayer images: ensure that even margins have the same COLOR() for both the active sensor area and the full sensor area.
  • raw processing flag bit LIBRAW_PROCESSING_CHECK_DNG_ILLUMINANT inverted and renamed to LIBRAW_PROCESSING_DONT_CHECK_DNG_ILLUMINANT. If not set, DNG illuminant will be checked.
  • New libraw_decoder_t flags:
  • LIBRAW_DECODER_FLATDATA - in-file data could be used as is (if byte order matches), e.g. via mmap()
  • LIBRAW_DECODER_FLAT_BG2_SWAPPED - special flag for Sony ARQ: indicates R-G-G2-B channel order in 4-color data
  • Camera-recorded image crop data is parsed into imgdata.sizes.raw_inset_crop structure:
  • ctop,cleft,cwidth,cheight - crop size.
  • aspect - LibRawImageAspects enum (3to2, 4to3, etc)
  • New define LIBRAW_NO_WINSOCK2 to not include winsock2.h on compile
  • Google changes cherry-picked (thanks to Jamie Pinheiro)
  • speedup: ppg interpolate: const loop invariant
  • Bugs fixed
  • Fixed several UBs found by OSS Fuzz
  • Fixed several problems found by other fuzzers.
  • Thumbnail size range check (CVE-2020-15503). Thanks to Jennifer Gehrke of Recurity Labs GmbH for problem report.
  • fixed possible overflows in canon and sigma makernotes parsers
  • fixed possible buffer overrun in crx (cr3) decoder
  • fixed memory leak in crx decoder (if compiled with LIBRAW_NO_CR3_MEMPOOL)
  • fixed possible overrun in Sony SRF and SR2 metadata parsers
  • Fixed typo in longitude (member of parsed GPS structure), update required for code that uses it.

New in LibRaw 0.19.5 (Aug 20, 2019)

  • WB coefficients check was too strong, weakened
  • Fixed possible buffer underrun in modern Samsung loader

New in LibRaw 0.19.4 (Aug 5, 2019)

  • CRW/metadata loop prevention code is rolled back due to ABI incompatibility. To enable, use -DLIBRAW_METADATA_LOOP_PREVENTION=1 compile flag for LibRaw and ALL APPS.
  • Fixed possible buffer underflow

New in LibRaw 0.19.3 (Jul 3, 2019)

  • Several fixes inspired by OSS-Fuzz
  • Note: ABI slightly changed, new variable added at end of class LibRaw Generally, all old code should run w/o recompile, but you're warned...

New in LibRaw 0.19.2 (Dec 24, 2018)

  • Fixed possible buffer overrun at Fuji makernotes parser
  • Fixed possible write to NULL pointer at raw2image/raw2image_ex calls.
  • Details:
  • Three different CVE numbers was assigned for single problem: CVE-2018-20363, CVE-2018-20364, CVE-2018-20365
  • The POCs exploits inconsistency in Sinar-4Shot files handling. LibRaw 0.19 does not support this files format, so it is not subject of exactly same problem
  • However, additional checks for bayer raw data presence are backported from LibRaw-master (development) branch.

New in LibRaw 0.19.1 (Nov 23, 2018)

  • Finally: got Sinar 4shot sample, works fine now
  • OpenMP critical sections for malloc/free; extra #ifdefs removed; bin/dcraw_dist could be built again using Makefile.devel
  • additional checks in parse_phase_one()
  • more checks on file offsets/tag len in parse_minolta
  • more checks in parse_ciff
  • Mempool check reworked
  • Old Leaf (16bit/3color/TIFF) support
  • Fix cameraWB->autoWB fallback
  • Polaroid x530 channel swap; get metadata pointer for Foveon files
  • Fixed Secunia Advisory SA86384
  • possible infinite loop in unpacked_load_raw()
  • possible infinite loop in parse_rollei()
  • possible infinite loop in parse_sinar_ia()
  • Credits: Laurent Delosieres, Secunia Research at Flexera

New in LibRaw 0.19.0 (Jun 29, 2018)

  • Changed wrong fix for Canon D30 white balance
  • Fixed possible stack overrun while reading zero-sized strings
  • Fixed possible integer overflow

New in LibRaw 0.18.12 (Jun 11, 2018)

  • Secunia Advisory SA83507, credits Kasper Leigh Haabb, Secunia Research at Flexera
  • parse_qt: possible integer overflow
  • reject broken/crafted NOKIARAW files
  • Backported 0.19-patch to recover read position if TIFF/EXIF tag is too long

New in LibRaw 0.19.0 Beta 6 (Jun 11, 2018)

  • Sony uncompressed/untiled DNGs: do not set bits-per-sample to 14 bit
  • Do not change tiff_bps for DNG files
  • Another possible stack overflow in kodak radc reader
  • Secunia Advisory SA83507, credits Kasper Leigh Haabb, Secunia Research at Flexera: parse_qt: possible integer overflow
  • reject broken/crafted NOKIARAW files

New in LibRaw 0.19.0 Beta 5 (May 10, 2018)

  • Put rogue printf's behind #ifdef DCRAW_VERBOSE
  • Exceptions was not caught in x3f_new_from_file resulting in x3f handle leak
  • packed_load_raw(): EOF check on each row
  • define LIBRAW_USE_CALLOC_INSTEAD_OF_MALLOC to use ::calloc instead of ::malloc in LibRaw_mem_mgr malloc calls; Note: realloc is not changed, so only partial fix
  • Fixed possible div by zero in EOS D30 WB data parse
  • U-suffix for filter-var manipulation consts
  • restored static specifier for utf2char() lost in previous bugfix
  • Fixed stack overrun in kodak_radc_load_raw
  • Secunia Advisory SA83050: possible infinite loop in parse_minolta()

New in LibRaw 0.18.11 (May 10, 2018)

  • This is bugfix release, changes are (compared to 0.18.2):
  • Secunia Advisory SA83050: possible infinite loop in parse_minolta()
  • Fixed stack overrun in kodak_radc_load_raw
  • restored static for utf2char() lost in previous bugfix
  • Fixed possible div by zero in EOS D30 WB data parse
  • packed_load_raw(): EOF check on each row
  • Exceptions was not caught in x3f_new_from_file resulting in x3f handle leak

New in LibRaw 0.18.10 (May 3, 2018)

  • CVE-2018-10529 fixed: out of bounds read in X3F parser
  • CVE-2018-10528 fixed: possible stack overrun in X3F parser

New in LibRaw 0.19.0 Beta 4 (May 3, 2018)

  • CVE-2018-10529 fixed: out of bounds read in X3F parser
  • CVE-2018-10528 fixed: possible stack overrun in X3F parser

New in LibRaw 0.19.0 Beta 3 (Apr 25, 2018)

  • Secunia 81800 advisory
  • Lot of bugs reported by ImageMagic/oss-fuzz fixed

New in LibRaw 0.18.9 (Apr 25, 2018)

  • Secunia #81800: Credit: Laurent Delosieres, Secunia Research at Flexera
  • samsung_load_raw: possible buffer overrun
  • rollei_load_raw: possible buffer overrun
  • nikon_coolscan_load_raw: possible buffer overrun, possible NULL pointer
  • find_green: possible stack overrun
  • parse_exif: possible stack overrun

New in LibRaw 0.19.0 Beta 2 (Mar 23, 2018)

  • Better handling of broken JPEG thumbnails
  • Panasonic GH5S/G9-hires decoder, thanks to Alexey Danilchenko
  • Note: ABI has changed due to this patch, so shlib version increased
  • Fujifilm X-A5/A20 metadata parsing fix
  • New error code LIBRAW_TOO_BIG: image data size excess LIBRAW_MAX_ALLOC_MB
  • Winsock2 included before windows.h to make MinGW happy

New in LibRaw 0.19.0 Beta 1 (Feb 28, 2018)

  • 84 cameras added compared to 0.18 (1014 total):
  • Apple: iPhone 8(*), iPhone 8 plus, iPhone X
  • BlackMagic: URSA Mini 4k, URSA Mini 4.6k, URSA Mini Pro 4.6k
  • Canon CHDK hack: PowerShot A410, A540, D10, ELPH 130 IS, ELPH 160 IS, SD750,
  • SX100 IS,SX130 IS, SX160 IS, SX510 HS, SX10 IS, IXUS 900Ti
  • Canon: PowerShot G1 X Mark III, G9 X Mark II, EOS 6D Mark II, EOS 77D, EOS 200D, EOS 800D, EOS M6, EOS M100
  • Casio EX-ZR4100/5100:
  • DJI Phantom4 Pro/Pro+, Zenmuse X5, Zenmuse X5R
  • FujiFilm: S6500fd, GFX 50S, X100f, X-A3, X-A5, X-A10, X-A20, X-E3, X-H1, X-T20
  • GITUP GIT2P:
  • Hasselblad: H6D-100c, A6D-100c
  • Huawei: P9 (EVA-L09/AL00), Honor6a, Honor9, Mate10 (BLA-L29)
  • Leica: CL, M10, TL2
  • LG: V20 (F800K), VS995
  • Nikon: D850, D5600, D7500, Coolpix B700
  • Olympus: E-PL9, E-M10 Mark III, TG-5
  • OnePlus: One, A3303, A5000
  • Panasonic: DMC-FZ45, DMC-FZ72, DC-FZ80/82, DC-G9 (std. res mode only), DC-GF10/GF90, DC-GH5, DC-GX9, DC-GX800/850/GF9, DMC-LX1, DC-ZS70 (DC-TZ90/91/92, DC-T93), DC-TZ100/101/ZS100, DC-TZ200/ZS200
  • PARROT: Bebop 2, Bebop Drone
  • Pentax KP
  • PhaseOne IQ3 100MP Trichromatic
  • Samsung: Galaxy Nexus, Galaxy S3, S6 (SM-G920F), S7, S7 Edge, S8 (SM-G950U)
  • Sony: A7R III, A9, DSC-RX0, DSC-RX10IV
  • Yi M1Y
  • UNEECC: GO3, CGO3P
  • Xiaoyi YIAC3 (YI 4k)
  • Note: for mobile phones with DNG format recording, only really tested cameras are added to supported camera list. Really LibRaw should support any correct DNG.
  • No more built-in support for LibRaw demosaic packs (GPL2/GPL3). We're unable to support this (very old code), so we'll be happy to transfer this code to some maintainer who wish to work with it.
  • In LibRaw 0.19 we provide extension API: user-settable callbacks to be called in code points where demosaic pack code was called.
  • Int callbacks.pre_identify_cb(void *) => to be called in LibRaw::open_datastream before call to (standard) identify() function. If this call returns 1, this means that RAW file is identified and all metadata fields are set, so no need to run standard identify code.
  • Void callbacks.post_identify_cb(void*) => called just after identify(), but before any cleanup code;
  • Dcraw_process() callbacks are called before dcraw_process phases (name speaks for itself): pre_subtractblack_cb, pre_scalecolors_cb, pre_preinterpolate_cb, pre_interpolate_cb, interpolate_bayer_cb, interpolate_xtrans_cb, post_interpolate_cb, pre_converttorgb_cb, post_converttorgb_cb
  • All these new callbacks are called with (this) as the only arg. To continue LibRaw-demosaic-pack-GPLx support one need to subclass LibRaw, set needed callbacks in (e.g.) constructor code, than these callbacks to be called
  • Better DNG parser:
  • Support for DefaultCrop Origin/Size tags (add LIBRAW_PROCESSING_USE_DNG_DEFAULT_CROP to raw_processing_options to enable)
  • Better parsing for nested DNG tags (use tag from RAW IFD, fallback to IFD0 if no tag in current IFD)
  • DNG PreviewColorspace extracted into dng_levels.preview_colorspace
  • Metadata extraction:
  • Better extraction of camera measured balance (LIBRAW_WBI_Auto and WBI_Measured), this not the same as 'as shot' if some preset/manual tune is used.
  • Extraction of camera custom balances (LIBRAW_WBI_CustomN)
  • Nikon data compression tag extracted into makernotes.nikon.NEFCompression
  • Hasselblad BaseISO and Gain extracted into makernotes.hasselblad
  • Canon multishot params extracted into makernotes.canon.multishot
  • Lot of other vendor-specific makernotes data (see data structures definitions for details).
  • New LibRaw::open_bayer call allows to pass sensor dump w/o metadata directly to LibRaw
  • Color data added/updated/fixed for many cameras
  • Correct data maximum for Fuji X-* cameras
  • Thumbnail processing:
  • JPEG thumbnails: if compiled with libjpeg, color count is extracted into imgdata.thumbnail.tcolors
  • PPM (bitmap) thumbnails: color count is set according to thumbnail IFD tag
  • PPM16 thumbnails: if LIBRAW_PROCESSING_USE_PPM16_THUMBS set in raw_processing_options, than thumbnail will be extracted as is, not converted to 8 bit. thumbnail.tformat is set to LIBRAW_THUMBNAIL_BITMAP16 in this case. Untested, because it is hard to find RAWs with 16-bit bitmaps.
  • Compatibility fixes
  • struct tiff_tag renamed to libraw_tiff_tag
  • pow64f renamed to libraw_pow64f
  • Bugs fixed:
  • COLOR(r,c) works correctly on X-Trans files
  • Security fixes:
  • Secunia #81000: Credit: Laurent Delosieres, Secunia Research at Flexera
  • Other fixes:
  • Checks for width+left_margin/height+top_margin not larger than 64k
  • LIBRAW_MAX_ALLOC_MB define limits maximum image/raw_image allocation (default is 2048 so 2Gb per array)
  • LibRaw::read_shorts item count is now unsigned
  • Fixed possible out of bound access in Kodak 65000 loader
  • CVE-2017-14348: Fix for possible heap overrun in Canon makernotes parser Credit: Henri Salo from Nixu Corporation
  • Fix for CVE-2017-13735
  • CVE-2017-14265: Additional check for X-Trans CFA pattern data
  • Phase One flat field code called even for half-size

New in LibRaw 0.18.8 (Feb 24, 2018)

  • Secunia #81000: Credit: Laurent Delosieres, Secunia Research at Flexera
  • leaf_hdr_load_raw: check for image pointer for demosaiced raw
  • NOKIARAW parser: check image dimensions readed from file
  • quicktake_100_load_raw: check width/height limits
  • LibRaw 0.18.8

New in LibRaw 0.18.7 (Jan 19, 2018)

  • Secunia #79000: Credit: Laurent Delosieres, Secunia Research at Flexera
  • All legacy (RGB raw) image loaders checks for imgdata.image is not NULL
  • kodak_radc_load_raw: check image size before processing
  • legacy memory allocator: allocate max(widh,raw_width)*max(height,raw_height)
  • LibRaw 0.18.7

New in LibRaw 0.18.6 (Dec 22, 2017)

  • Secunia #76000:
  • Fixed fuji_width handling if file is neither fuji nor DNG
  • Fixed xtrans interpolate for broken xtrans pattern
  • Fixed panasonic decoder
  • LibRaw 0.18.6

New in LibRaw 0.18.5 (Sep 22, 2017)

  • Fix for possible buffer overruns in kodak_65000 decoder

New in LibRaw 0.18.4 (Sep 12, 2017)

  • Fix for possible heap overrun in Canon makernotes parser

New in LibRaw 0.18.3 (Sep 10, 2017)

  • Fix for CVE-2017-13735
  • Additional checks for X-Trans CFA pattern data

New in LibRaw 0.18.2 (Mar 21, 2017)

  • Fixed several errors (Secunia advisory SA75000)
  • ACES colorspace output option included in dcraw_emu help page
  • Avoided possible 32-bit overflows in Sony metadata parser
  • Phase One flat field code called even for half-size output

New in LibRaw 0.16.2 (Aug 14, 2015)

  • Fixed several bugs detected by running American Fuzzy Lop

New in LibRaw 0.16.1 (Aug 14, 2015)

  • Fixed dcraw vulnerability in ljpeg_start()

New in LibRaw 0.17.0 Beta 3 (Aug 12, 2015)

  • New Cameras:
  • Nikon D810A
  • Panasonic FZ300/330, GX8
  • Sony A7R-II, RX10-II
  • C-API extension to support 3DLut Creator. Shared lib version incremented because of API extension

New in LibRaw 0.17.0 Beta 2 (Aug 12, 2015)

  • Fujifilm F700/S20Pro second frame support
  • Fixed Black level calculation for Nikon 1 S2
  • New cameras:
  • Canon G3 X
  • Sigma dp0 Quattro

New in LibRaw 0.17.0 Beta 1 (Aug 12, 2015)

  • More accurate input handling based on AFL checks.
  • strcmp(make,...) -> strncmp(make) to prevent running out of unterminated EXIF value
  • Canon_makernotes_t -> libraw_canon_makernotes_t
  • New cameras (813 total):
  • Fujifilm X-T10
  • Leica Q
  • Olympus AIR-A01
  • Pentax K3 II (standard mode only, 1-s subframe extracted for 4-shot images)
  • Sigma dp3 Quattro
  • Sony RX100-IV

New in LibRaw 0.17.0 Alpha 4 (May 18, 2015)

  • Fixed several bugs detected by running American Fuzzy Lop
  • tiff-ifd field with tile length removed because it not needed anymore
  • ABI changed, recompile binary packages. Shlib version incremented too

New in LibRaw 0.17.0 Alpha 3 (May 18, 2015)

  • Fix for dcraw ljpeg_start vulnerability

New in LibRaw 0.17.0 Alpha 2 (May 18, 2015)

  • Fixed possible buffer overrun in metadata parser (only 0.17-Alpha1 affected, not earlier versions)
  • New cameras:
  • Canon: 5DS, 5DS R, 750D, 760D, M2, M3
  • Fujifilm: XQ2, X-A2
  • Leica: Monochrom (Typ 246)
  • Nikon: D7200, 1 J5
  • Olympus: SH-2, TG-4
  • Pentax: K-S2
  • Samsung: NX500
  • Minor fixes to make old gcc happy
  • ABI changed, recompile binary packages. Shlib version incremented too

New in LibRaw 0.17.0 Alpha 1 (Mar 4, 2015)

  • More metadata parsing/extraction:
  • XMP packet extracted (if exists)
  • DNG Color information parsed
  • GPS data (partially) parsed
  • EXIF/Makernotes parsed for used optics (for both RAW files and DNG converted by Adobe convertor).
  • Exif/Makernotes parser callback (called for each processed tag)
  • Sony ARW2.3 decoder:
  • params.sony_arw2_hack removed, decoded data are always in 0...17k range (note the difference with dcraw!)
  • Additional processing options for Sony lossy compression techincal analysis.
  • Dcraw 9.24 imported (but some changes not approved because Libraw do it better).
  • Many improvements in data decoding/processing.
  • Correct decoding of black level values from metadata for many formats
  • 196 camera models added to supported camera list.
  • Some of them are new (released since LibRaw 0.16 come out), some was supported before, but missed from the list.
  • Added cameras are:
  • Alcatel 5035D
  • BlackMagic Pocket Cinema Camera, Production Camera 4k
  • Canon PowerShot A550, A3300 IS, G1 X Mark II, G7 X, SD950, SX60 HS, EOS 7D Mark II, EOS 20Da, EOS 60Da, EOS 1200D, EOS-1D C
  • Casio EX-FC300S, EX-FC400S, EX-Z1080, EX-ZR700, EX-ZR710, EX-ZR750, EX-ZR800, EX-ZR850, EX-ZR1000, EX-ZR1100, ZR1200, ZR1300, EX-ZR1500, EX-100, EX-10
  • Digital Bolex D16,D16M
  • DJI 4384x3288,
  • Epson R-D1s, R-D1x
  • FujiFilm E505, S1, S205EXR, HS10, HS11, HS22EXR, HS33EXR, HS35EXR, F505EXR, F605EXR, F775EXR, F900EXR, X100T, X30, X-T1, X-T1 Graphite Silver
  • Hasselblad H5D-60, H5D-50, H5D-50c, H5D-40, H4D-60, H4D-50, H4D-40, H4D-31, H3DII-22, H3DII-31, H3DII-39, H3DII-50, H3D-22, H3D-31, H3D-39, H2D-22, H2D-39, CF-22, CF-31, CF-39, Stellar II,HV
  • HTC UltraPixel
  • Imacon Ixpress 96, 96C, 384, 384C (single shot only),132C, 528C (single shot only)
  • ISG 2020x1520
  • Ikonoskop A-Cam dII Panchromatic, A-Cam dII
  • Kinefinity KineMINI, KineRAW Mini, KineRAW S35
  • Kodak DCS460D, S-1
  • Leaf Credo 50
  • Lenovo a820
  • Leica Digital-Modul-R, D-Lux (Typ 109), M (Typ 240), Monochrom (Typ 240), M-E, M-P, R8, S, T (Typ 701), X (Typ 113), X2, X-E (Typ 102), V-Lux (Typ 114),
  • Matrix 4608x3288
  • Nikon D4s, D600, D610, D750, D800, D800E, D810, D3300, D5500, Df, 1 J4, 1 S2, 1 V3, Coolpix P340, Coolscan NEF
  • Nokia 1200x1600
  • Olympus E-450, E-600, E-PL6, E-PL7, E-M1, E-M10, E-M5 Mark II, SP565UZ, STYLUS1s
  • Panasonic DMC-CM1, DMC-FZ7, DMC-FZ70, DMC-FZ1000, DMC-GF7, DMC-GH4, AG-GH4, DMC-GM1s, DMC-GM5, DMC-LX100, DMC-TZ60/61/SZ40, DMC-TZ70
  • Pentax GR, K110D, K-01, K-S1, Q, QS-1, 645Z
  • PhaseOne IQ250, IQ260, IQ260 Achromatic, IQ280, Achromatic+, P 20+, P 21, P 25+, P 30+, P 40+
  • Ricoh GXR MOUNT A12, GXR MOUNT A16 24-85mm F3.5-5.5, GXR, S10 24-72mm F2.5-4.4 VC, GXR, GR A12 50mm F2.5 MACRO, GXR, GR LENS A12 28mm F2.5, GXR, GXR P10
  • Samsung GX-1L, NX1, NX5, NX1000, NX1100, NX30, NX300, NX300M, NX3000, NX mini, Galaxy S3, Galaxy Nexus
  • Sigma dp1 Quattro, dp2 Quattro
  • Sinar eMotion 22, eMotion 54, eSpirit 65, eMotion 75, eVolution 75, Sinarback 54
  • Sony A7 II, A7S, ILCA-77M2 (A77-II), ILCE-3000, ILCE-5000, ILCE-5100, ILCE-6000, ILCE-QX1, DSC-RX100III, DSLR-A560, NEX-VG20, NEX-VG30, NEX-VG900, IMX135-mipi 13mp, IMX135-QCOM, IMX072-mipi

New in LibRaw 0.16.0 (Jan 30, 2014)

  • Support for new cameras:
  • Baumer TXG14
  • Blackmagic Cinema
  • Canon EOS 70D, C500, S120, G16
  • Fujifilm X-M1, X-A1, XE2, XQ1
  • Hasselblad Lunar, Stellar
  • Leica C, X VARIO
  • Nikon D5200, P7800, D5300, D610, Df, 1 AW1
  • Nokia Lumia 1020, 1520
  • Olympus E-P5,E-M1, STYLUS1
  • OmniVision OV5647 (Raspberry Pi)
  • Panasonic LF1, GX7, GF6, GM1
  • Pentax K-50, K-500, Q7,K-3
  • Richon GR
  • Samsung NX300, NX1100, NX2000, Galaxy NX (EK-GN120)

New in LibRaw 0.16 Beta 1 (Jan 15, 2014)

  • 12 new cameras supported
  • Color data updated for 4 cameras
  • Correct visible image area for small and medium sized Sigma pre-Merrill cameras and for Canon G16
  • Better EXIF parsing for Nikon cameras.
  • More correct EXIF color data extraction for Olympus cameras
  • Better compatibility with old Visual Studio compilers.
  • Corrected Cmake rules for MinGW builds

New in LibRaw 0.15.4 (Jan 15, 2014)

  • Additional checks to data to prevent broken file opening
  • New camera/format support:
  • Richon GR
  • Panasonic LF1
  • Canon EOS 70D
  • Sony RX100II, RX1R
  • Olympus E-P5

New in LibRaw 0.15.2 (May 27, 2013)

  • Fixed possible double-free() on error recovery on damaged full-color (Foveon, sRAW) files.
  • wchar_t* file interface disabled for MinGW32 compilation

New in LibRaw 0.15.1 (May 25, 2013)

  • fixed wrong data maximum calculation for Panasonic files
  • check for possible buffer overrun in exposure correction code

New in LibRaw 0.15.0 Beta 3 (Feb 15, 2013)

  • Fixed possible buffer overrun when RawSpeed library used
  • Added new C++ API Call LibRaw::recycle_datastream(), C API call libraw_recycle_datastream() and new errorcode LIBRAW_INPUT_CLOSED for unpack/unpack_thumb() calls. These new API calls may be used to free file handle (and associated file buffer) if your application will not call unpack*() on this LibRaw handle, so file may be unlocked.
  • Support for Imacon Ixpress 39Mpix Multi-shot files
  • 11 new cameras supported:
  • Canon 6D and EOS M
  • Casio EX-ZR100
  • Fujifilm X-E1
  • Leica D-LUX6 and V-LUX4
  • Nikon P7700
  • Olympus XZ-2
  • Panasonic G5
  • Samsung EX2F
  • Sony RX-1

New in LibRaw 0.15.0 Alpha 2 (Aug 24, 2012)

  • subtract_black() works again
  • cropping works again (note: for Fuji SuperCCD files cropping is approximate)
  • color_data.channel_maximum[4] is replaced to color_data.data_maximum (max value from all image color channels). This value is calculated on subtract_black() call.
  • PhaseOne (compressed RAW): black level subtracted on postprocessing stage (or in raw2image() call). It requires addtional memory allocation.
  • Fixed minor problem in lossy DNG tone curve generation
  • Imported dcraw 1.452:
  • Changed color data for Canon 1D-X camera
  • New camera support: Samsung NX-1000, Sony DSC-RX100

New in LibRaw 0.15.0 Alpha 1 (Jul 10, 2012)

  • API Changes:
  • Removed, because no one uses it:
  • LibRaw::dcraw_document_mode_processing (and C-API call)
  • Data field imgdata.color.color_flags
  • Removed, because internal logic changed:
  • LIBRAW_DECODER_4COMPONENTS:
  • Now unpack() unpacks RAW data in only two possible formats:
  • imgdata.rawdata.raw_image[] - flat buffer with bayer data (one value per pixel) with masked pixels.
  • imgdata.rawdata.color_image - 4-components array (similar to imgdata.image) with 3 or 4 components per pixel and without masked pixels.
  • Changed:
  • imgdata.color.cblack[4] instead of [8] - for now cblack[4..7] (count of pixels used for black level calculation) is not used, so removed
  • LibRaw::fc() renamed to LibRaw::fcol() to maintain compatibility with dcraw internals
  • Temporary not working properly or disabled:
  • imgdata.params.cropbox[] - cropping not works yet, so disabled
  • LibRaw::subtract_black() - don't works properly, so not used in LibRaw internals until next Alpha
  • Added:
  • WF debanding code (banding suppression): int imgdata.params.wf_debanding - enables debanding float imgdata.params.wf_deband_threshold[4] - set threshold levels for debanding (in pixel values, so usual value is several units)
  • LibRaw::open_wfile(wchar_t *filename) (WIN32 only) - opens RAW filename passed in Windows unicode encoding.
  • imgdata.params.user_cblack[4] - allows to set per-channel black levels
  • User-provided data streams (derived from LibRaw_abstract_datastream) should implement jpeg_src() method to provide data source for JPEG decoder used in lossy DNG processing. See src/libraw_datastream.cpp for sample implementation.
  • Imported dcraw 9.16/1.450, added support for several cameras:
  • Adobe DNG: Fast Load DNG (LightRoom 4.x),lossy-compressed DNG (LR 4.x, you need to compile with -DUSE_JPEG and link with libjpeg 8)
  • Canon: G1 X, SX220 HS, EOS 5D Mark III, EOS 650D, EOS 1D-X
  • Casio: EX-Z8
  • Fujifilm: X-S1, HS30EXR, X1-Pro
  • Nikon: D4, D3200, D800, D800E
  • Olympus: E-M5
  • Panasonic: DMC-GF5
  • Samsung: NX20, NX210, ?>445@6:0 =>2>3> firmware NX100
  • Sigma: SD15,SD1, SD1 Merill, DP1, DP1S, DP1X, DP2, DP2S, DP2X (in LibRaw-demosaic-pack-GPL2)
  • Sony: NEX-F3, SLT-A37, SLT-A57

New in LibRaw 0.14.7 (Jun 28, 2012)

  • Imported dcraw 9.15 (1.449):
  • New cameras supported: Canon 5D Mark III, G1 X, 1D X and Powershot SX200; Nikon D4,D800/D800E and D3200; Fuji X-S1 and HS30EXR; Casio EX-Z8; Olympus E-M5; Panasonic GF5; Sony NEX-F3, SLT-A37 and SLT-A57; Samsung NX20 and NX210;
  • Support for updated Samsung NX200 firmware.
  • Makefile.msvc: easy additional compiler flag editing.

New in LibRaw 0.14.6 (Apr 5, 2012)

  • Casio EX-Z500 support
  • possible) I/O exceptions on file open catched in open_datastream
  • Fixed possible read-after-buffer in Sony ARW2 decoder
  • Fixed mingw32 errors when compiling LibRaw_windows_datastream
  • Makefile.msvc: support of OpenMP and LCMS (uncomment to use)
  • Fixed decoding of some Leaf Aptus II files

New in LibRaw 0.14.5 (Jan 6, 2012)

  • Fixed bug (uninitialized variable) in SMAL format decoding.
  • Imported new dcraw 9.12 (1.446): support for Leica V-LUX 3, updated color data for Canon S100, Fujifilm X10, Nikon 1 J1/V1, Panasonic GX1, Samsung NX200, Sony NEX-7

New in LibRaw 0.14.4 (Dec 15, 2011)

  • Fixes to Panasonic/Leica file parser to prevent crash on broken jpegs.
  • Fixes to include order in src/libraw_datastream.cpp to better compile with KDEWIN
  • Floating-point DNGs are rejected on early processing stage.
  • Support for new cameras: Canon S100, Fuji X10, Panasonic GX1, Samsung NX200, Sony NEX-7.

New in LibRaw 0.14.3 (Oct 27, 2011)

  • Bug fixes in black level subtraction code for PhaseOne files
  • New API call LibRaw::get_internal_data_pointer() for developers who need access to libraw_internal_data fields (i.e. Fuji SuperCCD layout).
  • doc/API-overview fixes to reflect 0.14 changes

New in LibRaw 0.14.2 (Oct 19, 2011)

  • Fixed bug in Canon 1D and 1Ds files decoding.
  • New decoder information bit DECODER_HASRAWCURVE

New in LibRaw 0.14.1 (Oct 12, 2011)

  • Imported dcraw 9.11/1.445:
  • Support for new cameras added: Fujifilm F600EXR, Nikon P7100, Olympus E-PL3 and E-PM1, Panasonic DMC-FZ150, Sony NEX-5N, A65 and A77.
  • Updated color data for: Olympus E-P3, Panasonic G3 and GF3, PhaseOne H25, P40 and P65, Sony NEX-C3, NEX-5, NEX-3, A35 and A55.
  • Support for dark frame extraction on Sony cameras.
  • DCB demosaicing: reserving 6 pixels instead of 3 to suppress colored image frame.

New in LibRaw 0.14.0 (Sep 22, 2011)

  • Multiple rendering:
  • New sample in samples/multirender_test.cpp: renders data 4 times: in half and full modes with different white balance settings.
  • Unprocessed RAW data is stored in separate data buffer: (2 bytes per pixel for all Bayer-pattern images, 8 bytes per pixel for Foveon, sRAW, and other full-color raw formats), so now LibRaw uses 25% more memory for full processing of most common Bayer images; while for just unpack memory is reduced 4 times.
  • New call LibRaw::raw2image() fills imgdata.image array with fresh copy of data. There is no need to call raw2image() separately if you use dcraw_process() or dcraw_document_mode_processing() calls.
  • New call LibRaw::get_decoder_info() to determine raw data storage layout. See samples/unprocessed_raw.cpp for an example of how to use it.
  • New call LibRaw::free_image(), deallocates imgdata.image buffer. Use this call if current postprocessing results are not needed, but it is to early to call recycle() because dcraw_process() may be called later.
  • New C-API calls libraw_raw2image() - C API for LibRaw::raw2image() libraw_free_image() - C API for LibRaw::free_image() libraw_get_decoder_info() - C API for LibRaw::get_decoder_info()
  • Other changes:
  • No separate imgdata.masked_pixels buffers, Bayer raw formats are read to buffer with borders. So, no ugly add_masked_border_to_bitmap() call.
  • No filtering_mode parameter. Raw tone curve is applied at unpack() stage; zero pixels removed on postprocesing stage.
  • unprocessed_raw and 4colors samples are adjusted to use new RAW data storage layout.
  • OpenMP speedup of postprocessing steps (up to 50% for half mode and 4-core machine)
  • Most of LibRaw_datastream function bodies are moved to separate source file
  • LibRaw_windows_datastream is merged to main source tree
  • Imported dcraw 9.10 (1.444), support for new cameras added: ARRIRAW format, Canon SX30 IS, Leica D-LUX 5 and V-LUX2, Olympus E-P3, Panasonic G3 and GF3, Sony NEX-C3 and SLT-A35
  • Support for RedOne digital movie cameras (R3D format). To enable this support you need to:
  • install libjasper JPEG2000 support library
  • compile LibRaw with -DUSE_JASPER compiler switch (./configure will do it for you)
  • If you use own LibRaw_datastream implementation, you should implement make_jas_stream() call for your datastream. See bottom of src/libraw_cxx.cpp for implementations in datafile and mem-buffer LibRaw streams.
  • Bugfix: green matching is turned off if output image is shrinked due to wavelet filtering or aberration correction.
  • Removed imgdata.sizes.bottom_margin and right_margin data fields use imgdata.sizes.raw_width - width - left_margin to get right one, the same with bottom_margin.
  • Minor ./configure cleanup
  • Qmake files and Visual Studio Project files are updated.
  • New version check macroses.
  • Documentation changed to reflect 0.14 changes.
  • Removed LibRaw::rotate_fuji_raw() call and corresponding C-API call.
  • The LibRaw::adjust_sizes_info_only() call may be called repeated and mixed with dcraw_process() calls.
  • Postprocessing speedup and optimization, especially if cropping set.
  • Cropping works for FujiCCD raws. For the technical reasons, the position of top-left corner of crop area will be rounded to the nearest multiple of 4 (the corner is shifted top-left).
  • New sample samples/postprocessing_benchmark.cpp This sample measures postprocessing speed. All demosaic methods, averaged white balance, median filtering, wavelet filtration, highlight recovery, and cropping are supported.

New in LibRaw 0.14 Beta 1 (Sep 3, 2011)

  • Cosmetic changes to LibRaw_file_datastream interface
  • OpenMP speedup of postprocessing steps (up to 50% for half mode and 4-core machine)

New in LibRaw 0.14 Alpha 3 (Aug 11, 2011)

  • New sample samples/postprocessing_benchmark.cpp This sample measures postprocessing speed. All demosaic methods, averaged white balance, median filtering, wavelet filtration, highlight recovery, and cropping are supported.
  • Removed LibRaw::rotate_fuji_raw() call and corresponding C-API call.
  • The LibRaw::adjust_sizes_info_only() call may be called repeated and mixed with dcraw_process() calls.
  • Postprocessing speedup and optimization, especially if cropping set.
  • Cropping works for FujiCCD raws. For the technical reasons, the position of top-left corner of crop area will be rounded to the nearest multiple of 4 (the corner is shifted top-left).

New in LibRaw 0.13.8 (Aug 11, 2011)

  • Imported dcraw 9.10 (1.444), support for new cameras added: ARRIRAW format, Canon SX30 IS, Leica D-LUX 5 and V-LUX2, Olympus E-P3, Panasonic G3 and GF3, Sony NEX-C3 and SLT-A35
  • Bugfix: green matching is turned off if output image is shrinked due to wavelet filtering or aberration correction

New in LibRaw 0.13.7 (Jul 16, 2011)

  • Changes in cropping code:
  • cropping is now works for Fuji files (instead of crash)
  • bad pixels map and dark frame subtraction is turned off if cropping enabled
  • for technical reasons, coordinates of top-left corner of crop box are rounded to multiple of 4 for Fuji files.
  • ./configure stuff fixes:
  • install static libraries only when --enable-static is set
  • compiled samples are dynamically linked if shared library not disabled.
  • OpenMP enabled for Visual Studio 2008 SP1+, but not for RTM

New in LibRaw 0.14 Alpha 2 (Jul 12, 2011)

  • Multiple rendering (LibRaw::dcraw_process() calls) allowed without re-opening RAW file thrfough the sequence of open()/unpack() calls.
  • New sample in samples/multirender_test.cpp: renders data 4 times: in half and full modes with different white balance settings.
  • Unprocessed RAW data is stored in separate data buffer: (2 bytes per pixel for all Bayer-pattern images, 8 bytes per pixel for Foveon, sRAW, and other full-color raw formats), so now LibRaw uses 25% more memory for full processing of most common Bayer images; while for just unpack memory is reduced 4 times.
  • New call LibRaw::raw2image() fills imgdata.image array with fresh copy of data. There is no need to call raw2image() separately if you use dcraw_process() or dcraw_document_mode_processing() calls.
  • New call LibRaw::free_image(), deallocates imgdata.image buffer. Use this call if current postprocessing results are not needed, but it is to early to call recycle() because dcraw_process() may be called later.
  • New call LibRaw::get_decoder_info() to determine raw data storage layout. See samples/unprocessed_raw.cpp for an example of how to use it. * New C-API calls libraw_raw2image() - C API for LibRaw::raw2image() libraw_free_image() - C API for LibRaw::free_image() libraw_get_decoder_info() - C API for LibRaw::get_decoder_info()
  • No separate imgdata.masked_pixels buffers, Bayer raw formats are read to buffer with borders. So, no ugly add_masked_border_to_bitmap() call.
  • No filtering_mode parameter. Raw tone curve is applied at unpack() stage; zero pixels removed on postprocesing stage.
  • unprocessed_raw and 4colors samples are adjusted to use new RAW data storage layout.

New in LibRaw 0.13.6 (Jul 4, 2011)

  • Cosmetic cleanup in Libraw_memmgr code
  • Permit OpenMP support on MS VS2008
  • More general mem_image interface:
  • New call get_mem_image_format returns bitmap size and bit depth
  • New call copy_mem_image can copy bitmap into buffer with different color order (RGB/BGR) and line stride
  • dcraw_make_mem_image() uses calls mentioned above
  • see documentation for info on these function parameters.
  • libraw/librawwindows.h implements LibRaw_datastream class based on Windows memory mapped files.
  • Fixed parallel make errors in configure/Makefile.am

New in LibRaw 0.13.5 (Jul 4, 2011)

  • Imported new dcraw 9.08/1.443:
  • New color data for Canon 600D and 1100D, Fuji S200EXR
  • New camera supported: Fuji HS20EXR and F550EXR, Kodak Z990, Nikon D5100, Olympus E-PL1s and XZ-1, Samsung NX11, Sony A230 and 290.

New in LibRaw 0.13.4 (Apr 4, 2011)

  • Imported new dcraw 9.07/1.442: support for Canon 600D and 1100D, Hasselblad H4D-60, Olympus E-PL2
  • Color data for Leaf Aptus II and Canon Powershot S2 IS

New in LibRaw 0.13.3 (Apr 4, 2011)

  • Preliminary support for Leaf Aptus II cameras (no color data yet): Leaf Aptus II 6,7,8,10 and 12 are tested, Aptus II 5 should work.
  • Preliminary support for Fujifilm X100 camera (again, no color data).
  • Fixed possible after the end of buffer read when working with in-memory RAW data.
  • Fixed possible loss of JPEG stream sync marks in LJPEG decoder (this bug was found only for Leaf Aptus II RAWs).

New in LibRaw 0.13.2 (Apr 4, 2011)

  • Fixed broken camera white balance reading for some Sony cameras.
  • Sony A390 support (colordata from A380).
  • Leica D-LUX 4: fixed typo in camera name in colordata.
  • New -mem option for dcraw_emu: I/O via allocated buffer.
  • Preliminary shared library support via configure/libtool.
  • Added qmake .pro and Visual Studio 2008 sln/vcproj project files.

New in LibRaw 0.13.1 (Apr 4, 2011)

  • dcraw_emu documentation updated
  • ./configure stuff changed for correct linking on some systems
  • FBDD denoising is disabled for full-color images and 4-color bayer data (including forced 4-color via four_color_rgb option)

New in LibRaw 0.13.0 (Feb 7, 2011)

  • New low-level buffering code for Huffman decompression. Canon CR2 files are opened about 1.5x times faster than on LibRaw 0.12, other huffman-comressed files unpacks in 1.2-1.3 times faster.
  • New exposure correction code based on linear-cubic root combination. Correction range is from 0.25 (-2 stops) to 8 (+3 stops)
  • All 0.12.x features, including new cameras support and half-size/green-matching fixes.
  • Changes and additions in demosaic-pack-GPL3 (all imported from RawTherapee):
  • Banding suppression code.
  • High-frequency noise suppression.
  • Green channels local averaging to suppress maze artifacts.
  • OpenMP speed-up in median filters (demosaic pack GPL2)
  • OpenMP speed-up in green equilibration (demosaic pack GPL3)
  • Bug fixes and improvements:
  • Better parsing of unknown command-line params in dcraw_emu sample
  • Brigtness table in ahd_demosaic is calculated in reversed order to prevent possible (very unlikely) multithreaded app problem.
  • Fixed file extension in half_mt.c sample.
  • Fixed incomplete data fields reset in LibRaw::recycle()
  • Patches for ./configure system for better LCMS2 support
  • math.h included before any other includes to make KDE compile with Visual C++ happy
  • Fuji FinePix S5500 size adjusted to ignore (rare?) garbage at top of frame.

New in LibRaw 0.13 Beta 3 (Feb 3, 2011)

  • Fallback to old huffman decoder for Sony files with unspecified data length (Sony A100, may be others too)
  • Fixed incomplete data fields reset in LibRaw::recycle()

New in LibRaw 0.12.4 (Feb 3, 2011)

  • Imported dcraw 9.06/1.440:
  • Added camera support for: Canon S95, Casio EX-Z1080, Panasonic GF2 and GH2, Samsung NX100, Sony A-580
  • Updated color data for: Canon G12, Nikon D3100, D7000 and P7000, Olympus E-5, Pentax K-r and K-5, Samsung NX10 and WB2000

New in LibRaw 0.13 Beta 2 (Jan 15, 2011)

  • Better parsing of unknown command-line params in dcraw_emu sample
  • Brigtness table in ahd_demosaic is calculated in reversed order to prevent possible (very unlikely) multithreaded app problem.
  • New exposure correction code based on linear-cubic root combination. New working correction range is from 0.25 (-2 stops) to 8 (+3 stops)
  • Fixed file extension in half_mt.c sample.

New in LibRaw 0.13 Beta 1 (Jan 11, 2011)

  • Exposure correction before demosaic (demosaic pack GPL3)
  • OpenMP speed-up in median filters (demosaic pack GPL2)
  • OpenMP speed-up in green equilibration (demosaic pack GPL3)
  • Merged 0.12.2-0.12.3 changes:
  • Patches for ./configure system for better LCMS2 support
  • math.h included before any other includes to make KDE compile with Visual C++ happy
  • Fuji FinePix S5500 size adjusted to ignore (rare?) garbage at top of frame

New in LibRaw 0.13 Alpha 2 (Jan 5, 2011)

  • Zero copy huffman buffer for LibRaw_buffer_datastream
  • Fixed memory leak in compressed NEFs handling

New in LibRaw 0.13 Alpha 1 (Jan 5, 2011)

  • New low-level buffering code for Huffman decompression. Canon CR2 files are opened about 1.5x times faster than on LibRaw 0.12, other huffman-comressed files unpacks in 1.2-1.3 times faster.
  • Changes and additions in demosaic-pack-GPL3 (all imported from RawTherapee):
  • New chromatic aberration correction code. Now it can be used with any interpolation method, not only with AMaZE.
  • Banding suppression code.
  • High-frequency noise suppression.
  • Green channels local averaging to suppress maze artifacts.

New in LibRaw 0.12.2 (Jan 5, 2011)

  • Patches for ./configure system
  • math.h included before any other includes to make KDE compile with Visual C++ happy
  • Fuji FinePix S5500 size adjusted to ignore (rare?) garbage at top of frame.

New in LibRaw 0.12.1 (Dec 21, 2010)

  • Disabled support of Sigma DPx cameras due to incompatible compression scheme and metadata format.

New in LibRaw 0.12.0 (Dec 13, 2010)

  • Support for additional demosaic packs.
  • DCB interpolation and FBDD denoising integrated into main LibRaw.
  • Two demosaic packs:
  • GPL2-licensed: AFD, LMMSE, VCD, Modified AHD and AHD+VCD interpolations. Additional median filters from 'Modified DCRAW' package. Foveon support also included in this pack.
  • GPL3-licensed: AMaZE interpolation and chromatic aberrations correction from RawTherapee
  • LCMS 2.x support
  • New ./configure script, based on GNU autotools.
  • Fix in green_matching code to support nonstandard Bayer pattern
  • Fixed bug in add_masked_borders_to_bitmap() call for cameras with masked border composed of odd number of pixels.
  • New command line options for unprocessed_raw sample: -B - subtract black level, -M - add masked pixels to bitmap.

New in LibRaw 0.12.0 Beta 4 (Dec 10, 2010)

  • Fixed bug in add_masked_borders_to_bitmap() call for cameras with pixels border composed of odd number of pixels.
  • New command line options for unprocessed_raw sample: -B - subtract black level, -M - add masked pixels to bitmap.
  • Foveon-sensor cameras added to supported camera list if compiled with demosaic pack GPL2

New in LibRaw 0.12.0 Beta 3 (Dec 6, 2010)

  • Demosaic packs support in Makefile.dist
  • Foveon support in LibRaw demosaic pack GPL2

New in LibRaw 0.12.0 Beta 2 (Dec 6, 2010)

  • Fixed bug in LMMSE interpolation memory allocation.
  • Allocation changed from malloc to calloc in LMMSE and AMaZE to make valgrind happy.
  • Fix in green_matching code to support nonstandard Bayer pattern
  • Cosmetic changes in distribution-making scripts.

New in LibRaw 0.12.0 Beta 1 (Nov 22, 2010)

  • Support for additional demosaic packs.
  • DCB interpolation and FBDD denoising integrated into main LibRaw.
  • Two demosaic packs:
  • GPL2-licensed: AFD, LMMSE, VCD, Modified AHD and AHD+VCD interpolations. Additional median filters from 'Modified DCRAW' package.
  • GPL3-licensed: AMaZE interpolation and chromatic aberrations correction from RawTherapee
  • LCMS 2.x support
  • New ./configure script, based on GNU autotools.

New in LibRaw 0.11.3 (Nov 17, 2010)

  • Nikon P7000: color matrix data and black level patch for ISO >=400
  • Support for several industrial cameras based on Sony ICX 625/655 sensor: JAI BB500CL/GE, SVS625CL, ptGrey GRAS-50S5C

New in LibRaw 0.11.2 (Nov 12, 2010)

  • Imported dcraw 9.05 (1.439), support for many cameras added:
  • Canon: G12, SX120, 60D
  • Hasselblad H4D, Nokia X2, Olympus E-5
  • Nikon: D3100, D7000, P7000
  • Panasonic: FZ40, FZ100, LX5
  • Pentax: K-r, K-5, 645D
  • Samsung GX20, WB2000

New in LibRaw 0.11.1 (Nov 10, 2010)

  • Fixed bug in dcraw_emu sample command line processing

New in LibRaw 0.11.0 Beta 6 (Oct 16, 2010)

  • internal/dcraw_fileio.c can be compiled with -DDCRAW_VERBOSE again
  • cosmetic fixes in comments in libraw_datastream.h>

New in LibRaw 0.11.0 Beta 5 (Oct 16, 2010)

  • I/O Layer refactored:
  • Three standard LibRaw_*datastream classes: buffer based, file (iostreams based) and "big" file (FILE* based).
  • LibRaw::open_file() selects appropriate I/O layer basing of input file size.
  • All LibRaw_abstract_datastream methods are virtual again.
  • Timing of processing stages implemented in dcraw_emu sample.
  • simple_dcraw sample become more simple: mmap-ed I/O removed.

New in LibRaw 0.11.0 Beta 4 (Oct 9, 2010)

  • Fixed bug in exception handling in OpenMP sections in AHD interpolation code.
  • LibRaw_datastreams are now C++ iostreams based instead of old plain FILE* calls.
  • LibRaw::open_file() in multithreaded programs is WAY faster on many OSes (Linux, Windows, MacOSX) because of no extra locks.
  • all client code should be recompiled due to internals change.

New in LibRaw 0.11.0 Beta 3 (Oct 9, 2010)

  • Fixed bug in LibRaw::dcraw_process() code: for half_size processing, params.four_color_rgb was set to 1 internally and not returned back after postprocessing.
  • Several Visual Studio 2003 compatibility fixes
  • AHD interpolation refactored. Now it is about 10% faster than dcraw in single-process mode and up to 1.5 times faster on 4-core and OpenMP (total execution time counted, not AHD itself)

New in LibRaw 0.11.0 Beta 2 (Oct 9, 2010)

  • Phase One files: LibRaw::unpack() sets colordata.black to approximately correct value.
  • Fixed minor error in setting colordata.maximum value for Phase One files.
  • LibRaw::subtract_black() sets colordata.black and colordata.cblack[] to zero to preserve data integrity.

New in LibRaw 0.11.0 Beta 1 (Sep 6, 2010)

  • It is now possible to crop output image on postprocessing stage (dcraw_process). Coordinates and size of the output box are set via imgdata.params.cropbox[4] parameter.
  • New fatal error code LIBRAW_BAD_CROP
  • New dcraw_emu sample command line switch: -B x y w h (sets cropbox)
  • Processing pipeline has changed: the black level is subtracted from data on postprocessing stage either automatically (on dcraw_process() stage) or by special LibRaw API call:
  • New API calls: LibRaw::subtract_black() (C++ API) and libraw_subtract_black (C API). If you use dcraw_process() or dcraw_document_mode_processing() calls YOU DON'T NEED to call subtract_black() directly.
  • The raw preprocessing mode LIBRAW_FILTERING_NOBLACKS is deprecated and removed from LibRaw.
  • New ./configure script. Use ./configure -h for usage details.
  • New API cals static LibRaw::dcraw_clear_mem() (C++ API) and libraw_dcraw_clear_mem(..) (C API). This calls are used to free memory, allocated by dcraw_make_mem_image() and dcraw_make_mem_thumb() instead of free() call. In some cases LibRaw and calling process have different memory managers, so free() of make_mem_image() data results to program crash (especially in Win32/VisualStudio enviroment).
  • LibRaw::free() is now private (again) instead of public.
  • Minor changes and bugfixes:
  • Memory allocation exceptions (std::bad_alloc) are caught, so LibRaw API calls will return reasonable error codes instead of C++ exception (possibly unhandled). This problem is very unlikely to see in wild: if application cannot allocate small data for internal structure, it will always fail while allocating for RAW image data.
  • WIN32/VisualStudio 2008/2010: fopen,fscanf and sscanf calls in Libraw_datastream code are changed to *_s (secure) ones.
  • Debug print removed from fatal error handler.
  • Mmaped I/O for dcraw_emu sample is turned on via -E switch now (because old -B switch is used for settng cropbox).

New in LibRaw 0.10.0 Beta 3 (Aug 6, 2010)

  • dcraw 9.04 (1.438) imported: changes in tiff metadata parser, fixed a typo in Canon A720 model name
  • small patch in Sony ARW2 unpacking code to make valgrind happy

New in LibRaw 0.9.1 (May 15, 2010)

  • Fixed a bug in 8-bit RAW processing code

New in LibRaw 0.9.0 (Apr 27, 2010)

  • New licensing:
  • Triple licensing (selected by LibRaw user):
  • LGPL 2.1
  • CDDL 1.0
  • LibRaw Software License (27 March 2010 version)
  • There are no separate LibRaw-Lite and LibRaw-Commercial versions, only single LibRaw. Current LibRaw-Lite and LibRaw-Commercial users should switch to LibRaw without loss of functionality. It is possible to change licensig too (e.g. from LGPL to CDDL for LibRaw-Lite users and from LibRaw License to LGPL or CDDL for LibRaw-Commercial users).
  • No Foveon support, sorry.
  • It is not possible to get good color from Foveon sensors with *any* converter. So, there is no need to support these cameras. Dcraw's Foveon-processing code is too strict licensed (GPL), so we choose to drop it.
  • New Features:
  • New data field colordata.channel_maximum[4] - per channel data maximum (calculated for most cameras, 0 for others).
  • New postprocessing parameter params.adjust_maximum_thr This parameter controls changing hardcoded colordata.maximum value to calculated at unpack stage. This helps suppress parasite tone in highlights (pink clouds and so).
  • Default value is reasonable (0.75), look into documentation for more details.
  • New command line parameter -c VALUE for dcraw_emu sample, sets params.adjust_maximum_thr value.
  • Use -c 0.0 for dcraw compatibility.
  • Bug fixes:
  • Fixed typecast error (problem reported only on gcc 4.2.1/32bit) in CRW files processing.
  • Fixed a bug in unpacking DNG files made from Fuji RAFs
  • Finally fixed inconsistency in Fuji files processing
  • New COLOR(row,col) call to get bayer color index in image[] array
  • Old FC() call is deprecated and will be removed in future releases
  • unprocessed_raw sample switched to COLOR() call
  • Removed OpenMP-related warnings.
  • OpenMP support: OpenMP is possible under MinGW (untested)
  • All client code should be recompiled due to structures size change.