OpenMetaΒΆ
OpenMeta is a C++ library for reading metadata safely across common image and media containers.
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.
OpenMeta treats metadata as untrusted input and applies explicit limits and sanitization to reduce memory and output attack surface.
- Quick Start
- Host Integration
- Pick the integration path
- Adapter classes
- Read and query
- 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
- Related pages
- API Stability
- FlatHost Mapping Contract
- Compatibility Dump Contract
- XMP Sync And Writeback Policy
- Writer Target Contract
- Interpretation Status
- RAW Read Parity Plan
- Build and Install
- Developer Notes
- 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::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::MetaKey::Data::ExifTagopenmeta::MetaKeyView::Data::ExifTagopenmeta::ExportItemopenmeta::ExportOptionsopenmeta::ExrAdapterAttributeopenmeta::ExrAdapterBatchopenmeta::ExrAdapterOptionsopenmeta::ExrAdapterPartSpanopenmeta::ExrAdapterPartViewopenmeta::ExrAdapterReplayCallbacksopenmeta::ExrAdapterReplayResultopenmeta::ExrAdapterResultopenmeta::MetaKey::Data::ExrAttributeopenmeta::MetaKeyView::Data::ExrAttributeopenmeta::ExrDecodeLimitsopenmeta::ExrDecodeOptionsopenmeta::ExrDecodeResultopenmeta::ExrPreparedAttributeopenmeta::ExrPreparedAttributeViewopenmeta::ExrTransferEmitteropenmeta::MetaKey::Data::GeotiffKeyopenmeta::MetaKeyView::Data::GeotiffKeyopenmeta::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::MetadataCapabilityopenmeta::MetadataCompatibilityDumpOptionsopenmeta::MetadataConceptCandidateopenmeta::MetadataConceptResolutionopenmeta::MetadataConceptResultopenmeta::MetadataInterpretationRecordopenmeta::MetadataInterpretationResultopenmeta::MetadataQueryCandidateopenmeta::MetadataQueryMatchopenmeta::MetadataQueryResultopenmeta::MetadataSinkopenmeta::MetaEditopenmeta::MetaKeyopenmeta::MetaKeyViewopenmeta::MetaStoreopenmeta::MetaValueopenmeta::OcioAdapterOptionsopenmeta::OcioAdapterRequestopenmeta::OcioMetadataNodeopenmeta::OpenMetaResourcePolicyopenmeta::Originopenmeta::PayloadLimitsopenmeta::PayloadOptionsopenmeta::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::PreparedPngEmitOpopenmeta::PreparedPngEmitPlanopenmeta::PreparedTiffEmitOpopenmeta::PreparedTiffEmitPlanopenmeta::PreparedTransferAdapterOpopenmeta::PreparedTransferAdapterViewopenmeta::PreparedTransferArtifactInfoopenmeta::PreparedTransferArtifactIoResultopenmeta::PreparedTransferBlockopenmeta::PreparedTransferBundleopenmeta::PreparedTransferC2paHandoffPackageopenmeta::PreparedTransferC2paPackageIoResultopenmeta::PreparedTransferC2paRewriteChunkopenmeta::PreparedTransferC2paRewriteRequirementsopenmeta::PreparedTransferC2paSignedPackageopenmeta::PreparedTransferC2paSignerInputopenmeta::PreparedTransferC2paSignRequestopenmeta::PreparedTransferExecutionPlanopenmeta::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::ReadTransferSourceSnapshotBytesResultopenmeta::ReadTransferSourceSnapshotFileOptionsopenmeta::ReadTransferSourceSnapshotFileResultopenmeta::ScanResultopenmeta::SimpleMetaDecodeOptionsopenmeta::SimpleMetaResultopenmeta::SpanTransferByteWriteropenmeta::SRationalopenmeta::TiffEditPlanopenmeta::TiffTransferEmitteropenmeta::TimePatchSlotopenmeta::TimePatchUpdateopenmeta::TimePatchViewopenmeta::TransferAdapterSinkopenmeta::TransferByteWriteropenmeta::TransferCompatibilityDumpOptionsopenmeta::TransferConceptDiagnosticopenmeta::TransferConceptDiagnosticsopenmeta::TransferProfileopenmeta::TransferRawCarrierPassthroughAuditopenmeta::TransferRawCarrierPassthroughAuditOptionsopenmeta::TransferRawCarrierPassthroughDecisionopenmeta::TransferSafetyAuditopenmeta::TransferSourceRawCarrieropenmeta::TransferSourceSnapshotopenmeta::TransferTargetImageSpecopenmeta::TransferTimePatchInputopenmeta::URationalopenmeta::ValidateIssueopenmeta::ValidateOptionsopenmeta::ValidatePreparedC2paSignResultopenmeta::ValidateResultopenmeta::VendorRawProcessingSummaryopenmeta::WebpTransferEmitteropenmeta::WireTypeopenmeta::XmpDecodeLimitsopenmeta::XmpDecodeOptionsopenmeta::XmpDecodeResultopenmeta::XmpDumpLimitsopenmeta::XmpDumpOptionsopenmeta::XmpDumpResultopenmeta::XmpPortableOptionsopenmeta::MetaKey::Data::XmpPropertyopenmeta::MetaKeyView::Data::XmpPropertyopenmeta::XmpSidecarOptionsopenmeta::XmpSidecarRequestopenmeta