[Digikam-devel] Odp: XMP metadata and GPS support

Andreas Huggel ahuggel at gmx.net
Wed Jun 20 03:50:16 BST 2007

XMP support in Exiv2 should use the existing Exiv2 API and 
infrastructure where possible. In particular, the interface to access 
XMP metadata in files should remain Exiv2::Image so that a call to 
Exiv2::Image::readMetadata() scans a file only once and loads Exif, 
IPTC as well as XMP into tag/value structures (ExifData, IptcData, 
XmpData for the time being, eventually, a common class for all 
metadata). This implies that in Exiv2, XMP tags will be accessed with 
keys, similar to the existing Exif and IPTC keys. "Standard" conversion 
classes to convert between Exif, IPTC and XMP could then become part of 
If that cannot be done, then I don't see the point of adding XMP support 
to Exiv2. 
Where I see a potential to save time by using Adobe's library/exempi is 
with the low-level decoding and encoding parts, i.e., scanning XML to 
decode the relevant bits (the "keys" and the "values") and the other 
way around on write. And maybe they have code to access file types 
which Exiv2 doesn't support yet.

Another alternative is of course to use 2 libraries, one for XMP and one 
for Exif/IPTC and develop conversion classes outside of both of them. 
But this would require that the client calls each library's API to read 
its respective metadata, i.e., scans the file twice, and that the 
application maintains the conversion code.

Would it help in the short term if Exiv2::Image provided some kind of 
getXmp/setXmp methods (at least for JPEGs) which would just deal with 
std::string BLOBs containing the raw XML? This would allow to 
read/write the data using Exiv2::Image::read/writeMetadata but require 
some other means to parse the XML.


More information about the Digikam-devel mailing list