diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml index 50d6d546fa..9a5c2c2655 100644 --- a/.github/workflows/cifuzz.yml +++ b/.github/workflows/cifuzz.yml @@ -11,7 +11,7 @@ on: - "*.md" jobs: Fuzzing: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: Build Fuzzers id: build diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 1f8fc40e3b..a927fa9524 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -24,7 +24,7 @@ on: jobs: analyze: name: Analyze - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest strategy: fail-fast: false diff --git a/.github/workflows/on_PR_linux_fuzz.yml b/.github/workflows/on_PR_linux_fuzz.yml index 9195ae1c0f..d5a6c8c75b 100644 --- a/.github/workflows/on_PR_linux_fuzz.yml +++ b/.github/workflows/on_PR_linux_fuzz.yml @@ -16,8 +16,8 @@ on: jobs: Linux: - name: 'Ubuntu 22.04 - clang/libFuzzer' - runs-on: ubuntu-22.04 + name: 'Ubuntu 24.04 - clang/libFuzzer' + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/on_PR_meson.yaml b/.github/workflows/on_PR_meson.yaml index 3b110fe2d1..d859195d12 100644 --- a/.github/workflows/on_PR_meson.yaml +++ b/.github/workflows/on_PR_meson.yaml @@ -69,7 +69,7 @@ jobs: - name: Compile and Test run: | - meson setup "${{github.workspace}}/build" --wrap-mode=${{matrix.deps}} -Dwarning_level=3 -Dcpp_std=c++latest + meson setup "${{github.workspace}}/build" --wrap-mode=${{matrix.deps}} -Dwarning_level=3 -Dcpp_std=c++latest -Db_sanitize=address meson compile -C "${{github.workspace}}/build" --verbose meson test -C "${{github.workspace}}/build" --verbose VisualStudio-clang-cl: @@ -92,7 +92,7 @@ jobs: CC: clang-cl CXX: clang-cl run: | - meson setup "${{github.workspace}}/build" --wrap-mode=${{matrix.deps}} -Dwarning_level=3 -Dcpp_std=c++latest + meson setup "${{github.workspace}}/build" --wrap-mode=${{matrix.deps}} -Dwarning_level=3 -Dcpp_std=c++latest -Db_sanitize=address meson compile -C "${{github.workspace}}/build" --verbose meson test -C "${{github.workspace}}/build" --verbose MSYS2: @@ -137,21 +137,18 @@ jobs: - name: Install packages run: | - brew install curl brotli inih expat googletest - python3 -m pip install meson==0.54.1 ninja + brew install inih meson - name: Compile and Test run: | - meson setup "${{github.workspace}}/build" -Dauto_features=${{matrix.deps}} -Dwarning_level=3 - meson compile -C "${{github.workspace}}/build" - meson test -C "${{github.workspace}}/build" + meson setup "${{github.workspace}}/build" -Dauto_features=${{matrix.deps}} -Dwarning_level=3 -Dnls=disabled -Db_sanitize=address,undefined + meson compile -C "${{github.workspace}}/build" --verbose + meson test -C "${{github.workspace}}/build" --verbose FreeBSD: runs-on: ubuntu-latest - name: FreeBSD steps: - uses: actions/checkout@v4 - - name: FreeBSD - uses: vmactions/freebsd-vm@v1 + - uses: vmactions/freebsd-vm@v1 with: prepare: | pkg install -y cmake curl ninja meson gettext pkgconf googletest expat inih brotli @@ -161,7 +158,6 @@ jobs: meson test -C "${{github.workspace}}/build" --verbose Emscripten: runs-on: ubuntu-latest - name: Emscripten steps: - uses: actions/checkout@v4 - name: Install packages diff --git a/.github/workflows/on_push_clang_format.yml b/.github/workflows/on_push_clang_format.yml index 8cb952826f..3516d6804d 100644 --- a/.github/workflows/on_push_clang_format.yml +++ b/.github/workflows/on_push_clang_format.yml @@ -5,7 +5,7 @@ concurrency: on: [push, pull_request] jobs: clang-format-checking: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: DoozyX/clang-format-lint-action@v0.17 diff --git a/README.md b/README.md index 66eb8e8e31..73c856058c 100644 --- a/README.md +++ b/README.md @@ -730,13 +730,9 @@ int main(int argc, const char* argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(true); -#endif ... } ``` -The use of the _**thread unsafe function**_ Exiv2::enableBMFF(true) is discussed in [Support for BMFF files (e.g., CR3, HEIF, HEIC, AVIF, and JPEG XL)](#BMFF) [TOC](#TOC)
@@ -752,9 +748,6 @@ The exiv2 command-line program and sample applications call the following at the ```cpp Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(true); -#endif ``` [TOC](#TOC) @@ -898,15 +891,7 @@ This is discussed: [https://github.com/Exiv2/exiv2/issues/1230](https://github.c **Attention is drawn to the possibility that BMFF support may be the subject of patent rights. _Exiv2 shall not be held responsible for identifying any or all such patent rights. Exiv2 shall not be held responsible for the legal consequences of the use of this code_.** -Access to the BMFF code is guarded in two ways. Firstly, you have to build the library with the CMake option: `-DEXIV2_ENABLE_BMFF=ON`. Secondly, the application must enable BMFF support at run-time by calling the following function. - -```cpp -EXIV2API bool enableBMFF(bool enable); -``` - -The return value from `enableBMFF()` is true if the library has been build with BMFF support (CMake option -DEXIV2_ENABLE_BMFF=ON). - -Applications may wish to provide a preference setting to enable BMFF support and thereby place the responsibility for the use of this code with the user of the application. +Access to the BMFF code is guarded by the CMake option: `-DEXIV2_ENABLE_BMFF=ON` (enabled by default). [TOC](#TOC)
diff --git a/SECURITY.md b/SECURITY.md index 84afe6ff21..fe1014da23 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -7,6 +7,7 @@ | v0.28 | 2023-05-08 | v0.28.0 | 0.28.x | v0.28.0 | 2023-05-08 | v0.28.0 | | | | | | v0.28.1 | 2023-11-06 | v0.28.1 | | | | | | v0.28.2 | 2024-02-13 | v0.28.2 | +| | | | | v0.28.3 | 2024-07-08 | v0.28.3 | | v0.27 | 2018-12-20 | 0.27 | 0.27-maintenance | v0.27.0 | 2018-12-20 | v0.27.0 | | | | | | v0.27.1 | 2019-04-18 | v0.27.1 | | | | | | v0.27.2 | 2019-07-29 | v0.27.2 | diff --git a/app/exiv2.cpp b/app/exiv2.cpp index 591dcb96b0..030a563449 100644 --- a/app/exiv2.cpp +++ b/app/exiv2.cpp @@ -118,9 +118,6 @@ int main(int argc, char* const argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif #ifdef EXV_ENABLE_NLS setlocale(LC_ALL, ""); diff --git a/cmake/findDependencies.cmake b/cmake/findDependencies.cmake index 5e116730ef..ad6b8088cf 100644 --- a/cmake/findDependencies.cmake +++ b/cmake/findDependencies.cmake @@ -2,7 +2,7 @@ if (CONAN_AUTO_INSTALL) # Download automatically the cmake-conan integration file if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") - file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/master/conan.cmake" + file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/develop/conan.cmake" "${CMAKE_BINARY_DIR}/conan.cmake" TLS_VERIFY ON) endif() diff --git a/cmake/packaging.cmake b/cmake/packaging.cmake index 86e022c2de..6d2edac7e6 100644 --- a/cmake/packaging.cmake +++ b/cmake/packaging.cmake @@ -1,5 +1,5 @@ set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") -set(CPACK_PACKAGE_CONTACT "Luis Díaz Más ") +set(CPACK_PACKAGE_CONTACT "Luis Díaz Más ") set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) set(CPACK_SOURCE_GENERATOR TGZ) diff --git a/doc/ChangeLog b/doc/ChangeLog index d7881d5fda..99d0e6dc43 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,86 @@ +Changes from version 0.28.2 to 0.28.3 +------------------------------------- + +Release Notes: + +* https://github.com/Exiv2/exiv2/issues/3008 +* https://github.com/Exiv2/exiv2/milestone/14?closed=1 + +This release also fixes a low-severity security issue in asfvideo.cpp: + +* [CVE-2024-39695](https://github.com/Exiv2/exiv2/security/advisories/GHSA-38rv-8x93-pvrh): out-of-bounds read in AsfVideo::streamProperties. + +This vulnerability is in a new feature (ASF video) that was added in version 0.28.0, so earlier versions of Exiv2 are not affected. + +Changes from version 0.28.1 to 0.28.2 +------------------------------------- + +Release Notes: + +* https://github.com/Exiv2/exiv2/issues/2914 +* https://github.com/Exiv2/exiv2/milestone/13?closed=1 + +This release also fixes two low-severity security issues in quicktimevideo.cpp: + +* [CVE-2024-24826](https://github.com/Exiv2/exiv2/security/advisories/GHSA-g9xm-7538-mq8w): out-of-bounds read in QuickTimeVideo::NikonTagsDecoder. +* [CVE-2024-25112](https://github.com/Exiv2/exiv2/security/advisories/GHSA-crmj-qh74-2r36): denial of service due to unbounded recursion in QuickTimeVideo::multipleEntriesDecoder. + +These vulnerabilities are in a new feature (quicktime video) that was added in version 0.28.0, so earlier versions of Exiv2 are not affected. + +Changes from version 0.28.0 to 0.28.1 +------------------------------------- + +Release Notes: +https://github.com/Exiv2/exiv2/issues/2813 + +This release also fixes [CVE-2023-44398](https://github.com/Exiv2/exiv2/security/advisories/GHSA-hrw9-ggg3-3r4r), an out-of-bounds write in `BmffImage::brotliUncompress`. The vulnerability is in new code that was added in version 0.28.0, so earlier versions of Exiv2 are not affected. + +Changes from version 0.27.6 to 0.28.0 +------------------------------------- + +Release Notes: +https://github.com/Exiv2/exiv2/issues/2406#issuecomment-1529139799 + +Changes from version 0.27.6 to 0.27.7 +------------------------------------- + +Closed: +https://github.com/Exiv2/exiv2/milestone/11?closed=1 + +Open: +https://github.com/Exiv2/exiv2/milestone/11?open=1 + +Release Notes: +https://github.com/Exiv2/exiv2/pull/2567#issuecomment-1546701495 + +Changes from version 0.27.5 to 0.27.6 +------------------------------------- + +Closed: +https://github.com/Exiv2/exiv2/milestone/10?closed=1 + +Open: +https://github.com/Exiv2/exiv2/milestone/10?open=1 + +Release Notes: +https://github.com/Exiv2/exiv2/issues/2406#issuecomment-1383302378 + +Changes from version 0.27.4 to 0.27.5 +------------------------------------- + +Closed: +https://github.com/Exiv2/exiv2/milestone/9?closed=1 + +Open: +https://github.com/Exiv2/exiv2/milestone/9?open=1 + +Release Notes: +https://github.com/Exiv2/exiv2/issues/1018#issuecomment-948573657 + ++++++++++++++++++++++++++++++++++++++ +------------- History --------------- ++++++++++++++++++++++++++++++++++++++ + Changes from version 0.27.3 to 0.27.4 ------------------------------------- diff --git a/fuzz/fuzz-read-print-write.cpp b/fuzz/fuzz-read-print-write.cpp index 2dee1c23fe..aa42408cce 100644 --- a/fuzz/fuzz-read-print-write.cpp +++ b/fuzz/fuzz-read-print-write.cpp @@ -10,9 +10,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif try { Exiv2::DataBuf data_copy(data, size); @@ -21,16 +18,22 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { image->readMetadata(); for (auto& md : image->exifData()) { - md.print(); - md.print(&image->exifData()); + if (md.tagName().substr(0, 2) != "0x") { + md.print(); + md.print(&image->exifData()); + } } for (auto& md : image->iptcData()) { - md.print(); - md.print(&image->exifData()); + if (md.tagName().substr(0, 2) != "0x") { + md.print(); + md.print(&image->exifData()); + } } for (auto& md : image->xmpData()) { - md.print(); - md.print(&image->exifData()); + if (md.tagName().substr(0, 2) != "0x") { + md.print(); + md.print(&image->exifData()); + } } // Print to a std::ostringstream so that the fuzzer doesn't diff --git a/include/exiv2/bmffimage.hpp b/include/exiv2/bmffimage.hpp index 786f57201b..2af6789683 100644 --- a/include/exiv2/bmffimage.hpp +++ b/include/exiv2/bmffimage.hpp @@ -13,7 +13,7 @@ // ***************************************************************************** // namespace extensions namespace Exiv2 { -EXIV2API bool enableBMFF(bool enable = true); +[[deprecated]] EXIV2API bool enableBMFF(bool enable = true); } // namespace Exiv2 #ifdef EXV_ENABLE_BMFF diff --git a/meson.build b/meson.build index a9f02a3380..2534afc488 100644 --- a/meson.build +++ b/meson.build @@ -68,13 +68,12 @@ if brotli_dep.found() endif if get_option('webready') - curl_dep = dependency('libcurl', disabler: true, required: get_option('curl')) + curl_dep = dependency('libcurl', required: get_option('curl')) + web_dep = declare_dependency(dependencies: [curl_dep]) + deps += web_dep else - curl_dep = dependency('', disabler: true, required: false) -endif - -if curl_dep.found() - deps += curl_dep + web_dep = dependency('', disabler: true, required: false) + curl_dep = web_dep endif expat_dep = dependency('expat', disabler: true, required: get_option('xmp')) @@ -118,7 +117,7 @@ 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_ENABLE_WEBREADY', get_option('webready')) +cdata.set('EXV_ENABLE_WEBREADY', web_dep.found()) cdata.set('EXV_USE_CURL', curl_dep.found()) cdata.set('EXV_ENABLE_NLS', intl_dep.found()) cdata.set('EXV_ENABLE_FILESYSTEM', true) @@ -157,7 +156,7 @@ executable( samples = { 'addmoddel': [], - 'conntest': curl_dep, + 'conntest': web_dep, 'convert-test': [], 'easyaccess-test': [], 'exifcomment': [], diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 3e990fbddd..d2a17ca550 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -92,13 +92,11 @@ endif() # ****************************************************************************** # connection test application -add_executable(conntest conntest.cpp) -list(APPEND APPLICATIONS conntest) - if(EXIV2_ENABLE_WEBREADY) + add_executable(conntest conntest.cpp) + list(APPEND APPLICATIONS conntest) if(EXIV2_ENABLE_CURL) - target_include_directories(conntest SYSTEM PRIVATE ${CURL_INCLUDE_DIR}) - target_link_libraries(conntest PRIVATE ${CURL_LIBRARIES}) + target_link_libraries(conntest PRIVATE CURL::libcurl) endif() endif() diff --git a/samples/addmoddel.cpp b/samples/addmoddel.cpp index 272a83f8da..6da09d1067 100644 --- a/samples/addmoddel.cpp +++ b/samples/addmoddel.cpp @@ -10,9 +10,6 @@ int main(int argc, char* const argv[]) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/conntest.cpp b/samples/conntest.cpp index 58d5f35735..eb6eac14d2 100644 --- a/samples/conntest.cpp +++ b/samples/conntest.cpp @@ -75,9 +75,6 @@ void curlcon(const std::string& url, bool useHttp1_0 = false) { int main(int argc, const char** argv) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc < 2) { std::cout << "Usage: " << argv[0] << " url {-http1_0}" << std::endl; diff --git a/samples/convert-test.cpp b/samples/convert-test.cpp index fd82d1a917..85b60662e5 100644 --- a/samples/convert-test.cpp +++ b/samples/convert-test.cpp @@ -9,9 +9,6 @@ int main(int argc, char* const argv[]) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/easyaccess-test.cpp b/samples/easyaccess-test.cpp index 38d9fce9ad..59e04f7c2c 100644 --- a/samples/easyaccess-test.cpp +++ b/samples/easyaccess-test.cpp @@ -64,9 +64,6 @@ int main(int argc, char** argv) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc < 2) { int count = 0; diff --git a/samples/exifcomment.cpp b/samples/exifcomment.cpp index 7689c6b79a..f2043ff4b7 100644 --- a/samples/exifcomment.cpp +++ b/samples/exifcomment.cpp @@ -10,9 +10,6 @@ int main(int argc, char* const argv[]) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/exifdata-test.cpp b/samples/exifdata-test.cpp index b2a8fbc5ac..3de607af53 100644 --- a/samples/exifdata-test.cpp +++ b/samples/exifdata-test.cpp @@ -12,9 +12,6 @@ int main(int argc, char* const argv[]) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/exifdata.cpp b/samples/exifdata.cpp index b5a457fab4..c36836cc49 100644 --- a/samples/exifdata.cpp +++ b/samples/exifdata.cpp @@ -150,9 +150,6 @@ std::string formatXML(Exiv2::ExifData& exifData) { int main(int argc, const char* argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif format_t formats; formats["wolf"] = wolf; diff --git a/samples/exifprint.cpp b/samples/exifprint.cpp index 8848fae8c0..baad2cb051 100644 --- a/samples/exifprint.cpp +++ b/samples/exifprint.cpp @@ -16,9 +16,6 @@ int main(int argc, char* const argv[]) { setlocale(LC_CTYPE, ".utf8"); Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif const char* prog = argv[0]; if (argc == 1) { diff --git a/samples/exifvalue.cpp b/samples/exifvalue.cpp index a620e4246b..0a1dd5e664 100644 --- a/samples/exifvalue.cpp +++ b/samples/exifvalue.cpp @@ -8,9 +8,6 @@ int main(int argc, char* const argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 3) { std::cerr << "Usage: " << argv[0] << " file key\n"; diff --git a/samples/geotag.cpp b/samples/geotag.cpp index a263a6bfc0..8ccc52b7fe 100644 --- a/samples/geotag.cpp +++ b/samples/geotag.cpp @@ -690,9 +690,6 @@ bool mySort(const std::string& a, const std::string& b) { int main(int argc, const char* argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif int result = 0; const char* program = argv[0]; diff --git a/samples/getopt-test.cpp b/samples/getopt-test.cpp index 719755b47e..6ee3660446 100644 --- a/samples/getopt-test.cpp +++ b/samples/getopt-test.cpp @@ -73,9 +73,6 @@ class Params : public Util::Getopt { int main(int argc, char** const argv) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif int n; diff --git a/samples/ini-test.cpp b/samples/ini-test.cpp index 443121cd86..4812bc6b5d 100644 --- a/samples/ini-test.cpp +++ b/samples/ini-test.cpp @@ -16,9 +16,6 @@ Config loaded from : 'initest.ini' version=6, name=Bob Smith, email=bob@smith.co int main() { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif const char* ini = "ini-test.ini"; INIReader reader(ini); diff --git a/samples/iotest.cpp b/samples/iotest.cpp index c743e7ea45..4b2d40ed2a 100644 --- a/samples/iotest.cpp +++ b/samples/iotest.cpp @@ -18,9 +18,6 @@ int WriteReadSeek(BasicIo& io); int main(int argc, char* const argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif try { if (argc < 4 || argc > 6) { diff --git a/samples/iptceasy.cpp b/samples/iptceasy.cpp index 379b009580..cbae8495e8 100644 --- a/samples/iptceasy.cpp +++ b/samples/iptceasy.cpp @@ -8,9 +8,6 @@ int main(int argc, char* const argv[]) try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/iptcprint.cpp b/samples/iptcprint.cpp index 15b881feae..3c9191a941 100644 --- a/samples/iptcprint.cpp +++ b/samples/iptcprint.cpp @@ -8,9 +8,6 @@ int main(int argc, char* const argv[]) try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/iptctest.cpp b/samples/iptctest.cpp index b20af63a19..50a1698024 100644 --- a/samples/iptctest.cpp +++ b/samples/iptctest.cpp @@ -16,9 +16,6 @@ void processModify(const std::string& line, int num, IptcData& iptcData); int main(int argc, char* const argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif try { if (argc != 2) { diff --git a/samples/key-test.cpp b/samples/key-test.cpp index c081aa1b30..ec36731eef 100644 --- a/samples/key-test.cpp +++ b/samples/key-test.cpp @@ -9,9 +9,6 @@ using namespace Exiv2; int main() { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif int tc = 0; int rc = 0; diff --git a/samples/largeiptc-test.cpp b/samples/largeiptc-test.cpp index 7db0d91005..08f232c869 100644 --- a/samples/largeiptc-test.cpp +++ b/samples/largeiptc-test.cpp @@ -10,9 +10,6 @@ int main(int argc, char* const argv[]) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 3) { std::cout << "Usage: " << argv[0] << " image datafile\n"; diff --git a/samples/metacopy.cpp b/samples/metacopy.cpp index 52de2db10a..a69d5f1789 100644 --- a/samples/metacopy.cpp +++ b/samples/metacopy.cpp @@ -11,9 +11,6 @@ int main(int argc, char* const argv[]) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif // Handle command line arguments Params params; diff --git a/samples/mmap-test.cpp b/samples/mmap-test.cpp index 270c4aac60..c8df1e53f6 100644 --- a/samples/mmap-test.cpp +++ b/samples/mmap-test.cpp @@ -11,9 +11,6 @@ int main(int argc, char* const argv[]) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/mrwthumb.cpp b/samples/mrwthumb.cpp index 95b43ce43a..05b6f157f6 100644 --- a/samples/mrwthumb.cpp +++ b/samples/mrwthumb.cpp @@ -7,9 +7,6 @@ int main(int argc, char* const argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif try { if (argc != 2) { diff --git a/samples/path-test.cpp b/samples/path-test.cpp index cfbc4ddc6d..5046a7c49b 100644 --- a/samples/path-test.cpp +++ b/samples/path-test.cpp @@ -16,9 +16,6 @@ namespace fs = std::experimental::filesystem; int main(int argc, char* const argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/prevtest.cpp b/samples/prevtest.cpp index d843a13a6e..89d983ff60 100644 --- a/samples/prevtest.cpp +++ b/samples/prevtest.cpp @@ -8,9 +8,6 @@ int main(int argc, char* const argv[]) try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/remotetest.cpp b/samples/remotetest.cpp index 0ebfb891ab..291f4f7405 100644 --- a/samples/remotetest.cpp +++ b/samples/remotetest.cpp @@ -11,9 +11,6 @@ int main(int argc, char* const argv[]) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc < 2) { std::cout << "Usage: " << argv[0] << " file {--nocurl | --curl}\n\n"; diff --git a/samples/stringto-test.cpp b/samples/stringto-test.cpp index 01c7cb186d..5b1179a2a5 100644 --- a/samples/stringto-test.cpp +++ b/samples/stringto-test.cpp @@ -39,9 +39,6 @@ static constexpr const char* testcases[] = { int main() { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif std::cout << std::setfill(' '); diff --git a/samples/taglist.cpp b/samples/taglist.cpp index 261b3eb7f5..03049d0acc 100644 --- a/samples/taglist.cpp +++ b/samples/taglist.cpp @@ -9,9 +9,6 @@ using namespace Exiv2; int main(int argc, char* argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif int rc = EXIT_SUCCESS; std::ostringstream out; diff --git a/samples/tiff-test.cpp b/samples/tiff-test.cpp index 6f801ef998..6fec8fcbd6 100644 --- a/samples/tiff-test.cpp +++ b/samples/tiff-test.cpp @@ -19,9 +19,6 @@ int main(int argc, char* const argv[]) { try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/write-test.cpp b/samples/write-test.cpp index 16ef3baed7..2b38a05810 100644 --- a/samples/write-test.cpp +++ b/samples/write-test.cpp @@ -18,9 +18,6 @@ void exifPrint(const ExifData& exifData); int main(int argc, char* const argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif try { if (argc != 3) { diff --git a/samples/write2-test.cpp b/samples/write2-test.cpp index 90b2881af4..707aff188a 100644 --- a/samples/write2-test.cpp +++ b/samples/write2-test.cpp @@ -11,9 +11,6 @@ void print(const std::string& file); int main(int argc, char* const argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif try { if (argc != 2) { diff --git a/samples/xmpdump.cpp b/samples/xmpdump.cpp index 21a07d3ea1..5564c458c7 100644 --- a/samples/xmpdump.cpp +++ b/samples/xmpdump.cpp @@ -7,9 +7,6 @@ int main(int argc, char* const argv[]) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif try { if (argc != 2) { diff --git a/samples/xmpparse.cpp b/samples/xmpparse.cpp index 5dadf1d213..33b0eda217 100644 --- a/samples/xmpparse.cpp +++ b/samples/xmpparse.cpp @@ -7,9 +7,6 @@ int main(int argc, char* const argv[]) try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/xmpparser-test.cpp b/samples/xmpparser-test.cpp index 6be8d87b32..00da49bbfa 100644 --- a/samples/xmpparser-test.cpp +++ b/samples/xmpparser-test.cpp @@ -7,9 +7,6 @@ int main(int argc, char* const argv[]) try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif if (argc != 2) { std::cout << "Usage: " << argv[0] << " file\n"; diff --git a/samples/xmpprint.cpp b/samples/xmpprint.cpp index 698c7b9f5b..84a71da2a2 100644 --- a/samples/xmpprint.cpp +++ b/samples/xmpprint.cpp @@ -9,9 +9,6 @@ int main(int argc, char** argv) { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif try { if (argc != 2) { diff --git a/samples/xmpsample.cpp b/samples/xmpsample.cpp index e02b3f0684..a5b526815b 100644 --- a/samples/xmpsample.cpp +++ b/samples/xmpsample.cpp @@ -15,9 +15,6 @@ bool isEqual(float a, float b) { int main() try { Exiv2::XmpParser::initialize(); ::atexit(Exiv2::XmpParser::terminate); -#ifdef EXV_ENABLE_BMFF - Exiv2::enableBMFF(); -#endif // The XMP property container Exiv2::XmpData xmpData; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index eb8bfc438f..6b321bac94 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -227,8 +227,7 @@ target_include_directories(exiv2lib_int PUBLIC $size() >= io->tell() + GUID + QWORD) { - IdBuf_ = io->read(GUID); + io->readOrThrow(IdBuf_.data(), IdBuf_.size(), Exiv2::ErrorCode::kerCorruptedMetadata); size_ = readQWORDTag(io); if (size_ >= GUID + QWORD) @@ -291,7 +291,7 @@ void AsfVideo::decodeBlock() { void AsfVideo::decodeHeader() { DataBuf nbHeadersBuf(DWORD + 1); - io_->read(nbHeadersBuf.data(), DWORD); + io_->readOrThrow(nbHeadersBuf.data(), DWORD, Exiv2::ErrorCode::kerCorruptedMetadata); uint32_t nb_headers = Exiv2::getULong(nbHeadersBuf.data(), littleEndian); Internal::enforce(nb_headers < std::numeric_limits::max(), Exiv2::ErrorCode::kerCorruptedMetadata); @@ -353,7 +353,8 @@ void AsfVideo::DegradableJPEGMedia() { } void AsfVideo::streamProperties() { - DataBuf streamTypedBuf = io_->read(GUID); + DataBuf streamTypedBuf(GUID); + io_->readOrThrow(streamTypedBuf.data(), streamTypedBuf.size(), Exiv2::ErrorCode::kerCorruptedMetadata); enum class streamTypeInfo { Audio = 1, Video = 2 }; auto stream = static_cast(0); @@ -471,7 +472,8 @@ void AsfVideo::contentDescription() { } // AsfVideo::extendedContentDescription void AsfVideo::fileProperties() { - DataBuf FileIddBuf = io_->read(GUID); + DataBuf FileIddBuf(GUID); + io_->readOrThrow(FileIddBuf.data(), FileIddBuf.size(), Exiv2::ErrorCode::kerCorruptedMetadata); xmpData()["Xmp.video.FileID"] = GUIDTag(FileIddBuf.data()).to_string(); xmpData()["Xmp.video.FileLength"] = readQWORDTag(io_); xmpData()["Xmp.video.CreationDate"] = readQWORDTag(io_); diff --git a/src/bmffimage.cpp b/src/bmffimage.cpp index ac4ddd30db..eb39f65dd6 100644 --- a/src/bmffimage.cpp +++ b/src/bmffimage.cpp @@ -68,17 +68,12 @@ enum { // ***************************************************************************** // class member definitions -#ifndef EXV_ENABLE_BMFF namespace Exiv2 { bool enableBMFF(bool) { +#ifndef EXV_ENABLE_BMFF return false; } -} // namespace Exiv2 #else -namespace Exiv2 { -static bool enabled = false; -bool enableBMFF(bool enable) { - enabled = enable; return true; } @@ -791,9 +786,6 @@ Image::UniquePtr newBmffInstance(BasicIo::UniquePtr io, bool create) { } bool isBmffType(BasicIo& iIo, bool advance) { - if (!enabled) { - return false; - } const int32_t len = 12; byte buf[len]; iIo.read(buf, len); @@ -812,5 +804,5 @@ bool isBmffType(BasicIo& iIo, bool advance) { } return matched; } +#endif // EXV_ENABLE_BMFF } // namespace Exiv2 -#endif diff --git a/src/canonmn_int.cpp b/src/canonmn_int.cpp index c3efeea98c..b89e220bd2 100644 --- a/src/canonmn_int.cpp +++ b/src/canonmn_int.cpp @@ -490,7 +490,7 @@ constexpr TagInfo CanonMakerNote::tagInfo_[] = { {0x0009, "OwnerName", N_("Owner Name"), N_("Owner Name"), IfdId::canonId, SectionId::makerTags, asciiString, -1, printValue}, {0x000a, "0x000a", N_("0x000a"), N_("Unknown"), IfdId::canonId, SectionId::makerTags, unsignedLong, -1, - print0x000c}, + print0x000a}, {0x000c, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), IfdId::canonId, SectionId::makerTags, unsignedLong, -1, print0x000c}, {0x000d, "CameraInfo", N_("Camera Info"), N_("Camera info"), IfdId::canonId, SectionId::makerTags, unsignedShort, @@ -2811,7 +2811,7 @@ std::ostream& CanonMakerNote::print0x0008(std::ostream& os, const Value& value, return os << n.substr(0, n.length() - 4) << "-" << n.substr(n.length() - 4); } -std::ostream& CanonMakerNote::print0x000c(std::ostream& os, const Value& value, const ExifData*) { +std::ostream& CanonMakerNote::print0x000a(std::ostream& os, const Value& value, const ExifData*) { std::istringstream is(value.toString()); uint32_t l = 0; is >> l; @@ -2819,6 +2819,26 @@ std::ostream& CanonMakerNote::print0x000c(std::ostream& os, const Value& value, << std::setfill('0') << std::dec << (l & 0x0000ffff); } +std::ostream& CanonMakerNote::print0x000c(std::ostream& os, const Value& value, const ExifData* exifData) { + std::istringstream is(value.toString()); + + if (!exifData) { + return os << value; + } + + ExifKey key("Exif.Canon.ModelID"); + auto pos = exifData->findKey(key); + // if model is EOS D30 + if (pos != exifData->end() && pos->value().count() == 1 && pos->value().toInt64() == 0x01140000) { + uint32_t l = 0; + is >> l; + return os << std::setw(4) << std::setfill('0') << std::hex << ((l & 0xffff0000) >> 16) << std::setw(5) + << std::setfill('0') << std::dec << (l & 0x0000ffff); + } else { + return os << value; + } +} + std::ostream& CanonMakerNote::printCs0x0002(std::ostream& os, const Value& value, const ExifData*) { if (value.typeId() != unsignedShort || value.count() == 0) return os << value; diff --git a/src/canonmn_int.hpp b/src/canonmn_int.hpp index 2e137fe57c..63d764541c 100644 --- a/src/canonmn_int.hpp +++ b/src/canonmn_int.hpp @@ -103,6 +103,8 @@ class CanonMakerNote { static std::ostream& printFocalLength(std::ostream& os, const Value& value, const ExifData*); //! Print the image number static std::ostream& print0x0008(std::ostream& os, const Value& value, const ExifData*); + //! Print 0x000a + static std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*); //! Print the serial number of the camera static std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*); //! Self timer diff --git a/src/futils.cpp b/src/futils.cpp index 94629a3e30..5ddb10a752 100644 --- a/src/futils.cpp +++ b/src/futils.cpp @@ -11,6 +11,7 @@ // + standard includes #include #include +#include #include #include #include diff --git a/src/jpgimage.cpp b/src/jpgimage.cpp index 1d10e6599f..feb2e111ab 100644 --- a/src/jpgimage.cpp +++ b/src/jpgimage.cpp @@ -454,7 +454,9 @@ void JpegBase::printStructure(std::ostream& out, PrintStructureOption option, si } else if (bPrint) { const size_t start = 2; const size_t end = size > 34 ? 34 : size; - out << "| " << Internal::binaryToString(makeSlice(buf, start, end)); + out << "| "; + if (start < end) + out << Internal::binaryToString(makeSlice(buf, start, end)); if (signature == iccId_) { // extract the chunk information from the buffer // @@ -601,9 +603,11 @@ DataBuf JpegBase::readNextSegment(byte marker) { // Read the rest of the segment if not empty. DataBuf buf(size); - if (size > 2) { - io_->readOrThrow(buf.data(2), size - 2, ErrorCode::kerFailedToReadImageData); + if (size > 0) { std::copy(sizebuf.begin(), sizebuf.end(), buf.begin()); + if (size > 2) { + io_->readOrThrow(buf.data(2), size - 2, ErrorCode::kerFailedToReadImageData); + } } return buf; } diff --git a/src/nikonmn_int.cpp b/src/nikonmn_int.cpp index 7469f53d1e..40e8e5ae5b 100644 --- a/src/nikonmn_int.cpp +++ b/src/nikonmn_int.cpp @@ -3969,7 +3969,7 @@ std::ostream& Nikon3MakerNote::printLensId4ZMount(std::ostream& os, const Value& return os << "(" << value << ")"; } - // from https://github.com/exiftool/exiftool/blob/12.59/lib/Image/ExifTool/Nikon.pm#L5267 + // cf. https://github.com/exiftool/exiftool/blob/12.83/lib/Image/ExifTool/Nikon.pm#L5473 static constexpr struct lens { uint16_t l; const char* vendor; @@ -3998,7 +3998,7 @@ std::ostream& Nikon3MakerNote::printLensId4ZMount(std::ostream& os, const Value& {28, "Nikon", "Nikkor Z 100-400mm f/4.5-5.6 VR S"}, // 28 {29, "Nikon", "Nikkor Z 28mm f/2.8"}, // IB {30, "Nikon", "Nikkor Z 400mm f/2.8 TC VR S"}, // 28 - {31, "Nikon", "Nikkor Z 24-120 f/4"}, // 28 + {31, "Nikon", "Nikkor Z 24-120mm f/4 S"}, // 28 {32, "Nikon", "Nikkor Z 800mm f/6.3 VR S"}, // 28 {35, "Nikon", "Nikkor Z 28-75mm f/2.8"}, // IB {36, "Nikon", "Nikkor Z 400mm f/4.5 VR S"}, // IB @@ -4012,6 +4012,7 @@ std::ostream& Nikon3MakerNote::printLensId4ZMount(std::ostream& os, const Value& {44, "Nikon", "Nikkor Z 70-180mm f/2.8"}, {45, "Nikon", "Nikkor Z 600mm f/6.3 VR S"}, {46, "Nikon", "Nikkor Z 135mm f/1.8 S Plena"}, + {48, "Nikon", "Nikkor Z 28-400mm f/4-8 VR"}, {53251, "Sigma", "56mm F1.4 DC DN | C"}, {57346, "Tamron", "35-150mm F/2-2.8 Di III VXD"}, }; diff --git a/src/panasonicmn_int.cpp b/src/panasonicmn_int.cpp index eabc70cbae..726859f514 100644 --- a/src/panasonicmn_int.cpp +++ b/src/panasonicmn_int.cpp @@ -758,6 +758,12 @@ constexpr TagInfo PanasonicMakerNote::tagInfoRaw_[] = { unsignedLong, -1, printValue}, {0x0118, "RawDataOffset", N_("Raw Data Offset"), N_("Raw data offset"), IfdId::panaRawId, SectionId::panaRaw, unsignedLong, -1, printValue}, + {0x0119, "DistortionInfo", N_("Distortion Info"), N_("Distortion info"), IfdId::panaRawId, SectionId::panaRaw, + signedShort, -1, printValue}, + {0x011c, "Gamma", N_("Gamma"), N_("Gamma"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, -1, printValue}, + {0x013b, "Artist", N_("Artist"), N_("Artist"), IfdId::panaRawId, SectionId::panaRaw, asciiString, -1, printValue}, + {0x8298, "Copyright", N_("Copyright"), N_("Copyright"), IfdId::panaRawId, SectionId::panaRaw, asciiString, -1, + printValue}, {0x8769, "ExifTag", N_("Exif IFD Pointer"), N_("A pointer to the Exif IFD"), IfdId::panaRawId, SectionId::panaRaw, unsignedLong, -1, printValue}, {0x8825, "GPSTag", N_("GPS Info IFD Pointer"), N_("A pointer to the GPS Info IFD"), IfdId::panaRawId, diff --git a/src/rafimage.cpp b/src/rafimage.cpp index 7f3bb0be8a..f3a19db01d 100644 --- a/src/rafimage.cpp +++ b/src/rafimage.cpp @@ -74,6 +74,9 @@ void RafImage::printStructure(std::ostream& out, PrintStructureOption option, si throw Error(ErrorCode::kerNotAnImage, "RAF"); } + // The following is based on https://libopenraw.freedesktop.org/formats/raf/ and + // https://exiftool.org/TagNames/FujiFilm.html#RAFHeader + const bool bPrint = option == kpsBasic || option == kpsRecursive; if (bPrint) { io_->seek(0, BasicIo::beg); // rewind @@ -159,7 +162,7 @@ void RafImage::printStructure(std::ostream& out, PrintStructureOption option, si // RAFs can carry the payload in one or two parts uint32_t meta_off[2], meta_len[2]; - uint32_t cfa_off[2], cfa_len[2], cfa_skip[2], cfa_size[2], cfa_stride[2]; + uint32_t cfa_off[2], cfa_len[2], comp[2], cfa_size[2], cfa_data[2]; for (size_t i = 0; i < 2; i++) { address = io_->tell(); byte data[4]; @@ -187,34 +190,34 @@ void RafImage::printStructure(std::ostream& out, PrintStructureOption option, si cfa_len[i] = Exiv2::getULong(data, bigEndian); size_t address3 = io_->tell(); io_->readOrThrow(data, 4); - cfa_skip[i] = Exiv2::getULong(data, bigEndian); + comp[i] = Exiv2::getULong(data, bigEndian); size_t address4 = io_->tell(); io_->readOrThrow(data, 4); cfa_size[i] = Exiv2::getULong(data, bigEndian); size_t address5 = io_->tell(); io_->readOrThrow(data, 4); - cfa_stride[i] = Exiv2::getULong(data, bigEndian); + cfa_data[i] = Exiv2::getULong(data, bigEndian); { std::stringstream c_off; std::stringstream c_len; - std::stringstream c_skip; + std::stringstream c_comp; std::stringstream c_size; - std::stringstream c_stride; + std::stringstream c_data; c_off << cfa_off[i]; c_len << cfa_len[i]; - c_skip << cfa_skip[i]; + c_comp << comp[i]; c_size << cfa_size[i]; - c_stride << cfa_stride[i]; + c_data << cfa_data[i]; out << Internal::indent(depth) << Internal::stringFormat(format, address, 4U) << " CFA offset" << i + 1 << " : " << c_off.str() << std::endl; out << Internal::indent(depth) << Internal::stringFormat(format, address2, 4U) << " CFA length" << i + 1 << " : " << c_len.str() << std::endl; - out << Internal::indent(depth) << Internal::stringFormat(format, address3, 4U) << " CFA skip" << i + 1 - << " : " << c_skip.str() << std::endl; + out << Internal::indent(depth) << Internal::stringFormat(format, address3, 4U) << "compression" << i + 1 + << " : " << c_comp.str() << std::endl; out << Internal::indent(depth) << Internal::stringFormat(format, address4, 4U) << " CFA chunk" << i + 1 << " : " << c_size.str() << std::endl; - out << Internal::indent(depth) << Internal::stringFormat(format, address5, 4U) << " CFA stride" << i + 1 - << " : " << c_stride.str() << std::endl; + out << Internal::indent(depth) << Internal::stringFormat(format, address5, 4U) << " unknown" << i + 1 + << " : " << c_data.str() << std::endl; } } diff --git a/src/sonymn_int.cpp b/src/sonymn_int.cpp index 0562127e34..99a3ccae4e 100644 --- a/src/sonymn_int.cpp +++ b/src/sonymn_int.cpp @@ -548,7 +548,7 @@ constexpr StringTagDetails sonyFileFormat[] = { {"0 0 0 2", "JPEG"}, {"1 0 0 0", "SR2 1.0"}, {"2 0 0 0", "ARW 1.0"}, {"3 0 0 0", "ARW 2.0"}, {"3 1 0 0", "ARW 2.1"}, {"3 2 0 0", "ARW 2.2"}, {"3 3 0 0", "ARW 2.3"}, {"3 3 1 0", "ARW 2.3.1"}, {"3 3 2 0", "ARW 2.3.2"}, {"3 3 3 0", "ARW 2.3.3"}, {"3 3 5 0", "ARW 2.3.5"}, {"4 0 0 0", "ARW 4.0"}, - {"4 0 1 0", "ARW 4.0.1"}, {"5 0 0 0", "ARW 5.0.0"}, + {"4 0 1 0", "ARW 4.0.1"}, {"5 0 0 0", "ARW 5.0.0"}, {"5 0 1 0", "ARW 5.0.1"}, }; //! Lookup table to translate Sony dynamic range optimizer values to readable labels diff --git a/src/tags_int.cpp b/src/tags_int.cpp index 0841aac63b..f0228dc323 100644 --- a/src/tags_int.cpp +++ b/src/tags_int.cpp @@ -1702,7 +1702,7 @@ constexpr TagInfo ifdTagInfo[] = { "used if ColorPlanes is greater than 3. The matrix is stored in row " "scan order."), IfdId::ifd0Id, SectionId::dngTags, signedRational, -1, printValue}, // DNG 1.6 tag - {0xcd3b, "RGBTables", N_("RGB Tables"), + {0xcd3f, "RGBTables", N_("RGB Tables"), N_("This tag specifies color transforms that can be applied to masked image " "regions. Color transforms are specified using RGB-to-RGB color lookup tables. " "These tables are associated with Semantic Masks to limit the color transform " diff --git a/src/version.cpp b/src/version.cpp index 6040744375..9e8c30ed87 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -33,8 +33,11 @@ // platform specific support for getLoadedLibraries #if defined(_WIN32) || defined(__CYGWIN__) // clang-format off +#include #include -#include +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_APP) + #include +#endif // clang-format on #if __LP64__ #ifdef _WIN64 @@ -121,7 +124,8 @@ static std::vector getLoadedLibraries() { std::string path; #if defined(_WIN32) || defined(__CYGWIN__) - // enumerate loaded libraries and determine path to executable +// enumerate loaded libraries and determine path to executable (unsupported on UWP) +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_APP) HMODULE handles[200]; DWORD cbNeeded; if (EnumProcessModules(GetCurrentProcess(), handles, static_cast(std::size(handles)), &cbNeeded)) { @@ -131,6 +135,7 @@ static std::vector getLoadedLibraries() { pushPath(szFilename, libs, paths); } } +#endif #elif defined(__APPLE__) // man 3 dyld uint32_t count = _dyld_image_count(); diff --git a/test/data/test_reference_files/CanonEF100mmF2.8LMacroISUSM.exv.out b/test/data/test_reference_files/CanonEF100mmF2.8LMacroISUSM.exv.out index b594e758ee..2b1a6d3c52 100644 --- a/test/data/test_reference_files/CanonEF100mmF2.8LMacroISUSM.exv.out +++ b/test/data/test_reference_files/CanonEF100mmF2.8LMacroISUSM.exv.out @@ -91,7 +91,7 @@ Exif.Canon.ImageType Ascii 32 Canon EOS 5D Mark II Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 2.0.8 Firmware Version 2.0.8 Exif.Canon.FileNumber Long 1 0 (0) Exif.Canon.OwnerName Ascii 32 -Exif.Canon.SerialNumber Long 1 210104331 0c8561451 +Exif.Canon.SerialNumber Long 1 210104331 210104331 Exif.Canon.ModelID Long 1 2147484184 EOS 5D Mark II Exif.Canon.SerialNumberFormat Long 1 2684354560 Format 2 Exif.Canon.AFInfo Short 50 100 0 9 9 5616 3744 5616 3744 84 84 101 84 84 84 101 84 123 101 101 74 101 101 101 74 101 131 64363 64975 0 561 1173 561 0 64975 0 0 280 501 280 0 65256 65035 65256 0 256 0 0 65535 0 36000 100 0 9 9 5616 3744 5616 3744 84 84 101 84 84 84 101 84 123 101 101 74 101 101 101 74 101 131 64363 64975 0 561 1173 561 0 64975 0 0 280 501 280 0 65256 65035 65256 0 256 0 0 65535 0 36000 diff --git a/test/data/test_reference_files/TamronSP90mmF2.8DiVCUSDMacroF004.exv.out b/test/data/test_reference_files/TamronSP90mmF2.8DiVCUSDMacroF004.exv.out index 68c4af09bd..f15ad9dee6 100644 --- a/test/data/test_reference_files/TamronSP90mmF2.8DiVCUSDMacroF004.exv.out +++ b/test/data/test_reference_files/TamronSP90mmF2.8DiVCUSDMacroF004.exv.out @@ -91,7 +91,7 @@ Exif.CanonSi.FlashOutput Short 1 0 0 Exif.Canon.ImageType Ascii 23 Canon EOS-1Ds Mark III Canon EOS-1Ds Mark III Exif.Canon.FirmwareVersion Ascii 24 Firmware Version 1.2.0 Firmware Version 1.2.0 Exif.Canon.OwnerName Ascii 32 -Exif.Canon.SerialNumber Long 1 607779 000917955 +Exif.Canon.SerialNumber Long 1 607779 607779 Exif.Canon.CameraInfo Undefined 1536 170 170 97 56 96 56 80 0 136 134 5 3 0 0 0 0 0 0 1 0 0 0 0 0 160 138 92 93 86 0 90 12 0 0 0 0 0 0 187 187 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 40 0 0 0 36 0 36 0 204 204 2 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 255 0 0 0 9 0 0 0 184 11 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 132 0 0 0 1 0 0 0 17 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 4 3 112 64 3 6 3 3 9 252 3 10 240 4 12 160 16 4 13 112 8 9 14 0 0 3 112 48 0 0 0 11 0 0 0 0 0 0 0 0 0 0 32 19 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 6 7 4 0 0 0 4 16 5 3 3 17 99 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 12 0 6 0 16 0 2 0 0 0 0 0 0 0 0 0 0 1 32 88 0 254 0 90 0 90 129 119 138 239 8 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 49 46 50 46 48 0 0 0 0 0 0 0 56 100 59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 0 145 3 0 0 100 0 0 0 84 13 0 0 241 16 0 0 0 0 0 0 101 0 0 0 146 3 0 0 100 0 0 0 10 0 0 0 8 0 0 0 8 0 0 0 8 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 40 3 0 4 0 4 119 1 80 125 144 81 35 70 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 237 1 0 4 0 4 163 2 240 46 146 81 35 70 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 75 2 176 100 146 145 35 70 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 251 1 0 4 0 4 158 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 251 1 0 4 0 4 158 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 3 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129 0 129 0 129 0 0 0 255 255 255 255 85 110 116 105 116 108 101 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 219 1 0 4 0 4 93 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 247 200 201 80 0 0 0 0 16 0 0 0 16 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 42 39 76 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 97 56 96 56 80 0 136 134 5 3 0 0 0 0 0 0 1 0 0 0 0 0 160 138 92 93 86 0 90 12 0 0 0 0 0 0 187 187 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 40 0 0 0 36 0 36 0 204 204 2 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 255 0 0 0 9 0 0 0 184 11 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 132 0 0 0 1 0 0 0 17 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 4 3 112 64 3 6 3 3 9 252 3 10 240 4 12 160 16 4 13 112 8 9 14 0 0 3 112 48 0 0 0 11 0 0 0 0 0 0 0 0 0 0 32 19 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 6 7 4 0 0 0 4 16 5 3 3 17 99 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 12 0 6 0 16 0 2 0 0 0 0 0 0 0 0 0 0 1 32 88 0 254 0 90 0 90 129 119 138 239 8 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 49 46 50 46 48 0 0 0 0 0 0 0 56 100 59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 0 145 3 0 0 100 0 0 0 84 13 0 0 241 16 0 0 0 0 0 0 101 0 0 0 146 3 0 0 100 0 0 0 10 0 0 0 8 0 0 0 8 0 0 0 8 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 40 3 0 4 0 4 119 1 80 125 144 81 35 70 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 237 1 0 4 0 4 163 2 240 46 146 81 35 70 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 75 2 176 100 146 145 35 70 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 251 1 0 4 0 4 158 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 251 1 0 4 0 4 158 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 3 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129 0 129 0 129 0 0 0 255 255 255 255 85 110 116 105 116 108 101 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 219 1 0 4 0 4 93 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 247 200 201 80 0 0 0 0 16 0 0 0 16 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 42 39 76 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Exif.Canon.ModelID Long 1 2147484181 EOS-1Ds Mark III Exif.Canon.ThumbnailImageValidArea Short 4 0 159 7 112 0 159 7 112 diff --git a/test/data/test_reference_files/crw-test.out b/test/data/test_reference_files/crw-test.out index 0b74c059c8..e9ffb19587 100644 --- a/test/data/test_reference_files/crw-test.out +++ b/test/data/test_reference_files/crw-test.out @@ -11,7 +11,7 @@ Exif.Canon.ImageType Ascii 30 CRW:High definition Exif.Canon.OwnerName Ascii 15 Andreas Huggel Exif.Image.Make Ascii 6 Canon Exif.Image.Model Ascii 20 Canon PowerShot S40 -Exif.Canon.SerialNumber Long 2 43b226716 +Exif.Canon.SerialNumber Long 2 1135765596 1446117789 Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.10 Exif.Canon.FocalLength Short 4 7.1 mm Exif.CanonSi.AutoISO Short 1 100 @@ -93,7 +93,7 @@ Exif.Canon.ImageType Ascii 30 CRW:High definition Exif.Canon.OwnerName Ascii 16 Different owner Exif.Image.Make Ascii 6 Canon Exif.Image.Model Ascii 20 Canon PowerShot S40 -Exif.Canon.SerialNumber Long 2 000000001 +Exif.Canon.SerialNumber Long 2 1 0 Exif.Canon.FirmwareVersion Ascii 17 Whatever version Exif.Canon.FocalLength Short 4 2 227 286 215 Exif.CanonSi.AutoISO Short 1 100 @@ -134,7 +134,7 @@ Exif.Canon.ImageType Ascii 30 CRW:High definition Exif.Canon.OwnerName Ascii 15 Andreas Huggel Exif.Image.Make Ascii 6 Canon Exif.Image.Model Ascii 20 Canon PowerShot S40 -Exif.Canon.SerialNumber Long 2 43b226716 +Exif.Canon.SerialNumber Long 2 1135765596 1446117789 Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.10 Exif.Canon.FocalLength Short 4 7.1 mm Exif.CanonSi.AutoISO Short 1 100 @@ -207,7 +207,7 @@ Exif.Photo.DateTimeOriginal Ascii 20 2005:04:23 18:54:36 Exif.Canon.ImageType Ascii 30 CRW:High definition CCD image Exif.Image.Make Ascii 6 Canon Exif.Image.Model Ascii 20 Canon PowerShot S40 -Exif.Canon.SerialNumber Long 2 43b226716 +Exif.Canon.SerialNumber Long 2 1135765596 1446117789 Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.10 Exif.Canon.FocalLength Short 4 7.1 mm Exif.CanonSi.AutoISO Short 1 100 diff --git a/test/data/test_reference_files/exiv2-bug1140.exv.out b/test/data/test_reference_files/exiv2-bug1140.exv.out index 0824463add..a54e7d20b3 100644 --- a/test/data/test_reference_files/exiv2-bug1140.exv.out +++ b/test/data/test_reference_files/exiv2-bug1140.exv.out @@ -90,7 +90,7 @@ Exif.CanonSi.FlashOutput Short 1 0 0 Exif.Canon.ImageType Ascii 32 Canon EOS 30D Canon EOS 30D Exif.Canon.FirmwareVersion Ascii 32 Firmware 1.0.5 Firmware 1.0.5 Exif.Canon.OwnerName Ascii 32 unknown unknown -Exif.Canon.SerialNumber Long 1 1520906211 5aa712259 +Exif.Canon.SerialNumber Long 1 1520906211 1520906211 Exif.Canon.CameraInfo Undefined 1024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Exif.CanonCf.NoiseReduction Short 1 256 256 Exif.CanonCf.ShutterAeLock Short 1 513 513 diff --git a/test/data/test_reference_files/exiv2-bug1202.jpg.out b/test/data/test_reference_files/exiv2-bug1202.jpg.out index d8a376bedf..6f1d2b9518 100644 --- a/test/data/test_reference_files/exiv2-bug1202.jpg.out +++ b/test/data/test_reference_files/exiv2-bug1202.jpg.out @@ -96,7 +96,7 @@ Exif.CanonFi.RawJpgSize SShort 1 -1 n/a Exif.CanonFi.NoiseReduction SShort 1 -1 (-1) Exif.Canon.ImageType Ascii 32 IMG:EOS 300D DIGITAL JPEG IMG:EOS 300D DIGITAL JPEG Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 1.0.2 Firmware Version 1.0.2 -Exif.Canon.SerialNumber Long 1 570004681 21f938089 +Exif.Canon.SerialNumber Long 1 570004681 570004681 Exif.Canon.SerialNumberFormat Long 1 2415919104 Format 1 Exif.Canon.FileNumber Long 1 1030390 103-0390 Exif.Canon.OwnerName Ascii 32 diff --git a/test/data/test_reference_files/exiv2-canon-eos-20d.jpg.out b/test/data/test_reference_files/exiv2-canon-eos-20d.jpg.out index 6e613631e0..98e74581f5 100644 --- a/test/data/test_reference_files/exiv2-canon-eos-20d.jpg.out +++ b/test/data/test_reference_files/exiv2-canon-eos-20d.jpg.out @@ -91,7 +91,7 @@ Exif.CanonSi.FlashOutput Short 1 0 0 Exif.Canon.ImageType Ascii 32 Canon EOS 20D Canon EOS 20D Exif.Canon.FirmwareVersion Ascii 32 Firmware 2.0.3 Firmware 2.0.3 Exif.Canon.OwnerName Ascii 32 unknown unknown -Exif.Canon.SerialNumber Long 1 1731000068 672c63236 +Exif.Canon.SerialNumber Long 1 1731000068 1731000068 Exif.Canon.CameraInfo Undefined 1024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Exif.CanonCf.NoiseReduction Short 1 1 1 Exif.CanonCf.ShutterAeLock Short 1 256 256 diff --git a/test/data/test_reference_files/exiv2-canon-eos-300d.jpg.out b/test/data/test_reference_files/exiv2-canon-eos-300d.jpg.out index b7867d8921..9692ee9eb3 100644 --- a/test/data/test_reference_files/exiv2-canon-eos-300d.jpg.out +++ b/test/data/test_reference_files/exiv2-canon-eos-300d.jpg.out @@ -96,7 +96,7 @@ Exif.CanonFi.RawJpgSize SShort 1 -1 n/a Exif.CanonFi.NoiseReduction SShort 1 -1 (-1) Exif.Canon.ImageType Ascii 32 IMG:EOS 300D DIGITAL JPEG IMG:EOS 300D DIGITAL JPEG Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 1.0.2 Firmware Version 1.0.2 -Exif.Canon.SerialNumber Long 1 570004681 21f938089 +Exif.Canon.SerialNumber Long 1 570004681 570004681 Exif.Canon.SerialNumberFormat Long 1 2415919104 Format 1 Exif.Canon.FileNumber Long 1 1030390 103-0390 Exif.Canon.OwnerName Ascii 32 diff --git a/test/data/test_reference_files/exiv2-canon-powershot-s40.crw.out b/test/data/test_reference_files/exiv2-canon-powershot-s40.crw.out index 72136e5b88..4c4f024609 100644 --- a/test/data/test_reference_files/exiv2-canon-powershot-s40.crw.out +++ b/test/data/test_reference_files/exiv2-canon-powershot-s40.crw.out @@ -10,7 +10,7 @@ Exif.Canon.ImageType Ascii 30 CRW:High definition Exif.Canon.OwnerName Ascii 15 Andreas Huggel Andreas Huggel Exif.Image.Make Ascii 6 Canon Canon Exif.Image.Model Ascii 20 Canon PowerShot S40 Canon PowerShot S40 -Exif.Canon.SerialNumber Long 2 1135765596 1446117789 43b226716 +Exif.Canon.SerialNumber Long 2 1135765596 1446117789 1135765596 1446117789 Exif.Canon.FirmwareVersion Ascii 22 Firmware Version 1.10 Firmware Version 1.10 Exif.Canon.FocalLength Short 4 2 227 286 215 7.1 mm Exif.CanonSi.AutoISO Short 1 0 100 diff --git a/test/data/test_reference_files/exiv2-test.out b/test/data/test_reference_files/exiv2-test.out index 7ae4082f68..a35ef9b37b 100644 --- a/test/data/test_reference_files/exiv2-test.out +++ b/test/data/test_reference_files/exiv2-test.out @@ -1193,7 +1193,7 @@ File 6/16: 20030925_201850.jpg 20030925_201850.jpg Exif.CanonFi.NoiseReduction SShort 1 (-1) 20030925_201850.jpg Exif.Canon.ImageType Ascii 32 IMG:EOS 300D DIGITAL JPEG 20030925_201850.jpg Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 1.0.2 -20030925_201850.jpg Exif.Canon.SerialNumber Long 1 21f938089 +20030925_201850.jpg Exif.Canon.SerialNumber Long 1 570004681 20030925_201850.jpg Exif.Canon.SerialNumberFormat Long 1 Format 1 20030925_201850.jpg Exif.Canon.FileNumber Long 1 103-0390 20030925_201850.jpg Exif.Canon.OwnerName Ascii 32 @@ -1780,7 +1780,7 @@ Warning: Directory Canon has an unexpected next pointer; ignored. 20060802_095200.jpg Exif.Canon.ImageType Ascii 32 Canon EOS 20D 20060802_095200.jpg Exif.Canon.FirmwareVersion Ascii 32 Firmware 2.0.3 20060802_095200.jpg Exif.Canon.OwnerName Ascii 32 unknown -20060802_095200.jpg Exif.Canon.SerialNumber Long 1 672c63236 +20060802_095200.jpg Exif.Canon.SerialNumber Long 1 1731000068 20060802_095200.jpg Exif.Canon.CameraInfo Undefined 1024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20060802_095200.jpg Exif.CanonCf.0x0000 Short 1 38 20060802_095200.jpg Exif.CanonCf.NoiseReduction Short 1 1 @@ -2834,7 +2834,7 @@ Compare image data and extracted data ------------------------------------ < 20030925_201850.jpg Exif.CanonFi.NoiseReduction SShort 1 (-1) < 20030925_201850.jpg Exif.Canon.ImageType Ascii 32 IMG:EOS 300D DIGITAL JPEG < 20030925_201850.jpg Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 1.0.2 -< 20030925_201850.jpg Exif.Canon.SerialNumber Long 1 21f938089 +< 20030925_201850.jpg Exif.Canon.SerialNumber Long 1 570004681 < 20030925_201850.jpg Exif.Canon.SerialNumberFormat Long 1 Format 1 < 20030925_201850.jpg Exif.Canon.FileNumber Long 1 103-0390 < 20030925_201850.jpg Exif.Canon.OwnerName Ascii 32 @@ -3420,7 +3420,7 @@ Compare image data and extracted data ------------------------------------ < 20060802_095200.jpg Exif.Canon.ImageType Ascii 32 Canon EOS 20D < 20060802_095200.jpg Exif.Canon.FirmwareVersion Ascii 32 Firmware 2.0.3 < 20060802_095200.jpg Exif.Canon.OwnerName Ascii 32 unknown -< 20060802_095200.jpg Exif.Canon.SerialNumber Long 1 672c63236 +< 20060802_095200.jpg Exif.Canon.SerialNumber Long 1 1731000068 < 20060802_095200.jpg Exif.Canon.CameraInfo Undefined 1024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < 20060802_095200.jpg Exif.CanonCf.0x0000 Short 1 38 < 20060802_095200.jpg Exif.CanonCf.NoiseReduction Short 1 1 @@ -4397,7 +4397,7 @@ Compare image data and extracted data ------------------------------------ > 20030925_201850.exv Exif.CanonFi.NoiseReduction SShort 1 (-1) > 20030925_201850.exv Exif.Canon.ImageType Ascii 32 IMG:EOS 300D DIGITAL JPEG > 20030925_201850.exv Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 1.0.2 -> 20030925_201850.exv Exif.Canon.SerialNumber Long 1 21f938089 +> 20030925_201850.exv Exif.Canon.SerialNumber Long 1 570004681 > 20030925_201850.exv Exif.Canon.SerialNumberFormat Long 1 Format 1 > 20030925_201850.exv Exif.Canon.FileNumber Long 1 103-0390 > 20030925_201850.exv Exif.Canon.OwnerName Ascii 32 @@ -4983,7 +4983,7 @@ Compare image data and extracted data ------------------------------------ > 20060802_095200.exv Exif.Canon.ImageType Ascii 32 Canon EOS 20D > 20060802_095200.exv Exif.Canon.FirmwareVersion Ascii 32 Firmware 2.0.3 > 20060802_095200.exv Exif.Canon.OwnerName Ascii 32 unknown -> 20060802_095200.exv Exif.Canon.SerialNumber Long 1 672c63236 +> 20060802_095200.exv Exif.Canon.SerialNumber Long 1 1731000068 > 20060802_095200.exv Exif.Canon.CameraInfo Undefined 1024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > 20060802_095200.exv Exif.CanonCf.0x0000 Short 1 38 > 20060802_095200.exv Exif.CanonCf.NoiseReduction Short 1 1 @@ -6198,7 +6198,7 @@ Compare original and inserted image data --------------------------------- < 20030925_201850.jpg Exif.CanonFi.NoiseReduction SShort 1 (-1) < 20030925_201850.jpg Exif.Canon.ImageType Ascii 32 IMG:EOS 300D DIGITAL JPEG < 20030925_201850.jpg Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 1.0.2 -< 20030925_201850.jpg Exif.Canon.SerialNumber Long 1 21f938089 +< 20030925_201850.jpg Exif.Canon.SerialNumber Long 1 570004681 < 20030925_201850.jpg Exif.Canon.SerialNumberFormat Long 1 Format 1 < 20030925_201850.jpg Exif.Canon.FileNumber Long 1 103-0390 < 20030925_201850.jpg Exif.Canon.OwnerName Ascii 32 @@ -6784,7 +6784,7 @@ Compare original and inserted image data --------------------------------- < 20060802_095200.jpg Exif.Canon.ImageType Ascii 32 Canon EOS 20D < 20060802_095200.jpg Exif.Canon.FirmwareVersion Ascii 32 Firmware 2.0.3 < 20060802_095200.jpg Exif.Canon.OwnerName Ascii 32 unknown -< 20060802_095200.jpg Exif.Canon.SerialNumber Long 1 672c63236 +< 20060802_095200.jpg Exif.Canon.SerialNumber Long 1 1731000068 < 20060802_095200.jpg Exif.Canon.CameraInfo Undefined 1024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < 20060802_095200.jpg Exif.CanonCf.0x0000 Short 1 38 < 20060802_095200.jpg Exif.CanonCf.NoiseReduction Short 1 1 @@ -7761,7 +7761,7 @@ Compare original and inserted image data --------------------------------- > 20030925_201850.exv Exif.CanonFi.NoiseReduction SShort 1 (-1) > 20030925_201850.exv Exif.Canon.ImageType Ascii 32 IMG:EOS 300D DIGITAL JPEG > 20030925_201850.exv Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 1.0.2 -> 20030925_201850.exv Exif.Canon.SerialNumber Long 1 21f938089 +> 20030925_201850.exv Exif.Canon.SerialNumber Long 1 570004681 > 20030925_201850.exv Exif.Canon.SerialNumberFormat Long 1 Format 1 > 20030925_201850.exv Exif.Canon.FileNumber Long 1 103-0390 > 20030925_201850.exv Exif.Canon.OwnerName Ascii 32 @@ -8347,7 +8347,7 @@ Compare original and inserted image data --------------------------------- > 20060802_095200.exv Exif.Canon.ImageType Ascii 32 Canon EOS 20D > 20060802_095200.exv Exif.Canon.FirmwareVersion Ascii 32 Firmware 2.0.3 > 20060802_095200.exv Exif.Canon.OwnerName Ascii 32 unknown -> 20060802_095200.exv Exif.Canon.SerialNumber Long 1 672c63236 +> 20060802_095200.exv Exif.Canon.SerialNumber Long 1 1731000068 > 20060802_095200.exv Exif.Canon.CameraInfo Undefined 1024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > 20060802_095200.exv Exif.CanonCf.0x0000 Short 1 38 > 20060802_095200.exv Exif.CanonCf.NoiseReduction Short 1 1 diff --git a/test/data/test_reference_files/issue_1763_poc.exv.out b/test/data/test_reference_files/issue_1763_poc.exv.out index c54a9ea53f..239b319a4f 100644 --- a/test/data/test_reference_files/issue_1763_poc.exv.out +++ b/test/data/test_reference_files/issue_1763_poc.exv.out @@ -76,7 +76,7 @@ Exif.Canon.ImageType Ascii 32 Canon EOS 5D Mark II Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 2.0.8 Firmware Version 2.0.8 Exif.Canon.FileNumber Long 1 0 (0) Exif.Canon.OwnerName Ascii 32 -Exif.Canon.SerialNumber Long 1 210104331 0c8561451 +Exif.Canon.SerialNumber Long 1 210104331 210104331 Exif.Canon.ModelID Long 1 2147484184 EOS 5D Mark II Exif.Canon.SerialNumberFormat Long 1 2684354560 Format 2 Exif.Canon.AFInfo Short 50 100 0 9 9 5616 3744 5616 3744 84 84 101 84 84 84 101 84 123 101 101 74 101 101 101 74 101 131 64363 64975 0 561 1173 561 0 64975 0 0 280 501 280 0 65256 65035 65256 0 256 0 0 65535 0 36000 100 0 9 9 5616 3744 5616 3744 84 84 101 84 84 84 101 84 123 101 101 74 101 101 101 74 101 131 64363 64975 0 561 1173 561 0 64975 0 0 280 501 280 0 65256 65035 65256 0 256 0 0 65535 0 36000 diff --git a/test/data/test_reference_files/template.exv.out b/test/data/test_reference_files/template.exv.out index adff961093..2190453ff8 100644 --- a/test/data/test_reference_files/template.exv.out +++ b/test/data/test_reference_files/template.exv.out @@ -91,7 +91,7 @@ Exif.Canon.ImageType Ascii 32 Canon EOS 5D Mark II Exif.Canon.FirmwareVersion Ascii 32 Firmware Version 2.0.8 Firmware Version 2.0.8 Exif.Canon.FileNumber Long 1 0 (0) Exif.Canon.OwnerName Ascii 32 -Exif.Canon.SerialNumber Long 1 210104331 0c8561451 +Exif.Canon.SerialNumber Long 1 210104331 210104331 Exif.Canon.ModelID Long 1 2147484184 EOS 5D Mark II Exif.Canon.SerialNumberFormat Long 1 2684354560 Format 2 Exif.Canon.AFInfo Short 50 100 0 9 9 5616 3744 5616 3744 84 84 101 84 84 84 101 84 123 101 101 74 101 101 101 74 101 131 64363 64975 0 561 1173 561 0 64975 0 0 280 501 280 0 65256 65035 65256 0 256 0 0 65535 0 36000 100 0 9 9 5616 3744 5616 3744 84 84 101 84 84 84 101 84 123 101 101 74 101 101 101 74 101 131 64363 64975 0 561 1173 561 0 64975 0 0 280 501 280 0 65256 65035 65256 0 256 0 0 65535 0 36000 diff --git a/test/data/test_reference_files/test_issue_981a.exv.out b/test/data/test_reference_files/test_issue_981a.exv.out index 8eca542298..a86500e90f 100644 --- a/test/data/test_reference_files/test_issue_981a.exv.out +++ b/test/data/test_reference_files/test_issue_981a.exv.out @@ -93,7 +93,7 @@ Exif.CanonSi.FlashOutput Short 1 0 0 Exif.Canon.ImageType Ascii 15 Canon EOS 500D Canon EOS 500D Exif.Canon.FirmwareVersion Ascii 24 Firmware Version 1.1.1 Firmware Version 1.1.1 Exif.Canon.OwnerName Ascii 32 -Exif.Canon.SerialNumber Long 1 780145265 2e8004721 +Exif.Canon.SerialNumber Long 1 780145265 780145265 Exif.Canon.CameraInfo Undefined 1536 170 170 83 50 83 51 104 0 82 88 3 3 0 0 0 0 0 0 1 0 0 6 0 0 0 153 0 87 93 0 0 200 0 1 0 0 0 0 1 187 187 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 255 0 224 12 204 204 2 0 0 0 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 100 25 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 131 0 0 0 1 0 0 0 1 0 0 0 13 0 1 0 2 0 0 0 1 0 0 0 0 0 255 255 5 0 0 0 0 255 255 255 8 0 0 0 0 0 0 0 6 7 0 0 0 0 255 255 9 0 0 0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 0 0 1 50 93 0 137 0 18 0 200 145 21 0 0 0 0 0 2 0 0 0 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 161 18 0 0 96 12 0 0 99 8 0 0 243 4 0 0 218 1 0 0 122 2 0 0 208 2 0 0 224 1 0 0 0 0 0 0 0 0 0 0 208 2 0 0 169 1 0 0 48 182 134 0 48 152 134 0 48 184 134 0 255 255 255 255 255 255 255 255 28 207 13 255 1 0 0 0 255 255 255 255 255 255 255 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 10 2 0 1 0 1 0 49 46 49 46 49 0 52 65 40 48 49 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 142 0 0 0 100 0 0 0 100 0 0 0 0 0 0 0 175 29 0 0 0 0 0 0 100 0 0 0 101 0 0 0 100 0 0 0 8 0 0 0 8 0 0 0 8 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 251 1 0 4 0 4 158 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 215 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 215 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 215 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 215 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 3 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129 0 129 0 129 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 205 190 81 93 90 1 0 0 4 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 86 40 8 181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 83 50 83 51 104 0 82 88 3 3 0 0 0 0 0 0 1 0 0 6 0 0 0 153 0 87 93 0 0 200 0 1 0 0 0 0 1 187 187 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 255 0 224 12 204 204 2 0 0 0 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 100 25 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 131 0 0 0 1 0 0 0 1 0 0 0 13 0 1 0 2 0 0 0 1 0 0 0 0 0 255 255 5 0 0 0 0 255 255 255 8 0 0 0 0 0 0 0 6 7 0 0 0 0 255 255 9 0 0 0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 0 0 1 50 93 0 137 0 18 0 200 145 21 0 0 0 0 0 2 0 0 0 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 161 18 0 0 96 12 0 0 99 8 0 0 243 4 0 0 218 1 0 0 122 2 0 0 208 2 0 0 224 1 0 0 0 0 0 0 0 0 0 0 208 2 0 0 169 1 0 0 48 182 134 0 48 152 134 0 48 184 134 0 255 255 255 255 255 255 255 255 28 207 13 255 1 0 0 0 255 255 255 255 255 255 255 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 10 2 0 1 0 1 0 49 46 49 46 49 0 52 65 40 48 49 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 142 0 0 0 100 0 0 0 100 0 0 0 0 0 0 0 175 29 0 0 0 0 0 0 100 0 0 0 101 0 0 0 100 0 0 0 8 0 0 0 8 0 0 0 8 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 251 1 0 4 0 4 158 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 215 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 215 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 215 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 1 0 4 0 4 215 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 3 0 0 0 239 190 173 222 239 190 173 222 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129 0 129 0 129 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 4 0 4 0 4 0 0 0 0 0 0 0 0 205 190 81 93 90 1 0 0 4 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 86 40 8 181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Exif.Canon.ModelID Long 1 2147484242 EOS Rebel T1i / 500D / Kiss X3 Exif.Canon.ThumbnailImageValidArea Short 4 0 159 7 112 0 159 7 112 diff --git a/test/data/test_reference_files/test_pr_1905_poc1_ref.out b/test/data/test_reference_files/test_pr_1905_poc1_ref.out index a636736b49..438063cad2 100644 --- a/test/data/test_reference_files/test_pr_1905_poc1_ref.out +++ b/test/data/test_reference_files/test_pr_1905_poc1_ref.out @@ -244,7 +244,7 @@ IlluminantData3,52535,0xcd37,Image,Exif.Image.IlluminantData3,Undefined,"When th MaskSubArea,52536,0xcd38,Image,Exif.Image.MaskSubArea,Long,"This tag identifies the crop rectangle of this IFD's mask, relative to the main image." ProfileHueSatMapData3,52537,0xcd39,Image,Exif.Image.ProfileHueSatMapData3,Float,"This tag contains the data for the third hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0." ReductionMatrix3,52538,0xcd3a,Image,Exif.Image.ReductionMatrix3,SRational,"ReductionMatrix3 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the third calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order." -RGBTables,52539,0xcd3b,Image,Exif.Image.RGBTables,Undefined,"This tag specifies color transforms that can be applied to masked image regions. Color transforms are specified using RGB-to-RGB color lookup tables. These tables are associated with Semantic Masks to limit the color transform to a sub-region of the image. The overall color transform is a linear combination of the color tables, weighted by their corresponding Semantic Masks." +RGBTables,52543,0xcd3f,Image,Exif.Image.RGBTables,Undefined,"This tag specifies color transforms that can be applied to masked image regions. Color transforms are specified using RGB-to-RGB color lookup tables. These tables are associated with Semantic Masks to limit the color transform to a sub-region of the image. The overall color transform is a linear combination of the color tables, weighted by their corresponding Semantic Masks." ProfileGainTableMap2,52544,0xcd40,Image,Exif.Image.ProfileGainTableMap2,Undefined,"This tag is an extended version of ProfileGainTableMap." ColumnInterleaveFactor,52547,0xcd43,Image,Exif.Image.ColumnInterleaveFactor,Long,"This tag specifies that columns of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.7.1.0." ImageSequenceInfo,52548,0xcd44,Image,Exif.Image.ImageSequenceInfo,Undefined,"This is an informative tag that describes how the image file relates to other image files captured in a sequence. Applications include focus stacking, merging multiple frames to reduce noise, time lapses, exposure brackets, stitched images for super resolution, and so on." diff --git a/tests/bash_tests/test_easyaccess.py b/tests/bash_tests/test_easyaccess.py index 9873dc9721..d07b3b2ca4 100644 --- a/tests/bash_tests/test_easyaccess.py +++ b/tests/bash_tests/test_easyaccess.py @@ -98,7 +98,7 @@ class Canon1(metaclass=CaseMeta): Subject distance (Exif.CanonSi.SubjectDistance ) : Infinite Light source ( ) : Flash (Exif.Photo.Flash ) : No flash -Camera serial number (Exif.Canon.SerialNumber ) : 21f938089 +Camera serial number (Exif.Canon.SerialNumber ) : 570004681 Focal length (Exif.Photo.FocalLength ) : 18.0 mm Subject location/area ( ) : Flash energy ( ) : diff --git a/unitTests/meson.build b/unitTests/meson.build index 35d7723936..b1b5b0d49d 100644 --- a/unitTests/meson.build +++ b/unitTests/meson.build @@ -48,7 +48,7 @@ if host_machine.system() == 'windows' and get_option('default_library') != 'stat test_sources += int_lib endif -t_args = ['-UEXIV2API', '-DEXIV2API=', '-DTESTDATA_PATH="@0@"'.format('..' / 'test' / 'data')] +t_args = ['-UEXIV2API', '-DEXIV2API=', '-DTESTDATA_PATH="@0@"'.format(meson.current_source_dir() / '..' / 'test' / 'data')] unit_tests = executable( 'unit_tests', diff --git a/xmpsdk/src/ParseRDF.cpp b/xmpsdk/src/ParseRDF.cpp index c47ffd73db..a92257c204 100644 --- a/xmpsdk/src/ParseRDF.cpp +++ b/xmpsdk/src/ParseRDF.cpp @@ -590,7 +590,7 @@ FixupQualifiedNode ( XMP_Node * xmpParent ) // value node's children to be the parent's children. Delete the now useless value node. XMP_Assert ( xmpParent->options & (kXMP_PropValueIsStruct | kRDF_HasValueElem) ); - xmpParent->options &= ~ (kXMP_PropValueIsStruct | kRDF_HasValueElem); + xmpParent->options &= ~ (static_cast(kXMP_PropValueIsStruct) | static_cast(kRDF_HasValueElem)); xmpParent->options |= valueNode->options; xmpParent->value.swap ( valueNode->value ); diff --git a/xmpsdk/src/XMPCore_Impl.cpp b/xmpsdk/src/XMPCore_Impl.cpp index e3632b9866..b810bfe929 100644 --- a/xmpsdk/src/XMPCore_Impl.cpp +++ b/xmpsdk/src/XMPCore_Impl.cpp @@ -948,7 +948,7 @@ FindQualifierNode ( XMP_Node * parent, if ( (qualNode == 0) && createNodes ) { - qualNode = new XMP_Node ( parent, qualName, (kXMP_PropIsQualifier | kXMP_NewImplicitNode) ); + qualNode = new XMP_Node ( parent, qualName, (static_cast(kXMP_PropIsQualifier) | static_cast(kXMP_NewImplicitNode)) ); parent->options |= kXMP_PropHasQualifiers; const bool isLang = XMP_LitMatch ( qualName, "xml:lang" );