[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:40:56 UTC 2017


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=bb71f49

The following commit has been merged in the master branch:
commit bb71f49bdcc74204cf238db57ef2d9e4ba1c40db
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Mon Dec 7 16:05:44 2009 +0000

    Added config for IFD3 (needed for CR2, at least some), fixed Nikon assertion failure for unknown complex binary arrays (reported by Marcel Wiesweg).
---
 src/exif.cpp              |  3 ++-
 src/tags.cpp              |  2 ++
 src/tiffcomposite.cpp     | 32 +++++++++++++++++++++++---------
 src/tiffcomposite_int.hpp | 17 +++++++++--------
 src/tiffimage.cpp         | 13 +++++++++++--
 src/types.hpp             |  1 +
 6 files changed, 48 insertions(+), 20 deletions(-)

diff --git a/src/exif.cpp b/src/exif.cpp
index 0011ac6..838d17f 100644
--- a/src/exif.cpp
+++ b/src/exif.cpp
@@ -689,7 +689,8 @@ namespace Exiv2 {
             subImage3Id,
             subImage4Id,
             panaRawIfdId,
-            ifd2Id
+            ifd2Id,
+            ifd3Id
         };
         for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) {
 #ifdef DEBUG
diff --git a/src/tags.cpp b/src/tags.cpp
index 6dcad4a..21ceacb 100644
--- a/src/tags.cpp
+++ b/src/tags.cpp
@@ -102,6 +102,7 @@ namespace Exiv2 {
         { iopIfdId,          "Iop",       "Iop",          ExifTags::iopTagList           },
         { ifd1Id,            "IFD1",      "Thumbnail",    ExifTags::ifdTagList           },
         { ifd2Id,            "IFD2",      "Image2",       ExifTags::ifdTagList           },
+        { ifd3Id,            "IFD3",      "Image3",       ExifTags::ifdTagList           },
         { subImage1Id,       "SubImage1", "SubImage1",    ExifTags::ifdTagList           },
         { subImage2Id,       "SubImage2", "SubImage2",    ExifTags::ifdTagList           },
         { subImage3Id,       "SubImage3", "SubImage3",    ExifTags::ifdTagList           },
@@ -1720,6 +1721,7 @@ namespace Exiv2 {
         case iopIfdId:
         case ifd1Id:
         case ifd2Id:
+        case ifd3Id:
         case subImage1Id:
         case subImage2Id:
         case subImage3Id:
diff --git a/src/tiffcomposite.cpp b/src/tiffcomposite.cpp
index a65f3ab..e4a173f 100644
--- a/src/tiffcomposite.cpp
+++ b/src/tiffcomposite.cpp
@@ -78,13 +78,14 @@ namespace Exiv2 {
         {   1, "Image"        },
         {   2, "Thumbnail"    },
         {   3, "Image2"       },
-        {   4, "Photo"        },
-        {   5, "GPSInfo"      },
-        {   6, "Iop"          },
-        {   7, "SubImage1"    },
-        {   8, "SubImage2"    },
-        {   9, "SubImage3"    },
-        {  10, "SubImage4"    },
+        {   4, "Image3"       },
+        {   5, "Photo"        },
+        {   6, "GPSInfo"      },
+        {   7, "Iop"          },
+        {   8, "SubImage1"    },
+        {   9, "SubImage2"    },
+        {  10, "SubImage3"    },
+        {  11, "SubImage4"    },
         {  64, "PanasonicRaw" },
         { 256, "MakerNote"    },
         // 257 not needed (olympmn)
@@ -754,11 +755,14 @@ namespace Exiv2 {
 
     TiffComponent* TiffBinaryArray::doAddPath(uint16_t tag, TiffPath& tiffPath, TiffComponent* const pRoot)
     {
-        assert(tiffPath.size() > 1);
+        pRoot_ = pRoot;
+        if (tiffPath.size() == 1) {
+            // An unknown complex binary array has no children and acts like a standard TIFF entry
+            return this;
+        }
         tiffPath.pop();
         const TiffPathItem tpi = tiffPath.top();
         // Initialize the binary array (if it is a complex array)
-        pRoot_ = pRoot;
         initialize(tpi.group());
         TiffComponent* tc = 0;
         // Todo: Duplicates are not allowed!
@@ -1021,6 +1025,8 @@ namespace Exiv2 {
 
     uint32_t TiffBinaryArray::doCount() const
     {
+        if (cfg() == 0) return TiffEntryBase::doCount();
+
         if (elements_.empty()) return 0;
 
         TypeId typeId = toTypeId(tiffType(), tag(), group());
@@ -1347,6 +1353,12 @@ namespace Exiv2 {
                                       uint32_t  dataIdx,
                                       uint32_t& imageIdx)
     {
+        if (cfg() == 0) return TiffEntryBase::doWrite(ioWrapper,
+                                                      byteOrder,
+                                                      offset,
+                                                      valueIdx,
+                                                      dataIdx,
+                                                      imageIdx);
         if (cfg()->byteOrder_ != invalidByteOrder) byteOrder = cfg()->byteOrder_;
         // Tags must be sorted in ascending order
         std::sort(elements_.begin(), elements_.end(), cmpTagLt);
@@ -1656,6 +1668,8 @@ namespace Exiv2 {
 
     uint32_t TiffBinaryArray::doSize() const
     {
+        if (cfg() == 0) return TiffEntryBase::doSize();
+
         if (elements_.empty()) return 0;
 
         uint32_t idx = 0;
diff --git a/src/tiffcomposite_int.hpp b/src/tiffcomposite_int.hpp
index 14eb011..53b543a 100644
--- a/src/tiffcomposite_int.hpp
+++ b/src/tiffcomposite_int.hpp
@@ -89,13 +89,14 @@ namespace Exiv2 {
         const uint16_t ifd0    =   1; //!< Exif IFD0
         const uint16_t ifd1    =   2; //!< Thumbnail IFD
         const uint16_t ifd2    =   3; //!< IFD2
-        const uint16_t exif    =   4; //!< Exif IFD
-        const uint16_t gps     =   5; //!< GPS IFD
-        const uint16_t iop     =   6; //!< Interoperability IFD
-        const uint16_t subimg1 =   7; //!< 1st TIFF SubIFD in IFD0
-        const uint16_t subimg2 =   8; //!< 2nd TIFF SubIFD in IFD0
-        const uint16_t subimg3 =   9; //!< 3rd TIFF SubIFD in IFD0
-        const uint16_t subimg4 =  10; //!< 4th TIFF SubIFD in IFD0
+        const uint16_t ifd3    =   4; //!< IFD3
+        const uint16_t exif    =   5; //!< Exif IFD
+        const uint16_t gps     =   6; //!< GPS IFD
+        const uint16_t iop     =   7; //!< Interoperability IFD
+        const uint16_t subimg1 =   8; //!< 1st TIFF SubIFD in IFD0
+        const uint16_t subimg2 =   9; //!< 2nd TIFF SubIFD in IFD0
+        const uint16_t subimg3 =  10; //!< 3rd TIFF SubIFD in IFD0
+        const uint16_t subimg4 =  11; //!< 4th TIFF SubIFD in IFD0
         const uint16_t panaraw =  64; //!< IFD0 of Panasonic RAW images 
         const uint16_t mn      = 256; //!< Makernote
         const uint16_t ignr    = 511; //!< Read but do not decode
@@ -1383,7 +1384,7 @@ namespace Exiv2 {
         // DATA
         const CfgSelFct cfgSelFct_; //!< Pointer to a function to determine which cfg to use (may be 0)
         const ArraySet* arraySet_;  //!< Pointer to the array set, if any (may be 0)
-        const ArrayCfg* arrayCfg_;  //!< Pointer to the array configuration (must not be 0)
+        const ArrayCfg* arrayCfg_;  //!< Pointer to the array configuration (must not be 0, except for unrecognized complex binary arrays)
         const ArrayDef* arrayDef_;  //!< Pointer to the array definition (may be 0)
         int defSize_;               //!< Size of the array definition array (may be 0)
         int setSize_;               //!< Size of the array set (may be 0)
diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp
index f5bb0eb..7866aab 100644
--- a/src/tiffimage.cpp
+++ b/src/tiffimage.cpp
@@ -772,6 +772,7 @@ namespace Exiv2 {
         { Tag::root, Group::iop,       Group::exif,      0xa005    },
         { Tag::root, Group::ifd1,      Group::ifd0,      Tag::next },
         { Tag::root, Group::ifd2,      Group::ifd1,      Tag::next },
+        { Tag::root, Group::ifd3,      Group::ifd2,      Tag::next },
         { Tag::root, Group::olymp1mn,  Group::exif,      0x927c    },
         { Tag::root, Group::olymp2mn,  Group::exif,      0x927c    },
         { Tag::root, Group::olympeq,   Group::olymp2mn,  0x2010    },
@@ -932,14 +933,22 @@ namespace Exiv2 {
         { Tag::next, Group::ifd1,      newTiffDirectory<Group::ifd2>             },
         {  Tag::all, Group::ifd1,      newTiffEntry                              },
 
-        // IFD2 (eg, in Pentax PEF files)
+        // IFD2 (eg, in Pentax PEF and Canon CR2 files)
         {    0x0111, Group::ifd2,      newTiffImageData<0x0117, Group::ifd2>     },
         {    0x0117, Group::ifd2,      newTiffImageSize<0x0111, Group::ifd2>     },
         {    0x0201, Group::ifd2,      newTiffImageData<0x0202, Group::ifd2>     },
         {    0x0202, Group::ifd2,      newTiffImageSize<0x0201, Group::ifd2>     },
-        { Tag::next, Group::ifd2,      newTiffDirectory<Group::ignr>             },
+        { Tag::next, Group::ifd2,      newTiffDirectory<Group::ifd3>             },
         {  Tag::all, Group::ifd2,      newTiffEntry                              },
 
+        // IFD3 (eg, in Canon CR2 files)
+        {    0x0111, Group::ifd3,      newTiffImageData<0x0117, Group::ifd3>     },
+        {    0x0117, Group::ifd3,      newTiffImageSize<0x0111, Group::ifd3>     },
+        {    0x0201, Group::ifd3,      newTiffImageData<0x0202, Group::ifd3>     },
+        {    0x0202, Group::ifd3,      newTiffImageSize<0x0201, Group::ifd3>     },
+        { Tag::next, Group::ifd3,      newTiffDirectory<Group::ignr>             },
+        {  Tag::all, Group::ifd3,      newTiffEntry                              },
+
         // Olympus makernote - some Olympus cameras use Minolta structures
         // Todo: Adding such tags will not work (maybe result in a Minolta makernote), need separate groups
         {    0x0001, Group::olymp1mn,  EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg)       },
diff --git a/src/types.hpp b/src/types.hpp
index dec4e84..f10e5f5 100644
--- a/src/types.hpp
+++ b/src/types.hpp
@@ -147,6 +147,7 @@ namespace Exiv2 {
         iopIfdId,
         ifd1Id,
         ifd2Id,
+        ifd3Id,
         subImage1Id,
         subImage2Id,
         subImage3Id,

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list