<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "CoreMediaIO",
  "identifier" : "/documentation/CoreMediaIO",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "Core Media I/O"
    ],
    "preciseIdentifier" : "CoreMediaIO"
  },
  "title" : "Core Media I/O"
}
-->

# Core Media I/O

Securely support custom camera devices in macOS.

## Overview

Use the Core Media I/O framework to enable support for custom camera devices in macOS. Starting in macOS 12.3, the framework builds on <doc://com.apple.documentation/documentation/SystemExtensions> to enable you to support custom devices while maintaining system privacy and security protections. The system prevents apps from loading extension code into their process to ensure that they can’t bypass macOS privacy protections or mask their identity.

> Important: Apple recommends replacing legacy Device Abstraction Layer (DAL) plug-ins with Core Media I/O extensions.

## Topics

### Providers

[Creating a camera extension with Core Media I/O](/documentation/CoreMediaIO/creating-a-camera-extension-with-core-media-i-o)

Build high-performance camera drivers that are secure and simple to deploy.

[Overriding the default USB video class extension](/documentation/CoreMediaIO/overriding-the-default-usb-video-class-extension)

Create a simple DriverKit extension to override the default driver-matching behavior for USB devices.

[`CMIOExtensionProvider`](/documentation/CoreMediaIO/CMIOExtensionProvider)

An object that manages device connections for a provider.

[`CMIOExtensionProviderSource`](/documentation/CoreMediaIO/CMIOExtensionProviderSource)

A protocol for objects that act as provider sources.

[`CMIOExtensionProviderProperties`](/documentation/CoreMediaIO/CMIOExtensionProviderProperties)

An object that manages the properties of an extension provider.

### Devices

[`CMIOExtensionDevice`](/documentation/CoreMediaIO/CMIOExtensionDevice)

An object that represents a physical or virtual device.

[`CMIOExtensionDeviceSource`](/documentation/CoreMediaIO/CMIOExtensionDeviceSource)

A protocol for objects that act as device sources.

[`CMIOExtensionDeviceProperties`](/documentation/CoreMediaIO/CMIOExtensionDeviceProperties)

An object that defines the properties of a device.

### Streams

[`CMIOExtensionStream`](/documentation/CoreMediaIO/CMIOExtensionStream)

An object that represents a stream of media data.

[`CMIOExtensionStreamSource`](/documentation/CoreMediaIO/CMIOExtensionStreamSource)

A protocol for objects that act as stream sources.

[`CMIOExtensionStreamProperties`](/documentation/CoreMediaIO/CMIOExtensionStreamProperties)

An object that describes the properties of an extension stream.

[`CMIOExtensionClient`](/documentation/CoreMediaIO/CMIOExtensionClient)

An object that represents a client of the extension.

### Properties

[`CMIOExtensionProperty`](/documentation/CoreMediaIO/CMIOExtensionProperty)

A structure that defines the properties that providers, devices, and streams support.

[`CMIOExtensionPropertyState`](/documentation/CoreMediaIO/CMIOExtensionPropertyState)

An object that describes the state of a property.

[`CMIOExtensionPropertyAttributes`](/documentation/CoreMediaIO/CMIOExtensionPropertyAttributes)

An object that describes the attributes of a property.

[`CMIOExtensionInfoDictionaryKey`](/documentation/CoreMediaIO/CMIOExtensionInfoDictionaryKey)

A key that specifies the extension information dictionary.

[`CMIOExtensionMachServiceNameKey`](/documentation/CoreMediaIO/CMIOExtensionMachServiceNameKey)

A key that specifies the mach service name.

### DAL Plug-Ins

[Device Abstraction Layer (DAL) Plug-Ins](/documentation/CoreMediaIO/device-abstraction-layer-dal-plug-ins)

API reference for legacy DAL plug-ins.



---

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)