<!--
{
  "availability" : [
    "DriverKit: 27.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "VideoDriverKit",
  "identifier" : "/documentation/VideoDriverKit/IOUserVideoObject",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "VideoDriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOUserVideoObject"
  },
  "title" : "IOUserVideoObject"
}
-->

# IOUserVideoObject

The base class for all video objects.

```
class IOUserVideoObject;
```

## Overview

Don’t subclass `IOUserVideoObject` or allocate it directly.

## Topics

### Creating a video object

[`virtual bool init();`](/documentation/VideoDriverKit/IOUserVideoObject/init-853a8)                  

[`virtual bool init(IOUserVideoDriver *in_video_driver);`](/documentation/VideoDriverKit/IOUserVideoObject/init-5dkv4)

Initializes a video object.                 

### Freeing a video object

[`virtual void free();`](/documentation/VideoDriverKit/IOUserVideoObject/free)

Frees the video object.

### Getting information about the class

[`virtual IOUserVideoClassID GetClassID();`](/documentation/VideoDriverKit/IOUserVideoObject/GetClassID)

Gets the class identifier of the object.

[`virtual IOUserVideoClassID GetBaseClassID();`](/documentation/VideoDriverKit/IOUserVideoObject/GetBaseClassID)

Gets the class identifier of the object’s base class.

[`enum IOUserVideoClassID : uint32_t;`](/documentation/VideoDriverKit/VideoDriverKit/IOUserVideoClassID)

Video class identifiers of an video object.

### Working with object names

[`OSSharedPtr<OSString> GetName();`](/documentation/VideoDriverKit/IOUserVideoObject/GetName)

Gets the name of the video object.

[`kern_return_t SetName(OSString *in_name);`](/documentation/VideoDriverKit/IOUserVideoObject/SetName)

Sets the name of the video object.

### Working with object identifiers

[`IOUserVideoObjectID GetObjectID();`](/documentation/VideoDriverKit/IOUserVideoObject/GetObjectID)

Gets the video object identifier of the object.

[`typedef uint32_t IOUserVideoObjectID;`](/documentation/VideoDriverKit/VideoDriverKit/IOUserVideoObjectID)

A handle for a a specific video object.

### Working with elements

[`OSSharedPtr<OSString> GetElementCategoryName(IOUserVideoObjectPropertyElement in_element, IOUserVideoObjectPropertyScope in_scope);`](/documentation/VideoDriverKit/IOUserVideoObject/GetElementCategoryName)

Gets the category name for the given element and scope of the video object.

[`kern_return_t SetElementCategoryName(IOUserVideoObjectPropertyElement in_element, IOUserVideoObjectPropertyScope in_scope, OSString *in_category_name);`](/documentation/VideoDriverKit/IOUserVideoObject/SetElementCategoryName)

Sets the category name for the given element and scope of the video object.

[`OSSharedPtr<OSString> GetElementName(IOUserVideoObjectPropertyElement in_element, IOUserVideoObjectPropertyScope in_scope);`](/documentation/VideoDriverKit/IOUserVideoObject/GetElementName)

Gets the name for the given element and scope of the video object.

[`kern_return_t SetElementName(IOUserVideoObjectPropertyElement in_element, IOUserVideoObjectPropertyScope in_scope, OSString *in_name);`](/documentation/VideoDriverKit/IOUserVideoObject/SetElementName)

Sets the name for the given element and scope of the video object.

[`OSSharedPtr<OSString> GetElementNumberName(IOUserVideoObjectPropertyElement in_element, IOUserVideoObjectPropertyScope in_scope);`](/documentation/VideoDriverKit/IOUserVideoObject/GetElementNumberName)

Gets the number name for the given element and scope of the video object.

[`kern_return_t SetElementNumberName(IOUserVideoObjectPropertyElement in_element, IOUserVideoObjectPropertyScope in_scope, OSString *in_number_name);`](/documentation/VideoDriverKit/IOUserVideoObject/SetElementNumberName)

Sets the number name for the given element of the video object.

### Using custom properties

[`virtual kern_return_t AddCustomProperty(IOUserVideoCustomProperty *in_custom_property);`](/documentation/VideoDriverKit/IOUserVideoObject/AddCustomProperty)

Adds an custom property object to this object.

[`virtual kern_return_t RemoveCustomProperty(IOUserVideoCustomProperty *in_custom_property);`](/documentation/VideoDriverKit/IOUserVideoObject/RemoveCustomProperty)

Removes a custom property from the video object.

[`class IOUserVideoCustomProperty;`](/documentation/VideoDriverKit/IOUserVideoCustomProperty)

A custom property object that can be added to or associated with video objects.

### Working with queues

[`OSSharedPtr<IODispatchQueue> GetWorkQueue();`](/documentation/VideoDriverKit/IOUserVideoObject/GetWorkQueue)

Gets the work queue created by the video object.

## Relationships

### Inherited By

[`IOUserVideoBuffer`](/documentation/VideoDriverKit/IOUserVideoBuffer)

[`IOUserVideoControl`](/documentation/VideoDriverKit/IOUserVideoControl)

[`IOUserVideoBox`](/documentation/VideoDriverKit/IOUserVideoBox)

[`IOUserVideoStream`](/documentation/VideoDriverKit/IOUserVideoStream)

[`IOUserVideoCustomProperty`](/documentation/VideoDriverKit/IOUserVideoCustomProperty)

[`IOUserVideoClockDevice`](/documentation/VideoDriverKit/IOUserVideoClockDevice)

### Inherits From

[`OSObject`](/documentation/DriverKit/OSObject)

---

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)