[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:38 UTC 2017


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

The following commit has been merged in the master branch:
commit 09ec544678d04236e0b21f7c219da89709dfcb83
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Sun Jul 5 05:49:08 2009 +0000

    Added iptc4xmpExt and plus XMP schemas (Based on a patch from Mikolaj Machowski).
---
 doc/templates/Makefile                 |   4 +-
 doc/templates/__index2__               |   2 +
 doc/templates/tags-xmp-iptcExt.html.in |  31 ++++++++++
 doc/templates/tags-xmp-plus.html.in    |  29 +++++++++
 src/doxygen.hpp.in                     |   2 +
 src/properties.cpp                     | 106 ++++++++++++++++++++++++++++++---
 src/tags.cpp                           |   6 ++
 src/tags.hpp                           |  38 ++++++++++++
 src/xmp.cpp                            |   2 +
 9 files changed, 212 insertions(+), 8 deletions(-)

diff --git a/doc/templates/Makefile b/doc/templates/Makefile
index 5a91735..d9380f3 100644
--- a/doc/templates/Makefile
+++ b/doc/templates/Makefile
@@ -72,7 +72,9 @@ SCHEMA = xmp_dc \
          xmp_aux \
          xmp_iptc \
          xmp_MicrosoftPhoto \
-         xmp_digiKam
+         xmp_digiKam \
+         xmp_iptcExt \
+         xmp_plus
 
 TAGLIST = ../../src/taglist
 
diff --git a/doc/templates/__index2__ b/doc/templates/__index2__
index efc6b06..974d6a2 100644
--- a/doc/templates/__index2__
+++ b/doc/templates/__index2__
@@ -35,6 +35,8 @@
     <li><a href="tags-xmp-exif.html"><span>exif</span></a></li>
     <li><a href="tags-xmp-aux.html"><span>aux</span></a></li>
     <li><a href="tags-xmp-iptc.html"><span>Iptc4xmpCore</span></a></li>
+    <li><a href="tags-xmp-iptcExt.html"><span>Iptc4xmpExt</span></a></li>
+    <li><a href="tags-xmp-plus.html"><span>plus</span></a></li>
     <li><a href="tags-xmp-digiKam.html"><span>digiKam</span></a></li>
     <li><a href="tags-xmp-MicrosoftPhoto.html"><span>MicrosoftPhoto</span></a></li>
   </ul>
diff --git a/doc/templates/tags-xmp-iptcExt.html.in b/doc/templates/tags-xmp-iptcExt.html.in
new file mode 100644
index 0000000..3a3d26c
--- /dev/null
+++ b/doc/templates/tags-xmp-iptcExt.html.in
@@ -0,0 +1,31 @@
+__doctype__
+<html>
+__header2__
+<body>
+
+<div id="content">
+__index1__
+__index2__
+
+<h2>IPTC Extension schema</h2>
+<p>This schema specifies the IPTC Extension XMP properties. The IPTC
+   Extension schema extends and complements the IPTC Core schema by a set
+   of more granular properties and further specialized rights related
+   properties from the PLUS metadata schema.
+ <ul>
+  <li>Exiv2 keys are <b><code>Xmp.iptcExt.<Property></code></b></li>
+  <li>The schema namespace URI is <b><code>http://iptc.org/std/Iptc4xmpExt/2008-02-29/</code></b></li>
+  <li>The preferred schema namespace prefix is <b><code>Iptc4xmpExt</code></b></li>
+ </ul>
+Reference: <a href="http://www.iptc.org/std/photometadata/2008/specification/IPTC-PhotoMetadata-2008_2.pdf" title="IPTC Standard Photo Metadata 2008">IPTC Photo Metadata 2008</a> standard</p>
+<p>Note: Exiv2 uses <b><code>iptcExt</code></b> (rather than <code>Iptc4xmpExt</code>) as the group name for keys of IPTC Extension schema properties.</p>
+
+<p>Click on a column header to sort the table.</p>
+
+__xmp_iptcExt__
+
+</div>
+<!-- closes content -->
+
+</body>
+</html>
diff --git a/doc/templates/tags-xmp-plus.html.in b/doc/templates/tags-xmp-plus.html.in
new file mode 100644
index 0000000..252fcbd
--- /dev/null
+++ b/doc/templates/tags-xmp-plus.html.in
@@ -0,0 +1,29 @@
+__doctype__
+<html>
+__header2__
+<body>
+
+<div id="content">
+__index1__
+__index2__
+
+<h2>PLUS License Data Format schema</h2>
+<p>The PLUS License Data Format ("LDF") is an ordered group of fields available
+   for optional use in embedding and reading image license metadata in digital
+   files and other documents.
+ <ul>
+  <li>Exiv2 keys are <b><code>Xmp.plus.<Property></code></b></li>
+  <li>The schema namespace URI is <b><code>http://ns.useplus.org/ldf/xmp/1.0/</code></b></li>
+  <li>The preferred schema namespace prefix is <b><code>plus</code></b></li>
+ </ul>
+Reference: <a href="http://ns.useplus.org/go.ashx" title="PLUS Technical Specification">PLUS Technical Specification</a></p>
+
+<p>Click on a column header to sort the table.</p>
+
+__xmp_plus__
+
+</div>
+<!-- closes content -->
+
+</body>
+</html>
diff --git a/src/doxygen.hpp.in b/src/doxygen.hpp.in
index d9fb0be..75c9415 100644
--- a/src/doxygen.hpp.in
+++ b/src/doxygen.hpp.in
@@ -70,6 +70,8 @@
   - <a href="tags-xmp-exif.html">exif schema</a>
   - <a href="tags-xmp-aux.html">aux schema</a>
   - <a href="tags-xmp-iptc.html">Iptc4xmpCore schema</a>
+  - <a href="tags-xmp-iptcExt.html">Iptc4xmpExt schema</a>
+  - <a href="tags-xmp-plus.html">PLUS schema</a>
   - <a href="tags-xmp-digiKam.html">digiKam schema</a>
   - <a href="tags-xmp-MicrosoftPhoto.html">MicrosoftPhoto schema</a>
 
diff --git a/src/properties.cpp b/src/properties.cpp
index e120a9e..445c8f7 100644
--- a/src/properties.cpp
+++ b/src/properties.cpp
@@ -84,9 +84,11 @@ namespace Exiv2 {
     extern const XmpPropertyInfo xmpExifInfo[];
     extern const XmpPropertyInfo xmpAuxInfo[];
     extern const XmpPropertyInfo xmpIptcInfo[];
+    extern const XmpPropertyInfo xmpIptcExtInfo[];
+    extern const XmpPropertyInfo xmpPlusInfo[];
 
     extern const XmpNsInfo xmpNsInfo[] = {
-        // Schemas
+        // Schemas   -   NOTE: Schemas which the XMP-SDK doesn't know must be registered in XmpParser::initialize - Todo: Automate this
         { "http://purl.org/dc/elements/1.1/",             "dc",             xmpDcInfo,        N_("Dublin Core schema")                        },
         { "http://www.digikam.org/ns/1.0/",               "digiKam",        xmpDigikamInfo,   N_("digiKam Photo Management schema")           },
         { "http://ns.adobe.com/xap/1.0/",                 "xmp",            xmpXmpInfo,       N_("XMP Basic schema")                          },
@@ -104,6 +106,9 @@ namespace Exiv2 {
         { "http://ns.adobe.com/exif/1.0/aux/",            "aux",            xmpAuxInfo,       N_("Exif schema for Additional Exif Properties")},
         { "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/",  "iptc",           xmpIptcInfo,      N_("IPTC Core schema")                          },
                                                                                              // NOTE: 'Iptc4xmpCore' is just too long
+        { "http://iptc.org/std/Iptc4xmpExt/2008-02-29/",  "iptcExt",        xmpIptcExtInfo,   N_("IPTC Extension schema")                     },
+                                                                                             // NOTE: It really should be 'Iptc4xmpExt' but following example above
+        { "http://ns.useplus.org/ldf/xmp/1.0/",           "plus",           xmpPlusInfo,      N_("PLUS License Data Format schema")           },
 
         // Structures
         { "http://ns.adobe.com/xap/1.0/g/",                   "xapG",    0, N_("Colorant structure")           },
@@ -384,8 +389,8 @@ namespace Exiv2 {
         { 0, 0, 0, invalidTypeId, xmpInternal, 0 }
     };
 
-    //! crs:CropUnits
-    extern const TagDetails xmpCrsCropUnits[] = {
+    //! XMP crs:CropUnits
+    extern const TagDetails crsCropUnits[] = {
         { 0, N_("pixels") },
         { 1, N_("inches") },
         { 2, N_("cm")     }
@@ -501,10 +506,10 @@ namespace Exiv2 {
         { "PixelYDimension",          N_("Pixel Y Dimension"),                   "Integer",                      xmpText, xmpInternal, N_("EXIF tag 40963, 0xA003. Valid image height, in pixels.") },
         { "UserComment",              N_("User Comment"),                        "Lang Alt",                     langAlt, xmpExternal, N_("EXIF tag 37510, 0x9286. Comments from user.") },
         { "RelatedSoundFile",         N_("Related Sound File"),                  "Text",                         xmpText, xmpInternal, N_("EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file.") },
-        { "DateTimeOriginal",         N_("Date and Time Original"),                  "Date",                         xmpText, xmpInternal, N_("EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). "
+        { "DateTimeOriginal",         N_("Date and Time Original"),              "Date",                         xmpText, xmpInternal, N_("EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). "
                                                                                                                                           "Date and time when original image was generated, in ISO 8601 format. "
                                                                                                                                           "Includes the EXIF SubSecTimeOriginal data.") },
-        { "DateTimeDigitized",        N_("Date and Time Digitized"),                 "Date",                         xmpText, xmpInternal, N_("EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and time when "
+        { "DateTimeDigitized",        N_("Date and Time Digitized"),             "Date",                         xmpText, xmpInternal, N_("EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and time when "
                                                                                                                                           "image was stored as digital data, can be the same as DateTimeOriginal if originally "
                                                                                                                                           "stored in digital form. Stored in ISO 8601 format. Includes the EXIF "
                                                                                                                                           "SubSecTimeDigitized data.") },
@@ -630,8 +635,92 @@ namespace Exiv2 {
         { 0, 0, 0, invalidTypeId, xmpInternal, 0 }
     };
 
+    extern const XmpPropertyInfo xmpIptcExtInfo[] = {
+        { "AddlModelInfo",           N_("Additional model info"),           "Text",                       xmpText, xmpExternal, N_("Information about the ethnicity and other facts of the model(s) in a model-released image.") },
+        { "OrganisationInImageCode", N_("Code of featured Organisation"),   "bag Text",                   xmpBag,  xmpExternal, N_("Code from controlled vocabulary for identyfing the organisation or company which is featured in the image.") },
+        { "CVterm",                  N_("Controlled Vocabulary Term"),      "bag URI",                    xmpBag,  xmpExternal, N_("A term to describe the content of the image by a value from a Controlled Vocabulary.") },
+        { "ModelAge",                N_("Model age"),                       "bag Integer",                xmpBag,  xmpExternal, N_("Age of the human model(s) at the time this image was taken in a model released image.") },
+        { "OrganisationInImageName", N_("Name of featured Organisation"),   "bag Text",                   xmpBag,  xmpExternal, N_("Name of the organisation or company which is featured in the image.") },
+        { "PersonInImage",           N_("Person shown"),                    "bag Text",                   xmpBag,  xmpExternal, N_("Name of a person shown in the image.") },
+        { "DigImageGUID",            N_("Digital Image Identifier"),        "Text",                       xmpText, xmpExternal, N_("Globally unique identifier for this digital image. It is created and applied by the creator of the digital image at the time of its creation. this value shall not be changed after that time.") },
+        { "DigitalSourcefileType",   N_("Physical type of original photo"), "URI",                        xmpText, xmpExternal, N_("The type of the source digital file.") },
+        { "Event",                   N_("Event"),                           "Lang Alt",                   langAlt, xmpExternal, N_("Names or describes the specific event at which the photo was taken.") },
+        { "MaxAvailHeight",          N_("Maximum available height"),        "Integer",                    xmpText, xmpExternal, N_("The maximum available height in pixels of the original photo from which this photo has been derived by downsizing.") },
+        { "MaxAvailWidth",           N_("Maximum available width"),         "Integer",                    xmpText, xmpExternal, N_("The maximum available width in pixels of the original photo from which this photo has been derived by downsizing.") },
+        { "RegistryId",              N_("Registry Entry"),                  "bag RegistryEntryDetails",   xmpBag,  xmpExternal, N_("Both a Registry Item Id and a Registry Organisation Id to record any registration of this digital image with a registry.") },
+        { "RegItemId",               N_("Registry Entry-Item Identifier"),  "Text",                       xmpText, xmpExternal, N_("A unique identifier created by a registry and applied by the creator of the digital image. This value shall not be changed after being applied. This identifier is linked to a corresponding Registry Organisation Identifier.") },
+        { "RegOrgId",                N_("Registry Entry-Organisation Identifier"), "Text",                xmpText, xmpExternal, N_("An identifier for the registry which issued the corresponding Registry Image Id.") },
+        { "IptcLastEdited",          N_("IPTC Fields Last Edited"),         "Date",                       xmpText, xmpExternal, N_("The date and optionally time when any of the IPTC photo metadata fields has been last edited.") },
+        { "LocationShown",           N_("Location shown"),                  "bag LocationDetails",        xmpBag,  xmpExternal, N_("A location shown in the image.") },
+        { "LocationCreated",         N_("Location Created"),                "bag LocationDetails",        xmpBag,  xmpExternal, N_("The location the photo was taken.") },
+        { "City",                    N_("Location-City"),                   "Text",                       xmpText, xmpExternal, N_("Name of the city of a location.") },
+        { "CountryCode",             N_("Location-Country ISO-Code"),       "Text",                       xmpText, xmpExternal, N_("The ISO code of a country of a location.") },
+        { "CountryName",             N_("Location-Country Name"),           "Text",                       xmpText, xmpExternal, N_("The name of a country of a location.") },
+        { "ProvinceState",           N_("Location-Province/State"),         "Text",                       xmpText, xmpExternal, N_("The name of a subregion of a country - a province or state - of a location.") },
+        { "Sublocation",             N_("Location-Sublocation"),            "Text",                       xmpText, xmpExternal, N_("Name of a sublocation. This sublocation name could either be the name of a sublocation to a city or the name of a well known location or (natural) monument outside a city.") },
+        { "WorldRegion",             N_("Location-World Region"),           "Text",                       xmpText, xmpExternal, N_("The name of a world region of a location.") },
+        { "ArtworkOrObject",         N_("Artwork or object in the image"),  "bag ArtworkOrObjectDetails", xmpBag,  xmpExternal, N_("A set of metadata about artwork or an object in the image.") },
+        { "AOCopyrightNotice",       N_("Artwork or object-Copyright notice"), "Text",                    xmpText, xmpExternal, N_("Contains any necessary copyright notice for claiming the intellectual property for artwork or an object in the image and should identify the current owner of the copyright of this work with associated intellectual property rights.") },
+        { "AOCreator",               N_("Artwork or object-Creator"),       "seq ProperName",             xmpSeq,  xmpExternal, N_("Contains the name of the artist who has created artwork or an object in the image. In cases where the artist could or should not be identified the name of a company or organisation may be appropriate.") },
+        { "AODateCreated",           N_("Artwork or object-Date Created"),  "Date",                       xmpText, xmpExternal, N_("Designates the date and optionally the time the artwork or object in the image was created. This relates to artwork or objects with associated intellectual property rights.") },
+        { "AOSource",                N_("Artwork or object-Source"),        "Text",                       xmpText, xmpExternal, N_("The organisation or body holding and registering the artwork or object in the image for inventory purposes.") },
+        { "AOSourceInvNo",           N_("Artwork or object-Source inventory number"), "Text",             xmpText, xmpExternal, N_("The inventory number issued by the organisation or body holding and registering the artwork or object in the image.") },
+        { "AOTitle",                 N_("Artwork or object-Title"),         "Lang Alt",                   langAlt, xmpExternal, N_("A reference for the artwork or object in the image.") },
+        // End of list marker
+        { 0, 0, 0, invalidTypeId, xmpInternal, 0 }
+    };
+
+    extern const XmpPropertyInfo xmpPlusInfo[] = {
+        // Part of PLUS Version 1.2.0
+        { "ImageSupplier",           N_("Image Supplier"),              "seq ImageSupplierDetail",   xmpSeq,  xmpExternal, N_("Identifies the most recent supplier of the image, who is not necessarily its owner or creator.") },
+        { "Version",                 N_("PLUS version"),                "Text",                      xmpText, xmpExternal, N_("The version number of the PLUS standards in place at the time of the transaction.") },
+        { "CopyrightOwner",          N_("Copyright owner"),             "seq CopyrightOwnerDetail",  xmpSeq,  xmpExternal, N_("Owner or owners of the copyright in the licensed image.") },
+        { "ImageCreator",            N_("Image Creator"),               "seq ImageCreatorDetail",    xmpSeq,  xmpExternal, N_("Creator or creators of the image.") },
+        { "Licensor",                N_("Licensor"),                    "seq LicensorDetail",        xmpSeq,  xmpExternal, N_("A person or company that should be contacted to obtain a license for using the item or who has licensed the item.") },
+        { "MinorModelAgeDisclosure", N_("Minor Model Age Disclosure"),  "URL",                       xmpText, xmpExternal, N_("Age of the youngest model pictured in the image, at the time that the image was made.") },
+        { "ModelReleaseID",          N_("Model Release ID"),            "bag Text",                  xmpBag,  xmpExternal, N_("A PLUS-ID identifying each Model Release.") },
+        { "ModelReleaseStatus",      N_("Model Release Status"),        "URL",                       xmpText, xmpExternal, N_("Summarizes the availability and scope of model releases authorizing usage of the likenesses of persons appearing in the photograph.") },
+        { "PropertyReleaseID",       N_("Property Release ID"),         "bag Text",                  xmpBag,  xmpExternal, N_("A PLUS-ID identifying each Property Release.") },
+        { "PropertyReleaseStatus",   N_("Property Release Status"),     "URL",                       xmpText, xmpExternal, N_("Summarizes the availability and scope of property releases authorizing usage of the properties appearing in the photograph.") },
+        // End of list marker
+        { 0, 0, 0, invalidTypeId, xmpInternal, 0 }
+    };
+
+    //! XMP plus:MinorModelAgeDisclosure
+    extern const TagVocabulary plusMinorModelAgeDisclosure[] = {
+        { "AG-UNK", N_("Age Unknown")     },
+        { "AG-A25", N_("Age 25 or Over")  },
+        { "AG-A24", N_("Age 24")          },
+        { "AG-A23", N_("Age 23")          },
+        { "AG-A22", N_("Age 22")          },
+        { "AG-A21", N_("Age 21")          },
+        { "AG-A20", N_("Age 20")          },
+        { "AG-A19", N_("Age 19")          },
+        { "AG-A18", N_("Age 18")          },
+        { "AG-A17", N_("Age 17")          },
+        { "AG-A16", N_("Age 16")          },
+        { "AG-A15", N_("Age 15")          },
+        { "AG-U14", N_("Age 14 or Under") }
+    };
+
+    //! XMP plus:ModelReleaseStatus
+    extern const TagVocabulary plusModelReleaseStatus[] = {
+        { "MR-NON", N_("None")                                 },
+        { "MR-NAP", N_("Not Applicable")                       },
+        { "MR-UMR", N_("Unlimited Model Releases")             },
+        { "MR-LMR", N_("Limited or Incomplete Model Releases") }
+    };
+
+    //! XMP plus:PropertyReleaseStatus
+    extern const TagVocabulary plusPropertyReleaseStatus[] = {
+        { "PR-NON", N_("None")                                    },
+        { "PR-NAP", N_("Not Applicable")                          },
+        { "PR-UPR", N_("Unlimited Property Releases")             },
+        { "PR-LPR", N_("Limited or Incomplete Property Releases") }
+    };
+
     extern const XmpPrintInfo xmpPrintInfo[] = {
-        {"Xmp.crs.CropUnits",                 EXV_PRINT_TAG(xmpCrsCropUnits)},
+        {"Xmp.crs.CropUnits",                 EXV_PRINT_TAG(crsCropUnits)   },
         {"Xmp.exif.ApertureValue",            print0x9202                   },
         {"Xmp.exif.BrightnessValue",          printFloat                    },
         {"Xmp.exif.ColorSpace",               print0xa001                   },
@@ -677,7 +766,10 @@ namespace Exiv2 {
         {"Xmp.tiff.ResolutionUnit",           printExifUnit                 },
         {"Xmp.tiff.XResolution",              printLong                     },
         {"Xmp.tiff.YCbCrPositioning",         print0x0213                   },
-        {"Xmp.tiff.YResolution",              printLong                     }
+        {"Xmp.tiff.YResolution",              printLong                     },
+        {"Xmp.plus.MinorModelAgeDisclosure",  EXV_PRINT_VOCABULARY(plusMinorModelAgeDisclosure) },
+        {"Xmp.plus.ModelReleaseStatus",       EXV_PRINT_VOCABULARY(plusModelReleaseStatus)      },
+        {"Xmp.plus.PropertyReleaseStatus",    EXV_PRINT_VOCABULARY(plusPropertyReleaseStatus)   }
     };
 
     XmpNsInfo::Ns::Ns(const std::string& ns)
diff --git a/src/tags.cpp b/src/tags.cpp
index ac01b14..1f75887 100644
--- a/src/tags.cpp
+++ b/src/tags.cpp
@@ -64,6 +64,12 @@ namespace {
 // class member definitions
 namespace Exiv2 {
 
+    bool TagVocabulary::operator==(const std::string& key) const
+    {
+        if (strlen(voc_) > key.size()) return false;
+        return 0 == strcmp(voc_, key.c_str() + key.size() - strlen(voc_));
+    }
+
     //! @cond IGNORE
     IfdInfo::Item::Item(const std::string& item)
     {
diff --git a/src/tags.hpp b/src/tags.hpp
index 97484a7..c83f189 100644
--- a/src/tags.hpp
+++ b/src/tags.hpp
@@ -141,6 +141,24 @@ namespace Exiv2 {
     }; // struct TagDetailsBitmask
 
     /*!
+      @brief Helper structure for lookup tables for translations of controlled
+             vocabulary strings to their descriptions.
+     */
+    struct EXIV2API TagVocabulary {
+        const char* voc_;                       //!< Vocabulary string
+        const char* label_;                     //!< Description of the vocabulary string
+
+        /*!
+          @brief Comparison operator for use with the find template
+
+          Compare vocabulary strings like "PR-NON" with keys like
+          "http://ns.useplus.org/ldf/vocab/PR-NON" and return true if the vocabulary
+          string matches the end of the key.
+         */
+        bool operator==(const std::string& key) const;
+    }; // struct TagDetails
+
+    /*!
       @brief Generic pretty-print function to translate a long value to a description
              by looking up a reference table.
      */
@@ -193,6 +211,26 @@ namespace Exiv2 {
 //! Shortcut for the printTagBitmask template which requires typing the array name only once.
 #define EXV_PRINT_TAG_BITMASK(array) printTagBitmask<EXV_COUNTOF(array), array>
 
+    /*!
+      @brief Generic pretty-print function to translate a controlled vocabulary value (string)
+             to a description by looking up a reference table.
+     */
+    template <int N, const TagVocabulary (&array)[N]>
+    std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*)
+    {
+        const TagVocabulary* td = find(array, value.toString());
+        if (td) {
+            os << exvGettext(td->label_);
+        }
+        else {
+            os << "(" << value << ")";
+        }
+        return os;
+    }
+
+//! Shortcut for the printTagVocabulary template which requires typing the array name only once.
+#define EXV_PRINT_VOCABULARY(array) printTagVocabulary<EXV_COUNTOF(array), array>
+
     //! Exif tag reference, implemented as a static class.
     class EXIV2API ExifTags {
         //! Prevent construction: not implemented.
diff --git a/src/xmp.cpp b/src/xmp.cpp
index 382ee36..47793cb 100644
--- a/src/xmp.cpp
+++ b/src/xmp.cpp
@@ -378,6 +378,8 @@ namespace Exiv2 {
             initialized_ = SXMPMeta::Initialize();
             SXMPMeta::RegisterNamespace("http://www.digikam.org/ns/1.0/", "digiKam", 0);
             SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.0/", "MicrosoftPhoto", 0);
+            SXMPMeta::RegisterNamespace("http://iptc.org/std/Iptc4xmpExt/2008-02-29/", "iptcExt", 0);
+            SXMPMeta::RegisterNamespace("http://ns.useplus.org/ldf/xmp/1.0/", "plus", 0);
 #else
             initialized_ = true;
 #endif

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list