XMP packets split across multiple APP1 segments
It looks like Adobe has recently updated its XMP specification
to allow JPEG files to host large (> 65,502 bytes) XMP packets
by splitting them into multiple APP1 marker segments.
The gory details are explained in the "Extended XMP in JPEG"
section in this document:
Since there is now an official specification, are there any
plans to support extended XMP in exiv2?
Reported by Marco Piovanelli
Updated by Jan Rüegg over 4 years ago
See also this discussion:
This feature is used for example for writing depthmap data into images, as described here:
This is an example of such an image with extended xmp data:
Updated by Robin Mills over 4 years ago
- Category set to xmp
- Status changed from New to Assigned
- Assignee set to Andreas Huggel
- Target version set to 1.0
Thanks for updating this. We have planned to update our XMP support in 2015 to incorporate the latest xmpsdk code from Adobe. It's very likely that Adobe's code now provides support for this feature, so we might gain this support "for free". Upgrading our xmp support is non-trivial as Adobe's code requires some modification to use the Exiv2 I/O module and other features of our code. Andreas has already agreed to take on the xmpsdk upgrade support - so I'll assign this to him.
Updated by Robin Mills about 4 years ago
A new feature -pX has been added to exiv2(.exe) to print the "raw" XMP/xml directly to stdout. -pX can read "Standard XMP" and “Extended XMP". -pX does not use XMPsdk. It parses the JPEG and extracts it directly. #922.
#599 is broader in scope in at least two ways:
- Although -pX can read "Standard XMP" and "Extended XMP", we generally do not support Extended XMP. So if we had a file that has more than 65k of XMP, we would only “see” the first 65k. So exiv2.exe (and all the other samples) know nothing about Extended XMP until we upgrade to Adobe’s latest stuff.
- Exiv2 code base cannot write “Extended” XMP at this time. If you keep adding XMP data, Exiv2 cannot write a block of XMP which exceeds 65k bytes.