CoreMediaIO lets you create and manage Camera Extensions and hardware plug-ins that present virtual or real video capture devices to macOS. You model a plug-in's device tree with classes such as CMIOExtensionProvider, CMIOExtensionDevice, and CMIOExtensionStream, and supply their behavior by adopting the CMIOExtensionProviderSource, CMIOExtensionDeviceSource, and CMIOExtensionStreamSource protocols. Use types like CMIOExtensionStreamFormat, CMIOExtensionScheduledOutput, and CMIOExtensionStreamCustomClockConfiguration to describe stream formats and timing, and CMIOExtensionProperty along with CMIOExtensionPropertyState and CMIOExtensionPropertyAttributes to expose configurable properties to a connected CMIOExtensionClient. Lower-level structures such as CMIOObjectPropertyAddress, CMIODeviceStreamConfiguration, and CMIODeviceAVCCommand give access to device configuration and control.
Extension Provider 3
The top-level object that represents your Camera Extension and vends its devices to the system.
- ClCMIOExtensionProvidermacOS 12.3+@class CMIOExtensionProvider
- PrCMIOExtensionProviderSourcemacOS 12.3+A protocol you adopt to supply the behavior and properties of an extension's provider.
- ClCMIOExtensionProviderPropertiesmacOS 12.3+@class CMIOExtensionProviderProperties
Devices 3
Types that model the capture devices presented by an extension and supply their behavior.
- ClCMIOExtensionDevicemacOS 12.3+@class CMIOExtensionDevice
- PrCMIOExtensionDeviceSourcemacOS 12.3+A protocol you adopt to supply the behavior and properties of an extension device.
- ClCMIOExtensionDevicePropertiesmacOS 12.3+@class CMIOExtensionDeviceProperties
Streams 6
Types that model a device's media streams, including their formats and timing.
- ClCMIOExtensionStreammacOS 12.3+@class CMIOExtensionStream
- PrCMIOExtensionStreamSourcemacOS 12.3+A protocol you adopt to supply the behavior, formats, and properties of an extension stream.
- ClCMIOExtensionStreamPropertiesmacOS 12.3+@class CMIOExtensionStreamProperties
- ClCMIOExtensionStreamFormatmacOS 12.3+@class CMIOExtensionStreamFormat
- ClCMIOExtensionStreamCustomClockConfigurationmacOS 12.3+@class CMIOExtensionStreamCustomClockConfiguration
- ClCMIOExtensionScheduledOutputmacOS 12.3+An object that describes a scheduled output sample buffer and its presentation timing for a stream.
Clients 1
The type that represents a process connected to a stream provided by your extension.
- ClCMIOExtensionClientmacOS 12.3+An object that represents a process connected to a stream vended by your extension.
Properties 3
Types that describe and expose configurable properties on providers, devices, and streams.
- StCMIOExtensionPropertymacOS 12.3+@group CMIOExtensionProperty string constants
- ClCMIOExtensionPropertyStatemacOS 12.3+@class CMIOExtensionPropertyState
- ClCMIOExtensionPropertyAttributesmacOS 12.3+@class CMIOExtensionPropertyAttributes
Device Configuration and Control 7
Lower-level structures for accessing device property addresses, stream configuration, and device control commands.
- StCMIOObjectPropertyAddressmacOS 10.7+@struct CMIOObjectPropertyAddress
- StCMIODeviceStreamConfigurationmacOS 10.7+@struct CMIODeviceStreamConfiguration
- StCMIODeviceAVCCommandmacOS 10.7+@struct CMIODeviceAVCCommand
- StCMIODeviceRS422CommandmacOS 10.7+@struct CMIODeviceRS422Command
- StCMIODeviceSMPTETimeCallbackmacOS 10.7+@struct CMIODeviceSMPTETimeCallback
- StCMIOStreamDeckmacOS 10.7+@struct CMIOStreamDeck
- StCMIOStreamScheduledOutputNotificationProcAndRefConmacOS 10.8+@struct CMIOStreamScheduledOutputNotificationProcAndRefCon
Type Aliases 15
- TyCMIOControlID@typedef CMIOControlID
- TyCMIODeviceID@typedef CMIODeviceID
- TyCMIODevicePropertyID@typedef CMIODevicePropertyID
- TyCMIODeviceGetSMPTETimeProc@typedef CMIODeviceGetSMPTETimeProc
- TyCMIOObjectPropertySelector@typedef CMIOObjectPropertySelector
- TyCMIOObjectPropertyScope@typedef CMIOObjectPropertyScope
- TyCMIOObjectPropertyElement@typedef CMIOObjectPropertyElement
- TyCMIOClassID@typedef CMIOClassID
- TyCMIOObjectID@typedef CMIOObjectID
- TyCMIOObjectPropertyListenerProc@typedef CMIOObjectPropertyListenerProc
- TyCMIOObjectPropertyListenerBlock@typedef CMIOObjectPropertyListenerBlock
- TyCMIOStreamID@typedef CMIOStreamID
- TyCMIODeviceStreamQueueAlteredProc@typedef CMIODeviceStreamQueueAlteredProc
- TyCMIOStreamScheduledOutputNotificationProc!
- TyCMIOHardwarePropertyID@typedef CMIOHardwarePropertyID