<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: 15.4.0 -",
    "macOS: 12.3.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreMediaIO",
  "identifier" : "/documentation/CoreMediaIO/CMIOExtensionDevice",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Core Media I/O"
    ],
    "preciseIdentifier" : "c:objc(cs)CMIOExtensionDevice"
  },
  "title" : "CMIOExtensionDevice"
}
-->

# CMIOExtensionDevice

An object that represents a physical or virtual device.

```
class CMIOExtensionDevice
```

## Overview

A device provides one or more streams of media data to a [`CMIOExtensionProvider`](/documentation/CoreMediaIO/CMIOExtensionProvider).

## Topics

### Creating a Device

[`+ (instancetype) deviceWithLocalizedName:(NSString *) localizedName deviceID:(NSUUID *) deviceID source:(id<CMIOExtensionDeviceSource>) source;`](/documentation/CoreMediaIO/CMIOExtensionDevice/deviceWithLocalizedName:deviceID:source:)

Returns a new extension device.

[`+ (instancetype) deviceWithLocalizedName:(NSString *) localizedName deviceID:(NSUUID *) deviceID legacyDeviceID:(NSString *) legacyDeviceID source:(id<CMIOExtensionDeviceSource>) source;`](/documentation/CoreMediaIO/CMIOExtensionDevice/deviceWithLocalizedName:deviceID:legacyDeviceID:source:)

Returns a new extension device with an optional legacy device identifier.

[`convenience init(localizedName: String, deviceID: UUID, source: any CMIOExtensionDeviceSource)`](/documentation/CoreMediaIO/CMIOExtensionDevice/init(localizedName:deviceID:source:))

Creates an extension device.

[`init(localizedName: String, deviceID: UUID, legacyDeviceID: String?, source: any CMIOExtensionDeviceSource)`](/documentation/CoreMediaIO/CMIOExtensionDevice/init(localizedName:deviceID:legacyDeviceID:source:))

Creates an extension device with an optional legacy device identifier.

### Identifying a Device

[`var localizedName: String`](/documentation/CoreMediaIO/CMIOExtensionDevice/localizedName)

A localized name for a device.

[`var deviceID: UUID`](/documentation/CoreMediaIO/CMIOExtensionDevice/deviceID)

A universally unique device identifier value.

[`var legacyDeviceID: String`](/documentation/CoreMediaIO/CMIOExtensionDevice/legacyDeviceID)

A legacy device identifier.

### Managing Streams

[`var streams: [CMIOExtensionStream]`](/documentation/CoreMediaIO/CMIOExtensionDevice/streams)

An array of media streams attached to this device.

[`func addStream(CMIOExtensionStream) throws`](/documentation/CoreMediaIO/CMIOExtensionDevice/addStream(_:))

Adds a stream to a device.

[`func removeStream(CMIOExtensionStream) throws`](/documentation/CoreMediaIO/CMIOExtensionDevice/removeStream(_:))

Removes a stream from the device.

### Accessing the Device Source

[`var source: (any CMIOExtensionDeviceSource)?`](/documentation/CoreMediaIO/CMIOExtensionDevice/source)

A source object for a device.

### Posting Property Changes

[`func notifyPropertiesChanged([CMIOExtensionProperty : CMIOExtensionPropertyState<AnyObject>])`](/documentation/CoreMediaIO/CMIOExtensionDevice/notifyPropertiesChanged(_:))

Notifies clients of property changes.

## Relationships

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

### Conforms To

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`CVarArg`](/documentation/Swift/CVarArg)

[`Hashable`](/documentation/Swift/Hashable)

[`Equatable`](/documentation/Swift/Equatable)

---

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)