Merge branch 'Exiv2:main' into TestVideoData

main
Mohamed Ali Chebbi 2 years ago committed by GitHub
commit 6690e2e8f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,68 @@
name: On PRs - meson
on: pull_request
concurrency:
group: ${{github.workflow}}-${{github.head_ref}}
cancel-in-progress: true
jobs:
Ubuntu:
runs-on: ubuntu-20.04
name: Linux-GCC${{matrix.cxx}}-${{matrix.deps}}
strategy:
matrix:
cxx: ['7', '8', '9']
deps: ['forcefallback', 'default']
type: ['shared', 'static']
steps:
- uses: actions/checkout@v3
- name: Install packages
run: |
sudo apt install -y g++-${{matrix.cxx}}
python3 -m pip install meson ninja
- name: Sanity Checks
run: |
env CXX=g++-${{matrix.cxx}} meson setup "${{github.workspace}}/build" --wrap-mode=${{matrix.deps}} -Ddefault_library=${{matrix.type}}
meson compile -C "${{github.workspace}}/build"
VisualStudio:
runs-on: windows-latest
name: MSVC-${{matrix.deps}}
strategy:
matrix:
deps: ['forcefallback', 'default']
type: ['shared', 'static']
steps:
- uses: actions/checkout@v3
- name: Install packages
run: |
python -m pip install meson ninja
- uses: ilammy/msvc-dev-cmd@v1
- name: Sanity Checks
run: |
meson setup "${{github.workspace}}/build" --wrap-mode=${{matrix.deps}} -Ddefault_library=${{matrix.type}}
meson compile -C "${{github.workspace}}/build"
MacOS:
runs-on: macos-latest
name: macOS-${{matrix.deps}}
strategy:
matrix:
deps: ['forcefallback', 'default']
type: ['shared', 'static']
steps:
- uses: actions/checkout@v3
- name: Install packages
run: |
python3 -m pip install meson ninja
- name: Compile
run: |
meson setup "${{github.workspace}}/build" --wrap-mode=${{matrix.deps}} -Ddefault_library=${{matrix.type}}
meson compile -C "${{github.workspace}}/build"

1
.gitignore vendored

@ -28,3 +28,4 @@ contrib/vms/.vagrant
CMakeUserPresets.json
*cppcheck*
subprojects/packagecache

@ -0,0 +1,10 @@
meson build system
This is a basic meson.build file intended to be used by meson projects that use
WrapDB: https://github.com/mesonbuild/wrapdb
This can also be used as a test playground to test various options not exposed
by the CMake build, eg: iconv and intl on Windows.
It is currently incomplete. Tests are not implemented yet. The library and
executable are.

@ -35,12 +35,6 @@
#define EXV_ICONV_CONST
#endif
// Define if you have the mmap function.
#cmakedefine EXV_HAVE_MMAP
// Define if you have the munmap function.
#cmakedefine EXV_HAVE_MUNMAP
// Define if you have the zlib library.
#cmakedefine EXV_HAVE_LIBZ

