<!--
{
  "documentType" : "article",
  "framework" : "CoreMedia",
  "identifier" : "/documentation/CoreMedia/cmmetadata",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "CMMetadata"
}
-->

# CMMetadata

The APIs for working with the framework’s Metadata Identifier Services and Metadata Data Type Registry.

## Discussion

The Core Media framework provides two services: Metadata Identifier Services and the Metadata Data Type Registry.

Metadata Identifier Services provide a means of encoding the metadata identifying tuple (four-byte key namespace and N-byte key value) into <doc://com.apple.documentation/documentation/CoreFoundation/CFString>, and back again.

The Metadata Data Type Registry allows a process to register metadata data types that conform to a base data type and (optionally) other registered data types. The registry simplifies the process of creating format descriptions for nontrivial metadata values and allowing clients to indicate how to interpret metadata.

## Topics

### Creating Metadata Identifiers

[`func CMMetadataCreateIdentifierForKeyAndKeySpace(allocator: CFAllocator?, key: CFTypeRef, keySpace: CFString, identifierOut: UnsafeMutablePointer<CFString?>) -> OSStatus`](/documentation/CoreMedia/CMMetadataCreateIdentifierForKeyAndKeySpace(allocator:key:keySpace:identifierOut:))

Creates a URL-like string identifier that represents a key or keyspace tuple.

[`func CMMetadataCreateKeyFromIdentifier(allocator: CFAllocator?, identifier: CFString, keyOut: UnsafeMutablePointer<CFTypeRef?>) -> OSStatus`](/documentation/CoreMedia/CMMetadataCreateKeyFromIdentifier(allocator:identifier:keyOut:))

Creates a copy of the key by using an identifier.

[`func CMMetadataCreateKeyFromIdentifierAsCFData(allocator: CFAllocator?, identifier: CFString, keyOut: UnsafeMutablePointer<CFData?>) -> OSStatus`](/documentation/CoreMedia/CMMetadataCreateKeyFromIdentifierAsCFData(allocator:identifier:keyOut:))

Creates a copy of the key by using an identifier, and results in a core foundation data object.

[`func CMMetadataCreateKeySpaceFromIdentifier(allocator: CFAllocator?, identifier: CFString, keySpaceOut: UnsafeMutablePointer<CFString?>) -> OSStatus`](/documentation/CoreMedia/CMMetadataCreateKeySpaceFromIdentifier(allocator:identifier:keySpaceOut:))

Creates a copy of the keyspace by using an identifier.

### Registering Metadata

[`func CMMetadataDataTypeRegistryRegisterDataType(CFString, description: CFString, conformingDataTypes: CFArray) -> OSStatus`](/documentation/CoreMedia/CMMetadataDataTypeRegistryRegisterDataType(_:description:conformingDataTypes:))

Register a data type with the data type registry.

### Inspecting Metadata

[`func CMMetadataDataTypeRegistryDataTypeIsRegistered(CFString) -> Bool`](/documentation/CoreMedia/CMMetadataDataTypeRegistryDataTypeIsRegistered(_:))

Returns a Boolean value that indicates the registration status of a data type identifier.

[`func CMMetadataDataTypeRegistryGetDataTypeDescription(CFString) -> CFString`](/documentation/CoreMedia/CMMetadataDataTypeRegistryGetDataTypeDescription(_:))

Returns the data type description if it exists.

[`func CMMetadataDataTypeRegistryGetConformingDataTypes(CFString) -> CFArray`](/documentation/CoreMedia/CMMetadataDataTypeRegistryGetConformingDataTypes(_:))

Returns the conforming data types for the data type, if any.

[`func CMMetadataDataTypeRegistryDataTypeConformsToDataType(CFString, conformsTo: CFString) -> Bool`](/documentation/CoreMedia/CMMetadataDataTypeRegistryDataTypeConformsToDataType(_:conformsTo:))

Returns a Boolean value that indicates whether a data type conforms to another data type.

[`func CMMetadataDataTypeRegistryDataTypeIsBaseDataType(CFString) -> Bool`](/documentation/CoreMedia/CMMetadataDataTypeRegistryDataTypeIsBaseDataType(_:))

Returns a Boolean value that indicates whether a data type identifier represents a base data type.

[`func CMMetadataDataTypeRegistryGetBaseDataTypeForConformingDataType(CFString) -> CFString`](/documentation/CoreMedia/CMMetadataDataTypeRegistryGetBaseDataTypeForConformingDataType(_:))

Returns the base data type identifier that a data type conforms to.

[`func CMMetadataDataTypeRegistryGetBaseDataTypes() -> CFArray?`](/documentation/CoreMedia/CMMetadataDataTypeRegistryGetBaseDataTypes())

Returns an array of base data type identifiers.

### Constants

[Metadata Identifier Error Codes](/documentation/CoreMedia/metadata-identifier-errors)

Error codes that indicate metadata identifier errors.

[Metadata Registry Error Codes](/documentation/CoreMedia/metadata-registry-errors)

Error codes that indicate metadata registry errors.

[Metadata Identifier Keyspaces](/documentation/CoreMedia/metadata-identifier-keyspaces)

Constants that describe metadata identifier keyspaces.

[Metadata Identifiers](/documentation/CoreMedia/metadata-identifiers)

Constants that describe metadata identifiers.

[Metadata Base Data Types](/documentation/CoreMedia/metadata-base-data-types)

Constants that describe metadata base data types.

[Metadata Data Types](/documentation/CoreMedia/metadata-data-types)

Constants that describe metadata data types.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)