libopenraw is a desktop agnostic effort to support digital camera RAW files. It include libopenraw and exempi as the main components.

  • libopenraw, a library to parse digital camera RAW files. Also separately the Rust bindings.
  • Exempi, a library to parse XMP metadata. Also separately the Rust bindings.

libopenraw 0.3.1 is out

libopenraw 0.3.1 is out.

Added a bunch more cameras, new an old, and even older.

New features

  • Added identify as a tool to check a file can be open. This is just for development purpose.
  • Updated the Exif tag list to ExifTool 12.30.

Camera support

[ a * denote that static WB coefficients have been included, unless DNG ]

  • Added Apple iPhone 12 Pro and iPhone 13 Pro.
  • Added Canon EOS M2*, EOS M50 MarkII* and EOS R3*.
  • Added DJI Osmo Action, FC220, FC350, FC6310 and FC7303.
  • Added Fujifilm X-E4*, X-T30 II*, GFX 50S II* and GFX 100S*
  • Added Leica M11.
  • Added Nikon Z9* and Zfc*.
  • Added Olympus E-M10III*.
  • Added OM Systems OM-1*.
  • Added Panansonic G7*, GH5II* and GH6*, and alias for Panasonic G110.
  • Added Pentax K3 MarkIII (DNG and PEF*).
  • Added Ricoh GR IIIx.
  • Added Sigma fp L.
  • Added Sony DSLR-A300*, DSLR-A350*, ILCE-A7R III A*, ILCE-A7R IV A*, DSC-HX95*, ZV-E10*, QX-1*, A-1*, and A-7IV*.

Bug fixes

Internal changes

  • Added a make webdist target to streamline copying the doxygen output.
  • Removed a few piece of unused code in IFD, MakerNote and ljpeg decompressor.
  • Use bionic on Travis CI
  • Minor cleanup in the Sony code.
  • Updated configure to more modern syntax (autoupdate). Requires autoconf 2.69.

Exempi 2.6.0 is out

Exempi 2.6.0 is out.

