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
Introduce TransferSafetyMode (CompatibleFile, RenderedImage) and thread it through TransferProfile (default CompatibleFile). When RenderedImage is selected, prepare/apply logic filters safety-sensitive metadata: drop source ICC for rendered outputs, raw color calibration tags, camera raw settings XMP, opaque MakerNotes and non-C2PA JUMBF, and adjust C2PA handling (invalidate when appropriate). Implement counting and policy-decision reporting for filtered groups, apply safety-aware resolution of makernote/jumbf/c2pa policies, and add BMFF insertion compatibility changes (newly inserted item records use iloc construction method 0 with absolute file-offset extents and compact zero-width base-offset when safe). Update public docs, examples, Python/CLI wrappers (new --transfer-safety option), and tests to cover the new safety mode and the BMFF compatibility behavior.
Copy file name to clipboardExpand all lines: docs/host_integration.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -425,9 +425,20 @@ container or inject values derived from the actual output buffer. Enable source
425
425
ICC transfer only when the host has verified that the profile matches the target
426
426
pixel buffer; otherwise preserve or write the target profile.
427
427
428
+
Use `TransferProfile::safety` for the broad source/destination relationship:
429
+
430
+
| Mode | Use when | Transfer policy |
431
+
| --- | --- | --- |
432
+
|`CompatibleFile`| Metadata is repackaged or recompressed into a compatible file/pixel representation | Preserve source camera, color, ICC, and camera-specific data except target-owned image-layout fields |
433
+
|`RenderedImage`| Pixels may have changed, especially RAW-to-JPEG/PNG/WebP/JXL/HEIF/AVIF export | Keep general/time/GPS/IPTC/portable XMP; drop source raw color calibration, linearization/crop/correction metadata, camera raw settings XMP, source ICC, opaque MakerNotes, and non-C2PA JUMBF |
434
+
435
+
See [writer_target_contract.md](writer_target_contract.md#transfer-safety-matrix)
Copy file name to clipboardExpand all lines: docs/sphinx/host_integration.rst
+19Lines changed: 19 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -393,10 +393,29 @@ container or inject values derived from the actual output buffer. Enable source
393
393
ICC transfer only when the host has verified that the profile matches the target
394
394
pixel buffer; otherwise preserve or write the target profile.
395
395
396
+
Use ``TransferProfile::safety`` for the broad source/destination relationship:
397
+
398
+
.. list-table::
399
+
:header-rows: 1
400
+
:widths: 18 32 50
401
+
402
+
* - Mode
403
+
- Use when
404
+
- Transfer policy
405
+
* - ``CompatibleFile``
406
+
- Metadata is repackaged or recompressed into a compatible file/pixel representation
407
+
- Preserve source camera, color, ICC, and camera-specific data except target-owned image-layout fields
408
+
* - ``RenderedImage``
409
+
- Pixels may have changed, especially RAW-to-JPEG/PNG/WebP/JXL/HEIF/AVIF export
410
+
- Keep general/time/GPS/IPTC/portable XMP; drop source raw color calibration, linearization/crop/correction metadata, camera raw settings XMP, source ICC, opaque MakerNotes, and non-C2PA JUMBF
411
+
412
+
See :ref:`transfer-safety-matrix` for the detailed per-group transfer matrix.
0 commit comments