You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support to include and merge existing embedded XMP from the edit target into generated transfer XMP with explicit precedence controls. Introduces XmpExistingDestinationEmbeddedMode and XmpExistingDestinationEmbeddedPrecedence enums and extends Prepare/Execute options and results to carry the requested merge and status information. Implements decode_existing_destination_embedded_xmp_into_store and helpers (value copying, append) to read, validate and merge XMP entries into the transfer MetaStore, and threads the feature through prepare/execute flows. Adds CLI and Python flags/arguments, updates the Python bindings and metatransfer tool to accept precedence and inclusion flags, and updates docs/README and tests to reflect the new behavior. Also includes TIFF/IFD pointer-preservation logic to preserve standard pointer tags (e.g. ExifIFD->InteropIFD) when replacing front subsets.
Copy file name to clipboardExpand all lines: docs/metadata_transfer_plan.md
+26-5Lines changed: 26 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,7 +47,7 @@ The first public write-side sync controls are also in place:
47
47
| Target | Status | Current shape | Main limits |
48
48
| --- | --- | --- | --- |
49
49
| JPEG | First-class | Prepared bundle, compiled emit, byte-writer emit, edit planning/apply, file helper, bounded JUMBF/C2PA staging | Not a full arbitrary metadata editor yet |
50
-
| TIFF | First-class | Prepared bundle, compiled emit, classic-TIFF and BigTIFF edit planning/apply, bounded `ifd1` chain rewrite with preserved downstream page tails, bounded TIFF/DNG-style SubIFD rewrite with preserved downstream auxiliary tails and preserved trailing existing children when only the front subset is replaced, file helper, streaming edit path | Broader TIFF/DNG rewrite coverage is still narrower than JPEG |
50
+
| TIFF | First-class | Prepared bundle, compiled emit, classic-TIFF and BigTIFF edit planning/apply, bounded preview-page chain rewrite (`ifd1`, `ifd2`, and preserved downstream tails), bounded TIFF/DNG-style SubIFD rewrite with preserved downstream auxiliary tails and preserved trailing existing children when only the front subset is replaced, bounded `ExifIFD -> InteropIFD` preservation when a replaced ExifIFD omits its own interop child, file helper, streaming edit path | Broader TIFF/DNG rewrite coverage is still narrower than JPEG |
51
51
| PNG | Bounded but real | Prepared bundle, compiled emit, bounded chunk rewrite/edit, file-helper roundtrip | Not a general PNG chunk editor |
52
52
| WebP | Bounded but real | Prepared bundle, compiled emit, bounded chunk rewrite/edit, file-helper roundtrip | Not a general WebP chunk editor |
53
53
| JP2 | Bounded but real | Prepared bundle, compiled emit, bounded box rewrite/edit, file-helper roundtrip |`jp2h` synthesis is still out of scope |
@@ -87,9 +87,10 @@ These support the public transfer flow:
87
87
OpenMeta now has explicit end-to-end read-backed transfer tests for:
88
88
- source JPEG -> JPEG edit/apply -> read-back
89
89
- source JPEG -> TIFF edit/apply -> read-back
90
-
- source JPEG -> TIFF edit/apply with `ifd1` -> read-back
0 commit comments