Here are the changes:

  • Update XMPCore to Adobe XMP SDK v2021.10 (issue #22)
    • Changes in v2021.10
      • Fixing CTECHXMP-4170583, CTECHXMP-4170596, CTECHXMP-4170597, CTECHXMP-4170598, CTECHXMP-4170599, CTECHXMP-4170632 and CTECHXMP-4170633 (maintainer note: no idea what they are, but it seems to fix various buffer size issues in WAVE and SVG)
    • Changes in v2021.08
      • Security Fixes
      • Fixes syntax errors like semicolons in the codebase
      • Copyright note changes across the codebase
      • Fixes broken license link in
      • Fully implements kXMPFiles_OpenOnlyXMP flag for MPEG4
    • Changes in v2021.07
      • Security Fixes
      • Write Exif 2.3.1 Time Zone Metadata - XMPFiles Should Read/Write
      • Removal of words Master/Slave/Blacklist/Whitelist from codebase
      • cmake scripts use –version instead of -dumpversion to get complete gcc version string
      • Updating ReadMe.txt
    • Changes in v2020.1
      • iOS project generation issue
      • iOS compilation issue with libc++
      • Android support with cmake version 3.6
      • CMake upgrade to version 3.15 (except for Android)
      • Add XCode 10.2 support
      • Add VS2017 support
    • Some fixes previously done in Exempi are now upstream.

libopenraw 0.3.0 is out

libopenraw 0.3.0 is out.

The key new feature of libopenraw 0.3.0 is the metadata extraction from the various formats, including non TIFF based Canon CR3.

Added a bunch more cameras, new an old, and even older.

Here is the list of changes:

New features:

Camera support:

  • Added Pentax K-7 (DNG), K5 II (DNG), star-ist DL2*, K110D*, K5 II*, K3*, K3 II*, K-S1*.

  • Added Leica Monochrom M Typ-246 (DNG), D-LUX 4*, Q2-Monochrom (DNG) and SL2-S (DNG).

  • Added XIAOYI YDXJ-2 and YIAC-3 (DNG).

  • Added Nikon Z5*, Z6 2* and Z7 2*.

  • Added Sony A7SIII*, A7C*.

  • Added Canon PowerShot S30*, S40*, S45*, S50*, S60*, S70*, S100V*, Pro70, EOS 850 D / Rebel T8i / KISS X10i*.

  • Added Hasselblad L1D-20c (DNG).

  • Added Panasonic S5*.

  • Added Zeiss ZX1 (DNG).

  • Added Fujifilm FinePix S100FS*, X-S10*.

  • Epson R-D1, R-D1s: extract the 640 pixel preview.

  • Panasonic: extract the Exif thumbnail, get bit per channel, CFA pattern.

  • Olympus, Nikon, Pentax: extract the MakerNote preview.

  • Pentax: Extract the active area and white level when available.

  • Sony: files properly identified. A390 treated as a A380.

  • Canon CRW: synthesize Exif metadata.


  • API: Added or_ifd_release(), or_ifd_get_name() and or_ifd_get_type().
  • API: The ORIfdDirRef returned by or_rawfile_get_ifd() must be released.
  • API: or_rawfile_get_ifd() support more IFD types.
  • API: or_ifd_index is replaced by or_ifd_dir_type. OR_IFD_MAKERNOTE is replaced by OR_IFD_MNOTE, OR_IFD_CFA is replaced by OR_IFD_RAW.
  • API: or_iterator*() to iterate through the metadata tags.
  • API: Added or_metavalue_get_count().
  • Fix getting MakerNotes for Pentax, Panasonic.
  • Get the Panasonic Exif thumbnail.
  • Added tool exifdump.

Internal Changes:

  • Use std::make_unique<>: requires C++14 to compile.
  • Added LOGASSERT().
  • Use model ID when available (Sony, Pentax) instead of strings.
  • Testsuite list the tests that are not run.
  • You can run any testsuite.

Bug fixes:

  • Panasonic: fix the active area, the bpc and the CFA pattern type.

See NEWS included in the tarball.


libopenraw 0.2.3 is out

libopenraw 0.2.3 is out.

Here are the changes:

Camera support:

  • Added Olympus E-M10MarkIV*.

  • Added Hasselblad Lunar* (rebadged Sony NEX-7).

  • Added iPhone 8, SE, XS.

  • Coefficients for Panasonic DC-G100, Sony ZV-1, Canon EOS R5 and EOS R6.

Bug fixes:

  • Fix preview for CR3 files.
  • Properly recognize Apple as make.
  • Fix an overflow in the ljpeg decompressor.

Internal Changes:

  • Added SR2 test case in the testsuite.

See NEWS included in the tarball.


libopenraw 0.2.2 is out

libopenraw 0.2.2 is out.

Here are the changes:

New features:

  • ordiag: Added a developer mode with -D.

Camera support:

  • Support for Canon EOS R5 and R6.
  • Support for Sony DSC-R1* (SR2).
  • Support for Nikon D6*.
  • Support for Panasonic DC-G100.
  • Support for Leica M10-R.
  • Support for GoPro HERO5, HERO6, HERO7 and HERO8 (GPR files, DNG based).
  • Added Sony SR2 file support.

Bug fixes:

  • Properly detect Canon Digital Rebel (aka 300D).
  • Better detect Minolta and Ricoh vendors.
  • Fix a crash in DNG on invalid files.

See RELEASE_NOTES and NEWS included in the tarball.


libopenraw 0.2.1 is out

libopenraw 0.2.1 is out.

Here are the changes:

  • Support for Nikon Coolpix P950
  • Support for Fujifilm F550EXR
  • Support for Sony ZV-1

Internal Changes:

  • Updated MP4 parser.

See RELEASE_NOTES and NEWS included in the tarball.


Exempi 2.5.2 is out

Exempi 2.5.2 is out.

Here are the changes:

  • Bug #18: Remove an unnecessary message to stdout in the exempi tool.
  • Bug #20: Test file formats. This also change the GIF sample to GIF89a.
  • Bug #17: make check should build more reliably now.
  • MR !1: Remove deprecated C++ to compile with C++17.
  • MR !2: Fix a build failure with C++17.

libopenraw 0.2.0 is out

libopenraw 0.2.0 is out.

Here are the changes:

  • Support parsing Canon CR3 and GoPro GPR
  • Many many camera added
  • New API to get vendor ID

See RELEASE_NOTES and NEWS included in the tarball. libopenraw now require Rust to compile the CR3 support.

exempi-rs 2.5.0 is out

exempi-rs 2.5.0 is out. exempi-rs are the Rust binding for Exempi 2.4.

They have been uploaded to to be available with cargo.

Here are the changes:

  • DateTime now has standard derive Clone and Debug
    • Fixed ffi struct.
    • Now opaque.
  • xmp_iterator_new() now take a const Xmp
  • XmpIterator::next() outputs a PropFlags, not an IterFlags
  • Xmp::set_array_item() was missing.
  • Xmp is now Send.
  • exempi::init() will run only once.
  • Add exempi::force_init().
  • A more Rust like API returning Result<>.
  • Update URL for crate.