OpenMetaΒΆ
OpenMeta is a C++ library for reading metadata across common image and media containers. It does not decode, decompress, demosaic, or render image pixels.
What it does today:
Scans files to locate metadata blocks (EXIF, XMP, ICC, IPTC, Photoshop IRB, MPF, comments, JUMBF/C2PA hints, and BMFF item-graph metadata).
Extracts and optionally decompresses block payloads (size-limited).
Decodes common blocks into a typed, normalized in-memory model: EXIF/TIFF-IFD tags, XMP properties, IPTC-IIM datasets, ICC profile header/tag tables, Photoshop IRB (8BIM) resource blocks, BMFF derived fields, and EXR header attributes.
Exposes sidecar dump paths (lossless and portable) and validation APIs/tools (metavalidate) with machine-readable issue codes for CI gating.
Read-path coverage snapshot:
Tracked HEIC/HEIF, CR3, and mixed RAW EXIF compare gates are passing.
EXR header metadata compare gate is passing for the documented contract.
MakerNote support is broad and baseline-gated; unknown tags remain lossless.
RAW read-depth gaps are tracked by family in RAW Read Parity Plan.
Camera RAW support refers to metadata carrier discovery and documented metadata interpretation. It does not imply RAW pixel decoding, complete vendor private-table interpretation, or native camera RAW writing.
OpenMeta is designed to treat metadata as untrusted input and provides explicit limits and sanitization controls. See Security for current known limitations. The optional C2PA verification scaffold is diagnostic only and must not be used as an asset-authenticity or trust gate.
- Quick Start
- Host Integration
- Pick the integration path
- Adapter classes
- Read and query
- Random-access source foundation
- Generic host metadata traversal
- EXR attribute batches
- Host-owned JPEG or JXL output
- Edit an existing target file
- Query runtime capabilities
- Optional Adobe DNG SDK bridge
- Phase One RAW Processing Metadata
- Vendor RAW Processing Metadata
- Author and serialize metadata
- Related pages
- Host Adoption Profile
- Prepared Transfer Handoff
- Random-Access Input
- API Stability
- EXIF 3.1 LearningOptOutIn and Profile Authoring Update (0.5.12)
- EXIF 3.1 Development and Correction Update (0.5.11)
- FlatHost Mapping Contract
- Compatibility Dump Contract
- XMP Sync And Writeback Policy
- Writer Target Contract
- Interpretation Status
- Fuzzy Search
- Metadata Creation
- Generic Typed Metadata Authoring
- Metadata Editing
- Metadata Translation
- Development/correction and learning lifecycle (0.8.11)
- Workflow
- Date mappings
- Technical EXIF mappings
- Capture EXIF mappings
- Capture settings writeback
- Exact capture rational writeback
- Complete Flash writeback
- LightSource writeback
- Target-bound image geometry
- Descriptive mappings
- Location mappings
- Structured location reconciliation
- Structured location construction
- Editorial mappings
- Combined IPTC writeback
- Primary GPS writeback
- GPS time and navigation writeback
- Destination GPS writeback
- GPS receiver quality writeback
- GPS text writeback
- Conflict and removal policy
- C++ example
- Python
- Scope
- Camera, lens and spectral text writeback
- Lens specification and image identity writeback
- APEX writeback (contract version 2)
- Focal-plane and subject writeback (contract version 2)
- Additional capture and environment fields (0.5.6)
- Image Encoding and Composite Capture (0.5.7)
- Structured Capture Data (0.5.8)
- EXIF Text and Version Metadata (0.5.9)
- EXIF 3.1 Development and Correction Data (0.5.11)
- EXIF 3.1 LearningOptOutIn Data (0.5.12)
- Profile and Authoring Data (0.5.12)
- JP2 and JPH Qualification Boundary
- Capture Synchronization Milestone
- Development/correction and learning lifecycle in 0.8.11
- Native EXIF text/version lifecycle in 0.8.10
- Native structured capture lifecycle in 0.8.9
- Typed editing and new fields in 0.5.6
- Fixes in 0.5.5
- Implemented Targets
- Historical 0.5.4 Qualification and Gaps
- Composition and Next Batch
- Encoding and Composite Capture in 0.5.7
- EXIF Text and Version Update (0.5.9)
- Native Encoding and Composite Lifecycle in 0.8.8
- Standard EXIF Authoring Inventory
- Canonical Metadata Serialization
- Prepared metadata patching
- RAW Read Parity Plan
- Build and Install
- Shared Library Contract
- Migrating to OpenMeta 0.6.0
- Migrating to OpenMeta 0.8
- Migrating to OpenMeta 0.7
- Developer Notes
- EXIF 3.1 Development and Correction Update (0.5.11)
- Interop API
- EXR Metadata Contract
- Testing
- Security
- API Reference
openmeta::AppendPreparedJpegJumbfOptionsopenmeta::ApplyDngSdkMetadataFileOptionsopenmeta::ApplyDngSdkMetadataFileResultopenmeta::ApplyTimePatchOptionsopenmeta::ApplyTimePatchResultopenmeta::BlockInfoopenmeta::BlockSpanopenmeta::MetaKey::Data::BmffFieldopenmeta::MetaKeyView::Data::BmffFieldopenmeta::BmffTransferEmitteropenmeta::BuildExrAttributeBatchFileOptionsopenmeta::BuildExrAttributeBatchFileResultopenmeta::BuildInfoopenmeta::BuildPreparedC2paBindingResultopenmeta::ByteArenaopenmeta::ByteSpanopenmeta::CcmFieldopenmeta::CcmIssueopenmeta::CcmQueryLimitsopenmeta::CcmQueryOptionsopenmeta::CcmQueryResultopenmeta::MetaKey::Data::Commentopenmeta::MetaKeyView::Data::Commentopenmeta::ContainerBlockRefopenmeta::ContainerRandomAccessScanResultopenmeta::ContainerRandomAccessScratchopenmeta::MetaKey::Dataopenmeta::MetaKeyView::Dataopenmeta::MetaValue::Dataopenmeta::DngSdkAdapterOptionsopenmeta::DngSdkAdapterResultopenmeta::EditOpopenmeta::EmittedBmffItemSummaryopenmeta::EmittedBmffPropertySummaryopenmeta::EmittedExrAttributeSummaryopenmeta::EmittedJp2BoxSummaryopenmeta::EmittedJpegMarkerSummaryopenmeta::EmittedJxlBoxSummaryopenmeta::EmittedPngChunkSummaryopenmeta::EmittedTiffTagSummaryopenmeta::EmittedWebpChunkSummaryopenmeta::EmitTransferOptionsopenmeta::EmitTransferResultopenmeta::Entryopenmeta::ExecutePreparedTransferBundleOptionsopenmeta::ExecutePreparedTransferFileOptionsopenmeta::ExecutePreparedTransferFileResultopenmeta::ExecutePreparedTransferOptionsopenmeta::ExecutePreparedTransferResultopenmeta::ExecutePreparedTransferSnapshotOptionsopenmeta::ExifDecodeLimitsopenmeta::ExifDecodeOptionsopenmeta::ExifDecodeResultopenmeta::ExifIfdRefopenmeta::ExifIfdTokenPolicyopenmeta::ExifOrientationInterpretationopenmeta::ExifRandomAccessDecodeResultopenmeta::ExifRandomAccessScratchopenmeta::MetaKey::Data::ExifTagopenmeta::MetaKeyView::Data::ExifTagopenmeta::ExifTiffSerializeOptionsopenmeta::ExifTiffSerializeResultopenmeta::ExportItemopenmeta::ExportOptionsopenmeta::ExrAdapterAttributeopenmeta::ExrAdapterBatchopenmeta::ExrAdapterOptionsopenmeta::ExrAdapterPartSpanopenmeta::ExrAdapterPartViewopenmeta::ExrAdapterReplayCallbacksopenmeta::ExrAdapterReplayResultopenmeta::ExrAdapterResultopenmeta::MetaKey::Data::ExrAttributeopenmeta::MetaKeyView::Data::ExrAttributeopenmeta::ExrDecodeLimitsopenmeta::ExrDecodeOptionsopenmeta::ExrDecodeResultopenmeta::ExrPreparedAttributeopenmeta::ExrPreparedAttributeViewopenmeta::ExrRandomAccessDecodeResultopenmeta::ExrRandomAccessScratchopenmeta::ExrTransferEmitteropenmeta::FlatHostImportItemopenmeta::FlatHostImportOptionsopenmeta::FlatHostImportResultopenmeta::FlatHostImportValueopenmeta::MetaKey::Data::GeotiffKeyopenmeta::MetaKeyView::Data::GeotiffKeyopenmeta::HostAdoptionProfileopenmeta::IccDecodeLimitsopenmeta::IccDecodeOptionsopenmeta::IccDecodeResultopenmeta::MetaKey::Data::IccHeaderFieldopenmeta::MetaKeyView::Data::IccHeaderFieldopenmeta::MetaKey::Data::IccTagopenmeta::MetaKeyView::Data::IccTagopenmeta::IccTagInterpretationopenmeta::IccTagInterpretLimitsopenmeta::IccTagInterpretOptionsopenmeta::InteropSafetyErroropenmeta::MetaKey::Data::IptcDatasetopenmeta::MetaKeyView::Data::IptcDatasetopenmeta::IptcIimDecodeLimitsopenmeta::IptcIimDecodeOptionsopenmeta::IptcIimDecodeResultopenmeta::Jp2TransferEmitteropenmeta::JpegEditPlanopenmeta::JpegTransferEmitteropenmeta::MetaKey::Data::JumbfCborKeyopenmeta::MetaKeyView::Data::JumbfCborKeyopenmeta::JumbfDecodeLimitsopenmeta::JumbfDecodeOptionsopenmeta::JumbfDecodeResultopenmeta::MetaKey::Data::JumbfFieldopenmeta::MetaKeyView::Data::JumbfFieldopenmeta::JumbfStructureEstimateopenmeta::JxlTransferEmitteropenmeta::KeySpanopenmeta::LibRawFlipToExifOptionsopenmeta::LibRawFlipToExifResultopenmeta::LibRawOrientationFileOptionsopenmeta::LibRawOrientationFileResultopenmeta::LibRawOrientationOptionsopenmeta::LibRawOrientationResultopenmeta::MappedFileopenmeta::MetadataApexTranslationOptionsopenmeta::MetadataAuthoringEntryopenmeta::MetadataAuthoringOptionsopenmeta::MetadataAuthoringResultopenmeta::MetadataCameraTextTranslationOptionsopenmeta::MetadataCapabilityopenmeta::MetadataCaptureAdditionalTranslationOptionsopenmeta::MetadataCaptureRationalTranslationOptionsopenmeta::MetadataCaptureSettingsTranslationOptionsopenmeta::MetadataCaptureSpatialTranslationOptionsopenmeta::MetadataCaptureTranslationOptionsopenmeta::MetadataCaptureTranslationResultopenmeta::MetadataCompatibilityDumpOptionsopenmeta::MetadataCompositeTranslationOptionsopenmeta::MetadataConceptCandidateopenmeta::MetadataConceptResolutionopenmeta::MetadataConceptResultopenmeta::MetadataCreationFieldopenmeta::MetadataCreationLimitsopenmeta::MetadataCreationRequestopenmeta::MetadataCreationResultopenmeta::MetadataDateTranslationOptionsopenmeta::MetadataDateTranslationResultopenmeta::MetadataDescriptiveTranslationOptionsopenmeta::MetadataDescriptiveTranslationResultopenmeta::MetadataDevelopmentCorrectionTranslationOptionsopenmeta::MetadataEditingLimitsopenmeta::MetadataEditingOperationopenmeta::MetadataEditingRequestopenmeta::MetadataEditingResultopenmeta::MetadataEditorialTranslationOptionsopenmeta::MetadataEnvironmentTranslationOptionsopenmeta::MetadataExifTextTranslationOptionsopenmeta::MetadataFlashTranslationOptionsopenmeta::MetadataFuzzySearchMatchopenmeta::MetadataFuzzySearchOptionsopenmeta::MetadataFuzzySearchResultopenmeta::MetadataGeometryTranslationOptionsopenmeta::MetadataGeometryTranslationResultopenmeta::MetadataGpsDestinationTranslationOptionsopenmeta::MetadataGpsNavigationTranslationOptionsopenmeta::MetadataGpsQualityTranslationOptionsopenmeta::MetadataGpsTextTranslationOptionsopenmeta::MetadataGpsTranslationOptionsopenmeta::MetadataGpsTranslationResultopenmeta::MetadataIdentityTranslationOptionsopenmeta::MetadataImageEncodingTranslationOptionsopenmeta::MetadataInterpretationRecordopenmeta::MetadataInterpretationResultopenmeta::MetadataIptcTranslationOptionsopenmeta::MetadataLearningOptOutInTranslationOptionsopenmeta::MetadataLightSourceTranslationOptionsopenmeta::MetadataLocationCreationTranslationOptionsopenmeta::MetadataLocationTranslationOptionsopenmeta::MetadataPatchExifOptionsopenmeta::MetadataPatchHandleopenmeta::MetadataPatchPlanOptionsopenmeta::MetadataPatchRequestopenmeta::MetadataPatchResultopenmeta::MetadataPatchUpdateopenmeta::MetadataPatchValueSpecopenmeta::MetadataProfileTranslationOptionsopenmeta::MetadataQueryCandidateopenmeta::MetadataQueryMatchopenmeta::MetadataQueryResultopenmeta::MetadataRawDataDescriptoropenmeta::MetadataSensitivityTranslationOptionsopenmeta::MetadataSinkopenmeta::MetadataStructuredCaptureTranslationOptionsopenmeta::MetadataStructuredLocationTranslationOptionsopenmeta::MetadataTechnicalTranslationOptionsopenmeta::MetadataTechnicalTranslationResultopenmeta::MetadataTypedEditingOperationopenmeta::MetadataTypedEditingOptionsopenmeta::MetadataTypedEditingResultopenmeta::MetadataValidationContextopenmeta::MetadataValidationIssueopenmeta::MetadataValidationOptionsopenmeta::MetadataValidationResultopenmeta::MetaEditopenmeta::MetaKeyopenmeta::MetaKeyViewopenmeta::MetaStoreopenmeta::MetaValueopenmeta::MetaValueViewopenmeta::OcioAdapterOptionsopenmeta::OcioAdapterRequestopenmeta::OcioMetadataNodeopenmeta::OpenMetaResourcePolicyopenmeta::Originopenmeta::PayloadLimitsopenmeta::PayloadOptionsopenmeta::PayloadRandomAccessResultopenmeta::PayloadRandomAccessScratchopenmeta::PayloadResultopenmeta::PersistPreparedTransferFileOptionsopenmeta::PersistPreparedTransferFileResultopenmeta::PhaseOneRawGeometryopenmeta::PhaseOneRawGeometryResultopenmeta::PhaseOneRawProcessingInfoopenmeta::PhaseOneRawProcessingResultopenmeta::MetaKey::Data::PhotoshopIrbopenmeta::MetaKeyView::Data::PhotoshopIrbopenmeta::PhotoshopIrbDecodeLimitsopenmeta::PhotoshopIrbDecodeOptionsopenmeta::PhotoshopIrbDecodeResultopenmeta::MetaKey::Data::PhotoshopIrbFieldopenmeta::MetaKeyView::Data::PhotoshopIrbFieldopenmeta::PlanJpegEditOptionsopenmeta::PlanTiffEditOptionsopenmeta::MetaKey::Data::PngTextopenmeta::MetaKeyView::Data::PngTextopenmeta::PngTransferEmitteropenmeta::PreparedBmffEmitOpopenmeta::PreparedBmffEmitPlanopenmeta::PreparedExrEmitOpopenmeta::PreparedExrEmitPlanopenmeta::PreparedJp2EmitOpopenmeta::PreparedJp2EmitPlanopenmeta::PreparedJpegEmitOpopenmeta::PreparedJpegEmitPlanopenmeta::PreparedJxlEmitOpopenmeta::PreparedJxlEmitPlanopenmeta::PreparedJxlEncoderHandoffopenmeta::PreparedJxlEncoderHandoffIoResultopenmeta::PreparedJxlEncoderHandoffViewopenmeta::PreparedMetadataPatchInstanceopenmeta::PreparedMetadataPatchPlanopenmeta::PreparedPngEmitOpopenmeta::PreparedPngEmitPlanopenmeta::PreparedTiffEmitOpopenmeta::PreparedTiffEmitPlanopenmeta::PreparedTransferAdapterOpopenmeta::PreparedTransferAdapterViewopenmeta::PreparedTransferArtifactInfoopenmeta::PreparedTransferArtifactIoResultopenmeta::PreparedTransferBlockopenmeta::PreparedTransferBundleopenmeta::PreparedTransferC2paHandoffPackageopenmeta::PreparedTransferC2paPackageIoResultopenmeta::PreparedTransferC2paRewriteChunkopenmeta::PreparedTransferC2paRewriteRequirementsopenmeta::PreparedTransferC2paSignedPackageopenmeta::PreparedTransferC2paSignerInputopenmeta::PreparedTransferC2paSignRequestopenmeta::PreparedTransferExecutionPlanopenmeta::PreparedTransferHandoffopenmeta::PreparedTransferHandoffInstanceopenmeta::PreparedTransferHandoffOperationViewopenmeta::PreparedTransferHandoffPatchResultopenmeta::PreparedTransferHandoffResultopenmeta::PreparedTransferHandoffTimePatchFieldViewopenmeta::PreparedTransferPackageBatchopenmeta::PreparedTransferPackageBlobopenmeta::PreparedTransferPackageChunkopenmeta::PreparedTransferPackageIoResultopenmeta::PreparedTransferPackagePlanopenmeta::PreparedTransferPackageReplayCallbacksopenmeta::PreparedTransferPackageReplayResultopenmeta::PreparedTransferPackageViewopenmeta::PreparedTransferPayloadopenmeta::PreparedTransferPayloadBatchopenmeta::PreparedTransferPayloadIoResultopenmeta::PreparedTransferPayloadReplayCallbacksopenmeta::PreparedTransferPayloadReplayResultopenmeta::PreparedTransferPayloadViewopenmeta::PreparedTransferPolicyDecisionopenmeta::PreparedWebpEmitOpopenmeta::PreparedWebpEmitPlanopenmeta::PrepareTransferFileOptionsopenmeta::PrepareTransferFileResultopenmeta::PrepareTransferRequestopenmeta::PrepareTransferResultopenmeta::PreviewCandidateopenmeta::PreviewExtractOptionsopenmeta::PreviewExtractResultopenmeta::PreviewScanLimitsopenmeta::PreviewScanOptionsopenmeta::PreviewScanResultopenmeta::PrintImDecodeLimitsopenmeta::PrintImDecodeResultopenmeta::MetaKey::Data::PrintImFieldopenmeta::MetaKeyView::Data::PrintImFieldopenmeta::RandomAccessIoResultopenmeta::RandomAccessReadLimitsopenmeta::RandomAccessReadStateopenmeta::RandomAccessReadWindowopenmeta::RandomAccessReadWindowOptionsopenmeta::RandomAccessSourceopenmeta::RandomAccessSourceRangeopenmeta::RandomAccessViewResultopenmeta::ReadTransferSourceDiagnosticopenmeta::ReadTransferSourceDiagnosticOptionsopenmeta::ReadTransferSourceDiagnosticsResultopenmeta::ReadTransferSourceSnapshotBytesResultopenmeta::ReadTransferSourceSnapshotFileOptionsopenmeta::ReadTransferSourceSnapshotFileResultopenmeta::ReadTransferSourceSnapshotRandomAccessOptionsopenmeta::ReadTransferSourceSnapshotRandomAccessResultopenmeta::ReadTransferSourceSnapshotRandomAccessScratchopenmeta::ScanResultopenmeta::SimpleMetaDecodeOptionsopenmeta::SimpleMetaResultopenmeta::SpanTransferByteWriteropenmeta::SRationalopenmeta::TiffEditPlanopenmeta::TiffTransferEmitteropenmeta::TimePatchSlotopenmeta::TimePatchUpdateopenmeta::TimePatchViewopenmeta::TransferAdapterSinkopenmeta::TransferByteWriteropenmeta::TransferCompatibilityDumpOptionsopenmeta::TransferConceptDiagnosticopenmeta::TransferConceptDiagnosticsopenmeta::TransferMakerNoteAuditopenmeta::TransferMakerNoteLayoutAuditopenmeta::TransferProfileopenmeta::TransferRawCarrierPassthroughAuditopenmeta::TransferRawCarrierPassthroughAuditOptionsopenmeta::TransferRawCarrierPassthroughDecisionopenmeta::TransferSafetyAuditopenmeta::TransferSourceRawCarrieropenmeta::TransferSourceSnapshotopenmeta::TransferSourceSnapshotIoOptionsopenmeta::TransferSourceSnapshotIoResultopenmeta::TransferTargetImageSpecopenmeta::TransferTimePatchInputopenmeta::URationalopenmeta::ValidateIssueopenmeta::ValidateOptionsopenmeta::ValidatePreparedC2paSignResultopenmeta::ValidateResultopenmeta::VendorRawProcessingSummaryopenmeta::WebpTransferEmitteropenmeta::WireTypeopenmeta::XmpDecodeLimitsopenmeta::XmpDecodeOptionsopenmeta::XmpDecodeResultopenmeta::XmpDumpLimitsopenmeta::XmpDumpOptionsopenmeta::XmpDumpResultopenmeta::XmpPortableOptionsopenmeta::MetaKey::Data::XmpPropertyopenmeta::MetaKeyView::Data::XmpPropertyopenmeta::XmpSidecarOptionsopenmeta::XmpSidecarRequestopenmetaOPENMETA_APIOPENMETA_PUBLIC_BEGINOPENMETA_PUBLIC_END