Commit 65fd05a8 authored by Gilles Caulier's avatar Gilles Caulier 🗼

Update internal libraw to last 0.20.0-beta1 (https://www.libraw.org/news/libraw-0-20-beta1)

Enable Unicode paths support under Windows
CCBUGS: 420195
parent 1e88b3a8
......@@ -13,7 +13,22 @@ General : Add Microsoft Visual C++ support and a Continuous Integration wo
General : Table-view is now able to show digiKam Tag-Paths properties.
Metadata : New option to write geolocation data in file metadata.
General : Internal libheif updated to last stable 1.6.2 and internal libde265 updated to last stable 1.0.5.
General : Internal libraw updated to May 2020 git snapshot (aka next 0.20.0 release).
General : Internal libraw updated to 0.20-beta1 (https://www.libraw.org/news/libraw-0-20-beta1). New camera supported:
Canon CR3, 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 Fujifilm compressed/16bit, GFX 100, X-A7, X-Pro3, X100V, X-T4, 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 Panasonic 14-bit, DC-FZ1000 II, DC-G90, DC-S1, DC-S1R, DC-S1H, DC-TZ95,
PhaseOne IQ4 150MP,
Rapsberry Pi RAW+JPEG format,
Ricoh GR III,
Sony A7R IV, A9 II, ILCE-6100, ILCE-6600, RX0 II, RX100 VII,
Zenit M,
also multiple smartphones.
*****************************************************************************************************
BUGFIXES:
......
......@@ -47,11 +47,16 @@ add_definitions(-DDCRAW_VERBOSE)
# Flag used into LibRaw to be not thread-safe. Never use this mode.
#add_definitions(-DLIBRAW_NOTHREADS)
# Flags to enable extra codecs
add_definitions(-DUSE_X3FTOOLS)
add_definitions(-DUSE_6BY9RPI)
# No need a Flag to export library symbols, as we use a static version for the unit tests.
add_definitions(-DLIBRAW_NODLL)
if(WIN32)
add_definitions(-DLIBRAW_WIN32_DLLDEFS)
add_definitions(-DLIBRAW_WIN32_UNICODEPATHS)
endif()
include_directories(${CMAKE_BINARY_DIR}/core/libs/rawengine/libraw/
......
** LibRaw: Raw images processing library **
Copyright (C) 2008-2019 LibRaw LLC (http://www.libraw.org, info@libraw.org)
Copyright (C) 2008-2020 LibRaw LLC (http://www.libraw.org, info@libraw.org)
LibRaw is free software; you can redistribute it and/or modify
it under the terms of the one of two licenses as you choose:
......
2019-10-25 Alex Tutubalin <lexa@lexa.ru>
2020-05-07 Alex Tutubalin <lexa@lexa.ru>
* Libraw public snapshot 201910:
* LibRaw 0.20-Beta1
== 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 changed')
== Camera support (+41, 1113 total) ==
== Camera support (+59, 1131 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, Osmo Action
FujiFilm GFX 100, X-A7, X-Pro3
GoPro Fusion, HERO5, HERO6, HERO7
FujiFilm GFX 100, X-A7, X-Pro3, X100V, X-T4, 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
Olympus TG-6, E-M5 Mark III.
Panasonic DC-FZ1000 II, DC-G90, DC-S1, DC-S1R, DC-TZ95
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, ILCE-6100, ILCE-6600, RX0 II, RX100 VII
Sony A7R IV, A9 II, ILCE-6100, ILCE-6600, RX0 II, RX100 VII
Zenit M
and multiple smartphones (the tested ones are listed in LibRaw::cameraList)
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
......@@ -31,53 +37,97 @@ and multiple smartphones (the tested ones are listed in LibRaw::cameraList)
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
a) without postprocessing functions (dcraw_process() and called function)
b) without postprocessing and LibRaw::raw2image() call (and called function).
* It is possible to build LibRaw
a)without postprocessing functions (dcraw_process() and called function)
b)without postprocessing and LibRaw::raw2image() call (and called function).
It may be useful to reduce library memory/code footprint.
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).
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_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.
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.
LibRaw_cameramaker_index table, ensuring that the numbers assigned to
vendors that are already known to LibRaw will not change.
== DNG frame selection ==
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.
- 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.
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
......@@ -95,17 +145,26 @@ are already known to LibRaw will not change.
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.
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.
* 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
* Add support for zlib during configure
* Fixed multiple problems found by OSS-Fuzz
* Lots of changes in imgdata.makernotes (hope someone will document it)
......
### LibRaw-201910 snapshot note:
When upgrading from previous snapshot (201903) use usual git pull.
If you're still using older master branch you need to update via git reset:
~~~
git fetch
git reset origin/master
~~~
# LibRaw
### Library for reading and processing of RAW digicam images
......@@ -20,7 +11,7 @@ RAW conversion.
The library is intended for embedding in RAW converters, data analyzers, and
other programs using RAW files as the initial data.
LibRaw library, Copyright &copy; 2008-2019 LibRaw LLC (info@libraw.org)
LibRaw library, Copyright &copy; 2008-2020 LibRaw LLC (info@libraw.org)
The library includes source code from
dcraw.c, Dave Coffin's raw photo decoder
......
/*
Copyright 2008-2019 LibRaw LLC (info@libraw.org)
Copyright 2008-2020 LibRaw LLC (info@libraw.org)
* This file is provided for compatibility w/ old build scripts/tools:
* It includes multiple separate files that should be built separately
......
/* -*- C++ -*-
* Copyright 2019 LibRaw LLC (info@libraw.org)
* Copyright 2020 LibRaw LLC (info@libraw.org)
*
LibRaw is free software; you can redistribute it and/or modify
......@@ -39,6 +39,8 @@
#define is_0x927c 0 /* most cameras */
#define is_0xc634 2 /* Adobe DNG, Sony SR2, Pentax */
#define ilm imgdata.lens.makernotes
#define icWBC imgdata.color.WB_Coeffs
#define icWBCCTC imgdata.color.WBCT_Coeffs
#define imCanon imgdata.makernotes.canon
#define imFuji imgdata.makernotes.fuji
#define imHassy imgdata.makernotes.hasselblad
......@@ -49,6 +51,8 @@
#define imPentax imgdata.makernotes.pentax
#define imSamsung imgdata.makernotes.samsung
#define imSony imgdata.makernotes.sony
#define imCommon imgdata.makernotes.common
#define ph1_bits(n) ph1_bithuff(n, 0)
#define ph1_huff(h) ph1_bithuff(*h, h + 1)
......
/*
Copyright 2008-2019 LibRaw LLC (info@libraw.org)
Copyright 2008-2020 LibRaw LLC (info@libraw.org)
* This file is provided for compatibility w/ old build scripts/tools:
* It includes multiple separate files that should be built separately
......
/* -*- C++ -*-
* Copyright 2019 LibRaw LLC (info@libraw.org)
* Copyright 2020 LibRaw LLC (info@libraw.org)
*
LibRaw is free software; you can redistribute it and/or modify
......
/*
Copyright 2008-2019 LibRaw LLC (info@libraw.org)
Copyright 2008-2020 LibRaw LLC (info@libraw.org)
LibRaw is free software; you can redistribute it and/or modify
it under the terms of the one of two licenses as you choose:
......@@ -165,6 +165,13 @@ static float fMAX(float a, float b) { return MAX(a, b); }
3 G R G R G R 3 B G B G B G 3 R G R G R G 3 G B G B G B
*/
// _RGBG means R, G1, B, G2 sequence
#define GRBG_2_RGBG(q) (q ^ (q >> 1) ^ 1)
#define RGGB_2_RGBG(q) (q ^ (q >> 1))
#define BG2RG1_2_RGBG(q) (q ^ 2)
#define GRGB_2_RGBG(q) (q ^ 1)
#define RBGG_2_RGBG(q) ((q >> 1) | ((q & 1) << 1))
#define RAWINDEX(row, col) ((row)*raw_width + (col))
#define RAW(row, col) raw_image[(row)*raw_width + (col)]
#define BAYER(row, col) \
......
/* -*- C++ -*-
* Copyright 2019 LibRaw LLC (info@libraw.org)
* Copyright 2020 LibRaw LLC (info@libraw.org)
*
LibRaw is free software; you can redistribute it and/or modify
......
/* -*- C++ -*-
* File: internal/libraw_cameraids.h
* Copyright 2008-2020 LibRaw LLC (info@libraw.org)
* Created: Sat Aug 17, 2020
LibRaw is free software; you can redistribute it and/or modify
it under the terms of the one of two licenses as you choose:
1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
(See file LICENSE.LGPL provided in LibRaw distribution archive for details).
2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
(See file LICENSE.CDDL provided in LibRaw distribution archive for details).
*/
#ifndef LIBRAW_CONST_H
#define LIBRAW_CONST_H
#define CanonID_EOS_M50 0x00000412ULL
#define CanonID_EOS_M6_Mark_II 0x00000811ULL
#define CanonID_EOS_M200 0x00000812ULL
#define CanonID_EOS_D30 0x01140000ULL
#define CanonID_EOS_D60 0x01668000ULL
#define CanonID_EOS_M3 0x03740000ULL
#define CanonID_EOS_M10 0x03840000ULL
#define CanonID_EOS_M5 0x03940000ULL
#define CanonID_EOS_M100 0x03980000ULL
#define CanonID_EOS_M6 0x04070000ULL
#define CanonID_EOS_1D (0x80000000ULL + 0x001ULL)
#define CanonID_EOS_1DS (0x80000000ULL + 0x167ULL)
#define CanonID_EOS_10D (0x80000000ULL + 0x168ULL)
#define CanonID_EOS_1D_Mark_III (0x80000000ULL + 0x169ULL)
#define CanonID_EOS_300D (0x80000000ULL + 0x170ULL)
#define CanonID_EOS_1D_Mark_II (0x80000000ULL + 0x174ULL)
#define CanonID_EOS_20D (0x80000000ULL + 0x175ULL)
#define CanonID_EOS_450D (0x80000000ULL + 0x176ULL)
#define CanonID_EOS_1Ds_Mark_II (0x80000000ULL + 0x188ULL)
#define CanonID_EOS_350D (0x80000000ULL + 0x189ULL)
#define CanonID_EOS_40D (0x80000000ULL + 0x190ULL)
#define CanonID_EOS_5D (0x80000000ULL + 0x213ULL)
#define CanonID_EOS_1Ds_Mark_III (0x80000000ULL + 0x215ULL)
#define CanonID_EOS_5D_Mark_II (0x80000000ULL + 0x218ULL)
#define CanonID_EOS_1D_Mark_II_N (0x80000000ULL + 0x232ULL)
#define CanonID_EOS_30D (0x80000000ULL + 0x234ULL)
#define CanonID_EOS_400D (0x80000000ULL + 0x236ULL)
#define CanonID_EOS_7D (0x80000000ULL + 0x250ULL)
#define CanonID_EOS_500D (0x80000000ULL + 0x252ULL)
#define CanonID_EOS_1000D (0x80000000ULL + 0x254ULL)
#define CanonID_EOS_50D (0x80000000ULL + 0x261ULL)
#define CanonID_EOS_1D_X (0x80000000ULL + 0x269ULL)
#define CanonID_EOS_550D (0x80000000ULL + 0x270ULL)
#define CanonID_EOS_1D_Mark_IV (0x80000000ULL + 0x281ULL)
#define CanonID_EOS_5D_Mark_III (0x80000000ULL + 0x285ULL)
#define CanonID_EOS_600D (0x80000000ULL + 0x286ULL)
#define CanonID_EOS_60D (0x80000000ULL + 0x287ULL)
#define CanonID_EOS_1100D (0x80000000ULL + 0x288ULL)
#define CanonID_EOS_7D_Mark_II (0x80000000ULL + 0x289ULL)
#define CanonID_EOS_650D (0x80000000ULL + 0x301ULL)
#define CanonID_EOS_6D (0x80000000ULL + 0x302ULL)
#define CanonID_EOS_1D_C (0x80000000ULL + 0x324ULL)
#define CanonID_EOS_70D (0x80000000ULL + 0x325ULL)
#define CanonID_EOS_700D (0x80000000ULL + 0x326ULL)
#define CanonID_EOS_1200D (0x80000000ULL + 0x327ULL)
#define CanonID_EOS_1D_X_Mark_II (0x80000000ULL + 0x328ULL)
#define CanonID_EOS_M (0x80000000ULL + 0x331ULL)
#define CanonID_EOS_100D (0x80000000ULL + 0x346ULL)
#define CanonID_EOS_760D (0x80000000ULL + 0x347ULL)
#define CanonID_EOS_5D_Mark_IV (0x80000000ULL + 0x349ULL)
#define CanonID_EOS_80D (0x80000000ULL + 0x350ULL)
#define CanonID_EOS_M2 (0x80000000ULL + 0x355ULL)
#define CanonID_EOS_5DS (0x80000000ULL + 0x382ULL)
#define CanonID_EOS_750D (0x80000000ULL + 0x393ULL)
#define CanonID_EOS_5DS_R (0x80000000ULL + 0x401ULL)
#define CanonID_EOS_1300D (0x80000000ULL + 0x404ULL)
#define CanonID_EOS_800D (0x80000000ULL + 0x405ULL)
#define CanonID_EOS_6D_Mark_II (0x80000000ULL + 0x406ULL)
#define CanonID_EOS_77D (0x80000000ULL + 0x408ULL)
#define CanonID_EOS_200D (0x80000000ULL + 0x417ULL)
#define CanonID_EOS_3000D (0x80000000ULL + 0x422ULL)
#define CanonID_EOS_R (0x80000000ULL + 0x424ULL)
#define CanonID_EOS_1D_X_Mark_III (0x80000000ULL + 0x428ULL)
#define CanonID_EOS_1500D (0x80000000ULL + 0x432ULL)
#define CanonID_EOS_RP (0x80000000ULL + 0x433ULL)
#define CanonID_EOS_250D (0x80000000ULL + 0x436ULL)
#define CanonID_EOS_90D (0x80000000ULL + 0x437ULL)
// CanonID_EOS_D2000C after Canon's TIFF2CR2 convertor:
#define CanonID_EOS_D2000C (0x80000000ULL + 0x520ULL)
// CanonID_EOS_D6000C id after Canon's TIFF2CR2 convertor:
#define CanonID_EOS_D6000C (0x80000000ULL + 0x560ULL)
#define OlyID_str2hex(str) ((unsigned long)str[0]<<32 | str[1]<<24 | str[2]<<16 | str[3]<<8 | str[4])
#define OlyID_E_20 OlyID_str2hex("D4029")
#define OlyID_E_1 OlyID_str2hex("D4040")
#define OlyID_E_300 OlyID_str2hex("D4041")
#define OlyID_SP_550UZ OlyID_str2hex("D4321")
#define OlyID_SP_510UZ OlyID_str2hex("D4322")
#define OlyID_SP_560UZ OlyID_str2hex("D4355")
#define OlyID_SP_570UZ OlyID_str2hex("D4364")
#define OlyID_SP_565UZ OlyID_str2hex("D4374")
#define OlyID_XZ_1 OlyID_str2hex("D4401")
#define OlyID_XZ_2 OlyID_str2hex("D4531")
#define OlyID_XZ_10 OlyID_str2hex("D4546")
#define OlyID_STYLUS_1 OlyID_str2hex("D4572")
#define OlyID_SH_2 OlyID_str2hex("D4585")
#define OlyID_TG_4 OlyID_str2hex("D4586")
#define OlyID_TG_5 OlyID_str2hex("D4593")
#define OlyID_TG_6 OlyID_str2hex("D4603")
#define OlyID_E_10 OlyID_str2hex("D4842")
#define OlyID_AIR_A01 OlyID_str2hex("K0055")
#define OlyID_NORMA OlyID_str2hex("NORMA")
#define OlyID_E_330 OlyID_str2hex("S0003")
#define OlyID_E_500 OlyID_str2hex("S0004")
#define OlyID_E_400 OlyID_str2hex("S0009")
#define OlyID_E_510 OlyID_str2hex("S0010")
#define OlyID_E_3 OlyID_str2hex("S0011")
#define OlyID_E_410 OlyID_str2hex("S0013")
#define OlyID_E_420 OlyID_str2hex("S0016")
#define OlyID_E_30 OlyID_str2hex("S0017")
#define OlyID_E_520 OlyID_str2hex("S0018")
#define OlyID_E_P1 OlyID_str2hex("S0019")
#define OlyID_E_620 OlyID_str2hex("S0023")
#define OlyID_E_P2 OlyID_str2hex("S0026")
#define OlyID_E_PL1 OlyID_str2hex("S0027")
#define OlyID_E_450 OlyID_str2hex("S0029")
#define OlyID_E_600 OlyID_str2hex("S0030")
#define OlyID_E_P3 OlyID_str2hex("S0032")
#define OlyID_E_5 OlyID_str2hex("S0033")
#define OlyID_E_PL2 OlyID_str2hex("S0034")
#define OlyID_E_M5 OlyID_str2hex("S0036")
#define OlyID_E_PL3 OlyID_str2hex("S0038")
#define OlyID_E_PM1 OlyID_str2hex("S0039")
#define OlyID_E_PL1s OlyID_str2hex("S0040")
#define OlyID_E_PL5 OlyID_str2hex("S0042")
#define OlyID_E_PM2 OlyID_str2hex("S0043")
#define OlyID_E_P5 OlyID_str2hex("S0044")
#define OlyID_E_PL6 OlyID_str2hex("S0045")
#define OlyID_E_PL7 OlyID_str2hex("S0046")
#define OlyID_E_M1 OlyID_str2hex("S0047")
#define OlyID_E_M10 OlyID_str2hex("S0051")
#define OlyID_E_M5_Mark_II OlyID_str2hex("S0052")
#define OlyID_E_M10_Mark_II OlyID_str2hex("S0059")
#define OlyID_PEN_F OlyID_str2hex("S0061")
#define OlyID_E_PL8 OlyID_str2hex("S0065")
#define OlyID_E_M1_Mark_II OlyID_str2hex("S0067")
#define OlyID_E_M10_Mark_III OlyID_str2hex("S0068")
#define OlyID_E_PL9 OlyID_str2hex("S0076")
#define OlyID_E_M1X OlyID_str2hex("S0080")
#define OlyID_E_PL10 OlyID_str2hex("S0085")
#define OlyID_E_M5_Mark_III OlyID_str2hex("S0089")
#define OlyID_E_M1_Mark_III OlyID_str2hex("S0092")
#define OlyID_C_3030Z OlyID_str2hex("SX351")
#define OlyID_C_5050Z OlyID_str2hex("SX558")
#define OlyID_C_350Z OlyID_str2hex("SX751")
#define OlyID_C_740UZ OlyID_str2hex("SX754")
#define OlyID_C_5060WZ OlyID_str2hex("SX756")
#define OlyID_C_8080WZ OlyID_str2hex("SX757")
#define OlyID_C_770UZ OlyID_str2hex("SX772")
#define OlyID_C_7070WZ OlyID_str2hex("SX851")
#define OlyID_C_7000Z OlyID_str2hex("SX852")
#define OlyID_SP_500UZ OlyID_str2hex("SX853")
#define OlyID_SP_310 OlyID_str2hex("SX854")
#define OlyID_SP_350 OlyID_str2hex("SX855")
#define OlyID_SP_320 OlyID_str2hex("SX873")
#define PentaxID_Optio_S 0x1296cULL
#define PentaxID_Optio_S_V101 0x12971ULL
#define PentaxID_staristD 0x12994ULL
#define PentaxID_Optio_33WR 0x129c6ULL
#define PentaxID_Optio_S4 0x129d5ULL
#define PentaxID_Optio_750Z 0x12a66ULL
#define PentaxID_staristDS 0x12aa2ULL
#define PentaxID_staristDL 0x12b1aULL
#define PentaxID_staristDS2 0x12b60ULL
#define PentaxID_GX_1S 0x12b62ULL
#define PentaxID_staristDL2 0x12b7eULL
#define PentaxID_GX_1L 0x12b80ULL
#define PentaxID_K100D 0x12b9cULL
#define PentaxID_K110D 0x12b9dULL
#define PentaxID_K100D_Super 0x12ba2ULL
#define PentaxID_K10D 0x12c1eULL
#define PentaxID_GX10 0x12c20ULL
#define PentaxID_K20D 0x12cd2ULL
#define PentaxID_GX20 0x12cd4ULL
#define PentaxID_K200D 0x12cfaULL
#define PentaxID_K2000 0x12d72ULL
#define PentaxID_K_m 0x12d73ULL
#define PentaxID_K_7 0x12db8ULL
#define PentaxID_K_x 0x12dfeULL
#define PentaxID_645D 0x12e08ULL
#define PentaxID_K_r 0x12e6cULL
#define PentaxID_K_5 0x12e76ULL
#define PentaxID_Q 0x12ee4ULL
#define PentaxID_K_01 0x12ef8ULL
#define PentaxID_K_30 0x12f52ULL
#define PentaxID_Q10 0x12f66ULL
#define PentaxID_K_5_II 0x12f70ULL
#define PentaxID_K_5_II_s 0x12f71ULL
#define PentaxID_Q7 0x12f7aULL
#define PentaxID_MX_1 0x12f84ULL
#define PentaxID_K_50 0x12fb6ULL
#define PentaxID_K_3 0x12fc0ULL
#define PentaxID_K_500 0x12fcaULL
#define PentaxID_645Z 0x13010ULL
#define PentaxID_K_S1 0x1301aULL
#define PentaxID_K_S2 0x13024ULL
#define PentaxID_Q_S1 0x1302eULL
#define PentaxID_K_1 0x13092ULL
#define PentaxID_K_3_II 0x1309cULL
#define PentaxID_GR_III 0x1320eULL
#define PentaxID_K_70 0x13222ULL
#define PentaxID_KP 0x1322cULL
#define PentaxID_K_1_Mark_II 0x13240ULL
#define SonyID_DSC_R1 0x002ULL
#define SonyID_DSLR_A100 0x100ULL
#define SonyID_DSLR_A900 0x101ULL
#define SonyID_DSLR_A700 0x102ULL
#define SonyID_DSLR_A200 0x103ULL
#define SonyID_DSLR_A350 0x104ULL
#define SonyID_DSLR_A300 0x105ULL
#define SonyID_DSLR_A900_APSC 0x106ULL
#define SonyID_DSLR_A380 0x107ULL
#define SonyID_DSLR_A330 0x108ULL
#define SonyID_DSLR_A230 0x109ULL
#define SonyID_DSLR_A290 0x10aULL
#define SonyID_DSLR_A850 0x10dULL
#define SonyID_DSLR_A850_APSC 0x10eULL
#define SonyID_DSLR_A550 0x111ULL
#define SonyID_DSLR_A500 0x112ULL
#define SonyID_DSLR_A450 0x113ULL
#define SonyID_NEX_5 0x116ULL
#define SonyID_NEX_3 0x117ULL
#define SonyID_SLT_A33 0x118ULL
#define SonyID_SLT_A55 0x119ULL
#define SonyID_DSLR_A560 0x11aULL
#define SonyID_DSLR_A580 0x11bULL
#define SonyID_NEX_C3 0x11cULL
#define SonyID_SLT_A35 0x11dULL
#define SonyID_SLT_A65 0x11eULL
#define SonyID_SLT_A77 0x11fULL
#define SonyID_NEX_5N 0x120ULL
#define SonyID_NEX_7 0x121ULL
#define SonyID_NEX_VG20 0x122ULL
#define SonyID_SLT_A37 0x123ULL
#define SonyID_SLT_A57 0x124ULL
#define SonyID_NEX_F3 0x125ULL
#define SonyID_SLT_A99 0x126ULL
#define SonyID_NEX_6 0x127ULL
#define SonyID_NEX_5R 0x128ULL
#define SonyID_DSC_RX100 0x129ULL
#define SonyID_DSC_RX1 0x12aULL
#define SonyID_NEX_VG900 0x12bULL
#define SonyID_NEX_VG30 0x12cULL
#define SonyID_ILCE_3000 0x12eULL
#define SonyID_SLT_A58 0x12fULL