@ -23,8 +23,6 @@ set(EXV_HAVE_ICONV ${ICONV_FOUND})
set(EXV_HAVE_LIBZ ${ZLIB_FOUND})
set(EXV_HAVE_BROTLI ${BROTLI_FOUND})
check_cxx_symbol_exists(mmap sys/mman.h EXV_HAVE_MMAP )
check_cxx_symbol_exists(munmap sys/mman.h EXV_HAVE_MUNMAP )
check_cxx_symbol_exists(strerror_r string.h EXV_HAVE_STRERROR_R )
check_cxx_source_compiles( "
@ -36,10 +34,6 @@ int main() {
return 0;
}" EXV_STRERROR_R_CHAR_P )
check_include_file_cxx( "libproc.h" EXV_HAVE_LIBPROC_H )
check_include_file_cxx( "unistd.h" EXV_HAVE_UNISTD_H )
check_include_file_cxx( "sys/mman.h" EXV_HAVE_SYS_MMAN_H )
set(EXV_ENABLE_NLS ${EXIV2_ENABLE_NLS})
set(EXV_ENABLE_VIDEO ${EXIV2_ENABLE_VIDEO})

@ -0,0 +1,330 @@
project(
'exiv2',
'cpp',
version: '1.0.0',
meson_version: '>=0.49.0',
default_options: ['warning_level=1', 'cpp_std=c++17'],
)
cargs = []
cpp = meson.get_compiler('cpp')
if host_machine.system() == 'windows' and get_option('default_library') != 'static'
cargs += '-DEXIV2API=__declspec(dllexport)'
elif cpp.has_function_attribute('visibility')
cargs += '-DEXIV2API=__attribute__((visibility("default")))'
else
cargs += '-DEXIV2API='
endif
if host_machine.system() == 'windows'
if cpp.get_argument_syntax() == 'gcc'
add_project_arguments('-D__USE_MINGW_ANSI_STDIO', '-D__MINGW_USE_VC2005_COMPAT', language: 'cpp')
else
add_project_arguments('-DNOMINMAX', language: 'cpp')
endif
endif
exiv_api = configuration_data()
exiv_conf = configure_file(output: 'exiv2lib_export.h', configuration: exiv_api)
cdata = configuration_data()
cdata.set('EXV_PACKAGE_NAME', meson.project_name())
ver = meson.project_version().split('.')
cdata.set('PROJECT_VERSION_MAJOR', ver[0])
cdata.set('PROJECT_VERSION_MINOR', ver[1])
cdata.set('PROJECT_VERSION_PATCH', ver[2])
cdata.set('PROJECT_VERSION_TWEAK', 9)
cdata.set('PROJECT_VERSION', '@0@.@1@'.format(meson.project_version(), cdata.get('PROJECT_VERSION_TWEAK')))
cdata.set('EXV_PACKAGE_VERSION', '@0@.@1@'.format(meson.project_version(), cdata.get('PROJECT_VERSION_TWEAK')))
cdata.set('EXV_PACKAGE_STRING', '@0@ @1@'.format(meson.project_name(), cdata.get('PROJECT_VERSION')))
cdata.set('EXV_HAVE_MMAP', cpp.has_function('mmap'))
cdata.set('EXV_HAVE_MUNMAP', cpp.has_function('munmap'))
cdata.set('EXV_HAVE_STRERROR_R', cpp.has_function('strerror_r'))
cdata.set('EXV_STRERROR_R_CHAR_P', not cpp.compiles('#include <string.h>\nint strerror_r(int,char*,size_t);int main(){}'))
cdata.set('EXV_ENABLE_BMFF', get_option('bmff'))
cdata.set('EXV_HAVE_LENSDATA', get_option('lensdata'))
cdata.set('EXV_ENABLE_VIDEO', get_option('video'))
deps = []
deps += cpp.find_library('ws2_32', required: host_machine.system() == 'windows')
# This makes assumptions that the libcpp is the GNU one on Linux systems
if cpp.get_argument_syntax() == 'gcc' and cpp.version().version_compare('<9')
if host_machine.system() == 'linux'
deps += cpp.find_library('stdc++fs')
elif cpp.get_id() == 'clang'
deps += cpp.find_library('c++fs')
endif
endif
brotli_dep = dependency('libbrotlidec', disabler: true, required: false)
if brotli_dep.found()
deps += brotli_dep
endif
curl_dep = dependency('libcurl', disabler: true, required: get_option('curl'))
if curl_dep.found()
deps += curl_dep
endif
expat_dep = dependency('expat', disabler: true, required: get_option('xmp'))
if expat_dep.found()
deps += expat_dep
endif
inih_dep = dependency('INIReader', disabler: true, required: get_option('inih'))
if inih_dep.found()
deps += inih_dep
endif
zlib_dep = dependency('zlib', disabler: true, required: get_option('png'))
if zlib_dep.found()
deps += zlib_dep
endif
if meson.version().version_compare('>= 0.60')
iconv_dep = dependency('iconv', disabler: true, required: get_option('iconv'))
else
iconv_dep = dependency('', disabler: true, required: false)
endif
if iconv_dep.found()
deps += iconv_dep
endif
if meson.version().version_compare('>= 0.60')
intl_dep = dependency('intl', required: get_option('nls'))
else
intl_dep = dependency('', required: false)
endif
if intl_dep.found()
add_project_arguments('-DEXV_LOCALEDIR="@0@"'.format(get_option('prefix') / get_option('localedir')), language: 'cpp')
deps += intl_dep
endif
cdata.set('EXV_ENABLE_INIH', inih_dep.found())
cdata.set('EXV_HAVE_XMP_TOOLKIT', expat_dep.found())
cdata.set('EXV_HAVE_BROTLI', brotli_dep.found())
cdata.set('EXV_HAVE_ICONV', iconv_dep.found())
cdata.set('EXV_HAVE_LIBZ', zlib_dep.found())
cdata.set('EXV_USE_CURL', curl_dep.found())
cdata.set('EXV_ENABLE_NLS', intl_dep.found())
cdata.set('EXV_ENABLE_WEBREADY', curl_dep.found())
cfile = configure_file(
input: 'cmake/config.h.cmake',
output: 'exv_conf.h',
format: 'cmake@',
configuration: cdata,
)
base_lib = files(
'src/asfvideo.cpp',
'src/basicio.cpp',
'src/bmffimage.cpp',
'src/bmpimage.cpp',
'src/convert.cpp',
'src/cr2image.cpp',
'src/crwimage.cpp',
'src/datasets.cpp',
'src/easyaccess.cpp',
'src/epsimage.cpp',
'src/error.cpp',
'src/exif.cpp',
'src/futils.cpp',
'src/gifimage.cpp',
'src/http.cpp',
'src/image.cpp',
'src/iptc.cpp',
'src/jp2image.cpp',
'src/jpgimage.cpp',
'src/matroskavideo.cpp',
'src/metadatum.cpp',
'src/mrwimage.cpp',
'src/orfimage.cpp',
'src/pgfimage.cpp',
'src/photoshop.cpp',
'src/preview.cpp',
'src/properties.cpp',
'src/psdimage.cpp',
'src/quicktimevideo.cpp',
'src/rafimage.cpp',
'src/riffvideo.cpp',
'src/rw2image.cpp',
'src/tags.cpp',
'src/tgaimage.cpp',
'src/tiffimage.cpp',
'src/types.cpp',
'src/value.cpp',
'src/version.cpp',
'src/webpimage.cpp',
'src/xmp.cpp',
'src/xmpsidecar.cpp',
)
int_lib = files(
'src/canonmn_int.cpp',
'src/casiomn_int.cpp',
'src/cr2header_int.cpp',
'src/crwimage_int.cpp',
'src/fujimn_int.cpp',
'src/helper_functions.cpp',
'src/image_int.cpp',
'src/jp2image_int.cpp',
'src/makernote_int.cpp',
'src/minoltamn_int.cpp',
'src/nikonmn_int.cpp',
'src/olympusmn_int.cpp',
'src/orfimage_int.cpp',
'src/panasonicmn_int.cpp',
'src/pentaxmn_int.cpp',
'src/rw2image_int.cpp',
'src/samsungmn_int.cpp',
'src/sigmamn_int.cpp',
'src/sonymn_int.cpp',
'src/tags_int.cpp',
'src/tiffcomposite_int.cpp',
'src/tiffimage_int.cpp',
'src/tiffvisitor_int.cpp',
'src/utils.cpp',
)
headers = files(
'include/exiv2/basicio.hpp',
'include/exiv2/bmffimage.hpp',
'include/exiv2/bmpimage.hpp',
'include/exiv2/config.h',
'include/exiv2/convert.hpp',
'include/exiv2/cr2image.hpp',
'include/exiv2/crwimage.hpp',
'include/exiv2/datasets.hpp',
'include/exiv2/easyaccess.hpp',
'include/exiv2/epsimage.hpp',
'include/exiv2/error.hpp',
'include/exiv2/exif.hpp',
'include/exiv2/exiv2.hpp',
'include/exiv2/futils.hpp',
'include/exiv2/gifimage.hpp',
'include/exiv2/http.hpp',
'include/exiv2/image.hpp',
'include/exiv2/image_types.hpp',
'include/exiv2/iptc.hpp',
'include/exiv2/jp2image.hpp',
'include/exiv2/jpgimage.hpp',
'include/exiv2/metadatum.hpp',
'include/exiv2/mrwimage.hpp',
'include/exiv2/orfimage.hpp',
'include/exiv2/pgfimage.hpp',
'include/exiv2/photoshop.hpp',
'include/exiv2/pngimage.hpp',
'include/exiv2/preview.hpp',
'include/exiv2/properties.hpp',
'include/exiv2/psdimage.hpp',
'include/exiv2/rafimage.hpp',
'include/exiv2/rw2image.hpp',
'include/exiv2/slice.hpp',
'include/exiv2/tags.hpp',
'include/exiv2/tgaimage.hpp',
'include/exiv2/tiffimage.hpp',
'include/exiv2/types.hpp',
'include/exiv2/value.hpp',
'include/exiv2/version.hpp',
'include/exiv2/webpimage.hpp',
'include/exiv2/xmp_exiv2.hpp',
'include/exiv2/xmpsidecar.hpp',
)
headers += exiv_conf
headers += cfile
libinc = include_directories('include/exiv2')
xmp_lib = files()
if expat_dep.found()
libinc = include_directories('include/exiv2', 'xmpsdk/include')
xmp_lib = files(
'xmpsdk/src/ExpatAdapter.cpp',
'xmpsdk/src/MD5.cpp',
'xmpsdk/src/ParseRDF.cpp',
'xmpsdk/src/UnicodeConversions.cpp',
'xmpsdk/src/WXMPIterator.cpp',
'xmpsdk/src/WXMPMeta.cpp',
'xmpsdk/src/WXMPUtils.cpp',
'xmpsdk/src/XML_Node.cpp',
'xmpsdk/src/XMPCore_Impl.cpp',
'xmpsdk/src/XMPIterator.cpp',
'xmpsdk/src/XMPMeta-GetSet.cpp',
'xmpsdk/src/XMPMeta-Parse.cpp',
'xmpsdk/src/XMPMeta-Serialize.cpp',
'xmpsdk/src/XMPMeta.cpp',
'xmpsdk/src/XMPUtils-FileInfo.cpp',
'xmpsdk/src/XMPUtils.cpp',
)
endif
if zlib_dep.found()
base_lib += files('src/pngimage.cpp')
int_lib += files('src/pngchunk_int.cpp')
headers += files('include/exiv2/photoshop.hpp')
endif
install_man('man/man1/exiv2.1')
install_headers(
headers,
subdir: 'exiv2',
)
exiv2 = library(
'exiv2',
base_lib,
int_lib,
xmp_lib,
cpp_args: cargs,
version: meson.project_version(),
gnu_symbol_visibility: 'hidden',
dependencies: deps,
include_directories: libinc,
install: true,
)
dllapi = '-DEXIV2API='
if host_machine.system() == 'windows' and get_option('default_library') != 'static'
dllapi = '-DEXIV2API=__declspec(dllimport)'
endif
depinc = include_directories('include')
exiv2_dep = declare_dependency(
compile_args: dllapi,
dependencies: intl_dep,
include_directories: depinc,
link_with: exiv2,
)
pkg = import('pkgconfig')
pkg.generate(
exiv2,
description: 'Exif/IPTC/Xmp C++ metadata library and tools plus ICC Profiles, Previews and more.',
url: 'https://exiv2.org',
)
exiv2inc = include_directories('include/exiv2', 'src')
exiv2_sources = files(
'app/actions.cpp',
'app/app_utils.cpp',
'app/exiv2.cpp',
'app/getopt.cpp',
)
if host_machine.system() == 'windows'
exiv2_sources += files('app/wmain.cpp')
endif
executable(
'exiv2',
exiv2_sources,
include_directories: exiv2inc,
dependencies: exiv2_dep,
install: true,
)

@ -0,0 +1,43 @@
option('curl', type : 'feature',
description : 'USE Libcurl for HttpIo (WEBREADY)',
)
option('brotli', type : 'feature',
description : 'Build with brotli support (requires libbrotlidec)',
)
option('nls', type : 'feature',
description : 'Build native language support (requires gettext)',
)
option('png', type : 'feature',
description : 'Build with png support (requires libz)',
)
option('iconv', type : 'feature',
description : 'Build with iconv support',
)
option('inih', type : 'feature',
description : 'Build with INIReader support',
)
option('bmff', type : 'boolean',
value: true,
description : 'Build with BMFF support',
)
option('lensdata', type : 'boolean',
value: true,
description : 'Build including lens data',
)
option('video', type : 'boolean',
value: true,
description : 'Build support for video formats',
)
option('xmp', type : 'boolean',
value: true,
description : 'Build support for XMP',
)

@ -197,7 +197,7 @@ FileIo::~FileIo() {
int FileIo::munmap() {
int rc = 0;
if (p_->pMappedArea_) {
#if defined EXV_HAVE_MMAP && defined EXV_HAVE_MUNMAP
#if __has_include(<sys/mman.h>)
if (::munmap(p_->pMappedArea_, p_->mappedLength_) != 0) {
rc = 1;
}
@ -238,7 +238,7 @@ byte* FileIo::mmap(bool isWriteable) {
if (p_->isWriteable_ && p_->switchMode(Impl::opWrite) != 0) {
throw Error(ErrorCode::kerFailedToMapFileForReadWrite, path(), strError());
}
#if defined EXV_HAVE_MMAP && defined EXV_HAVE_MUNMAP
#if __has_include(<sys/mman.h>)
int prot = PROT_READ;
if (p_->isWriteable_) {
prot |= PROT_WRITE;

@ -366,12 +366,12 @@ constexpr TagDetails canonModelId[] = {{0x00000412, "EOS M50 / Kiss M"},
{0x80000417, "EOS Rebel SL2 / 200D / Kiss X9"},
{0x80000421, "EOS R5"},
{0x80000422, "EOS Rebel T100 / 4000D / 3000D"},
{0x80000424, "EOS R"},
{0x80000424, "EOS R / Ra"},
{0x80000428, "EOS-1D X Mark III"},
{0x80000432, "EOS Rebel T7 / 2000D / 1500D / Kiss X90"},
{0x80000433, "EOS RP"},
{0x80000435, "EOS Rebel T8i / 850D / Kiss X10i"},
{0x80000436, "EOS SL3 / 250D / Kiss X10"},
{0x80000436, "EOS Rebel SL3 / 250D / 200D Mark II / Kiss X10"},
{0x80000437, "EOS 90D"},
{0x80000450, "EOS R3"},
{0x80000453, "EOS R6"},
@ -379,8 +379,9 @@ constexpr TagDetails canonModelId[] = {{0x00000412, "EOS M50 / Kiss M"},
{0x80000465, "EOS R10"},
{0x80000467, "PowerShot ZOOM"},
{0x80000468, "EOS M50 Mark II / Kiss M2"},
{0x80000480, "EOS R50"},
{0x80000481, "EOS R6 Mark II"},
//{ (long int)tbd, "EOS Ra" },
{0x80000487, "EOS R8"},
{0x80000520, "EOS D2000C"},
{0x80000560, "EOS D6000C"}};
@ -1951,6 +1952,9 @@ constexpr TagDetails canonCsLensType[] = {{1, "Canon EF 50mm f/1.8"},
{61182, "Canon RF 1200mm F8L IS USM + RF1.4x"},
{61182, "Canon RF 1200mm F8L IS USM + RF2x"},
{61182, "Canon RF 15-30mm F4.5-6.3 IS STM"},
{61182, "Canon RF 135mm F1.8 L IS USM"},
{61182, "Canon RF 24-50mm F4.5-6.3 IS STM"},
{61182, "Canon RF-S 55-210mm F5-7.1 IS STM"},
{65535, "n/a"}};
//! FlashActivity, tag 0x001c
@ -2363,7 +2367,10 @@ constexpr TagDetails canonRFLensType[] = {{0, N_("n/a")},
{298, "Canon RF 1200mm F8L IS USM"},
{299, "Canon RF 1200mm F8L IS USM + RF1.4x"},
{300, "Canon RF 1200mm F8L IS USM + RF2x"},
{302, "Canon RF 15-30mm F4.5-6.3 IS STM"}};
{302, "Canon RF 15-30mm F4.5-6.3 IS STM"},
{303, "Canon RF 135mm F1.8 L IS USM"},
{304, "Canon RF 24-50mm F4.5-6.3 IS STM"},
{305, "Canon RF-S 55-210mm F5-7.1 IS STM"}};
// Canon File Info Tag
constexpr TagInfo CanonMakerNote::tagInfoFi_[] = {

@ -1586,7 +1586,7 @@ bool convertStringCharsetIconv(std::string& str, const char* from, const char* t
#ifdef WINICONV_CONST
auto inptr = (WINICONV_CONST char*)(str.c_str());
#else
auto inptr = const_cast<char*>(str.c_str());
auto inptr = (EXV_ICONV_CONST char*)(str.c_str());
#endif
size_t inbytesleft = str.length();
while (inbytesleft) {

@ -94,7 +94,7 @@ struct TagVocabulary {
by looking up a reference table.
*/
template <size_t N, const StringTagDetails (&array)[N]>
std::ostream& printTagString(std::ostream& os, const std::string value, const ExifData*) {
std::ostream& printTagString(std::ostream& os, const std::string& value, const ExifData*) {
auto td = Exiv2::find(array, value);
if (td) {
os << exvGettext(td->label_);

@ -352,11 +352,11 @@ void Exiv2::dumpLibraryInfo(std::ostream& os, const std::vector<std::regex>& key
have_strings = 1;
#endif
#ifdef EXV_HAVE_MMAP
#if __has_include(<sys/mman.h>)
have_mmap = 1;
#endif
#ifdef EXV_HAVE_MUNMAP
#if __has_include(<sys/mman.h>)
have_munmap = 1;
#endif

@ -0,0 +1,2 @@
/*/
!packagefiles/

@ -0,0 +1,12 @@
[wrap-file]
directory = expat-2.5.0
source_url = https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.xz
source_filename = expat-2.5.0.tar.bz2
source_hash = ef2420f0232c087801abf705e89ae65f6257df6b7931d37846a193ef2e8cdcbe
patch_filename = expat_2.5.0-1_patch.zip
patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.5.0-1/get_patch
patch_hash = 0d0d6e07ed21cf4892126a8270f5fd182012ab34b3ebe24932a2bef5ca608a61
wrapdb_version = 2.5.0-1
[provide]
expat = expat_dep

@ -0,0 +1,14 @@
[wrap-file]
directory = brotli-1.0.9
source_url = https://github.com/google/brotli/archive/v1.0.9.tar.gz
source_filename = v1.0.9.tar.gz
source_hash = f9e8d81d0405ba66d181529af42a3354f838c939095ff99930da6aa9cdf6fe46
patch_filename = google-brotli_1.0.9-1_patch.zip
patch_url = https://wrapdb.mesonbuild.com/v2/google-brotli_1.0.9-1/get_patch
patch_hash = 11135edf60bdf155b075cb6cf80dcc743bdcbfc5b8c48c327e717b279db447a1
[provide]
libbrotlicommon = brotli_common_dep
libbrotlidec = brotli_decoder_dep
libbrotlienc = brotli_encoder_dep

@ -0,0 +1,10 @@
[wrap-file]
directory = inih-r56
source_url = https://github.com/benhoyt/inih/archive/r56.tar.gz
source_filename = inih-r56.tar.gz
source_hash = 4f2ba6bd122d30281a8c7a4d5723b7af90b56aa828c0e88256d7fceda03a491a
wrapdb_version = r56-1
[provide]
inih = inih_dep
inireader = INIReader_dep

@ -0,0 +1,12 @@
[wrap-file]
directory = zlib-1.2.13
source_url = http://zlib.net/fossils/zlib-1.2.13.tar.gz
source_filename = zlib-1.2.13.tar.gz
source_hash = b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30
patch_filename = zlib_1.2.13-2_patch.zip
patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.2.13-2/get_patch
patch_hash = a7abea3ad65dc2c291ad5fbbf5355d0585a7f7b8c935d4a74335b8fe18684506
wrapdb_version = 1.2.13-2
[provide]
zlib = zlib_dep

@ -149,7 +149,7 @@ Exif.CanonCf.SetButtonFunction Short 1 1 1
Exif.CanonCf.SensorCleaning Short 1 0 0
Exif.CanonCf.SuperimposedDisplay Short 1 0 0
Exif.CanonCf.ShutterReleaseNoCFCard Short 1 0 0
Exif.Canon.ModelID Long 1 2147484708 EOS R
Exif.Canon.ModelID Long 1 2147484708 EOS R / Ra
Exif.Canon.ThumbnailImageValidArea Short 4 0 159 6 113 0 159 6 113
Exif.Canon.AFInfo Short 608 1216 13 143 1 6720 4480 6720 4480 468 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 441 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65535 1216 13 143 1 6720 4480 6720 4480 468 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 441 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65535
Exif.Canon.AFInfoSize SShort 1 1216 1216

Loading…
Cancel
Save