TechnologiesVideo, Photos & Camera

CoreMediaIO

iOSmacOStvOSwatchOSvisionOS

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.

  • Cl
    CMIOExtensionProvidermacOS 12.3+
    @class CMIOExtensionProvider
  • Pr
    CMIOExtensionProviderSourcemacOS 12.3+
    A protocol you adopt to supply the behavior and properties of an extension's provider.
  • Cl
    CMIOExtensionProviderPropertiesmacOS 12.3+
    @class CMIOExtensionProviderProperties

Devices 3

Types that model the capture devices presented by an extension and supply their behavior.

  • Cl
    CMIOExtensionDevicemacOS 12.3+
    @class CMIOExtensionDevice
  • Pr
    CMIOExtensionDeviceSourcemacOS 12.3+
    A protocol you adopt to supply the behavior and properties of an extension device.
  • Cl
    CMIOExtensionDevicePropertiesmacOS 12.3+
    @class CMIOExtensionDeviceProperties

Streams 6

Types that model a device's media streams, including their formats and timing.

  • Cl
    CMIOExtensionStreammacOS 12.3+
    @class CMIOExtensionStream
  • Pr
    CMIOExtensionStreamSourcemacOS 12.3+
    A protocol you adopt to supply the behavior, formats, and properties of an extension stream.
  • Cl
    CMIOExtensionStreamPropertiesmacOS 12.3+
    @class CMIOExtensionStreamProperties
  • Cl
    CMIOExtensionStreamFormatmacOS 12.3+
    @class CMIOExtensionStreamFormat
  • Cl
    CMIOExtensionStreamCustomClockConfigurationmacOS 12.3+
    @class CMIOExtensionStreamCustomClockConfiguration
  • Cl
    CMIOExtensionScheduledOutputmacOS 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.

  • Cl
    CMIOExtensionClientmacOS 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.

  • St
    CMIOExtensionPropertymacOS 12.3+
    @group CMIOExtensionProperty string constants
  • Cl
    CMIOExtensionPropertyStatemacOS 12.3+
    @class CMIOExtensionPropertyState
  • Cl
    CMIOExtensionPropertyAttributesmacOS 12.3+
    @class CMIOExtensionPropertyAttributes

Device Configuration and Control 7

Lower-level structures for accessing device property addresses, stream configuration, and device control commands.

  • St
    CMIOObjectPropertyAddressmacOS 10.7+
    @struct CMIOObjectPropertyAddress
  • St
    CMIODeviceStreamConfigurationmacOS 10.7+
    @struct CMIODeviceStreamConfiguration
  • St
    CMIODeviceAVCCommandmacOS 10.7+
    @struct CMIODeviceAVCCommand
  • St
    CMIODeviceRS422CommandmacOS 10.7+
    @struct CMIODeviceRS422Command
  • St
    CMIODeviceSMPTETimeCallbackmacOS 10.7+
    @struct CMIODeviceSMPTETimeCallback
  • St
    CMIOStreamDeckmacOS 10.7+
    @struct CMIOStreamDeck
  • St
    CMIOStreamScheduledOutputNotificationProcAndRefConmacOS 10.8+
    @struct CMIOStreamScheduledOutputNotificationProcAndRefCon

Type Aliases 15

  • Ty
    CMIOControlID
    @typedef CMIOControlID
  • Ty
    CMIODeviceID
    @typedef CMIODeviceID
  • Ty
    CMIODevicePropertyID
    @typedef CMIODevicePropertyID
  • Ty
    CMIODeviceGetSMPTETimeProc
    @typedef CMIODeviceGetSMPTETimeProc
  • Ty
    CMIOObjectPropertySelector
    @typedef CMIOObjectPropertySelector
  • Ty
    CMIOObjectPropertyScope
    @typedef CMIOObjectPropertyScope
  • Ty
    CMIOObjectPropertyElement
    @typedef CMIOObjectPropertyElement
  • Ty
    CMIOClassID
    @typedef CMIOClassID
  • Ty
    CMIOObjectID
    @typedef CMIOObjectID
  • Ty
    CMIOObjectPropertyListenerProc
    @typedef CMIOObjectPropertyListenerProc
  • Ty
    CMIOObjectPropertyListenerBlock
    @typedef CMIOObjectPropertyListenerBlock
  • Ty
    CMIOStreamID
    @typedef CMIOStreamID
  • Ty
    CMIODeviceStreamQueueAlteredProc
    @typedef CMIODeviceStreamQueueAlteredProc
  • Ty
    CMIOStreamScheduledOutputNotificationProc
    !
  • Ty
    CMIOHardwarePropertyID
    @typedef CMIOHardwarePropertyID
← Video, Photos & Camera