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

# IOUserVideoBuffer

```
class IOUserVideoBuffer;
```

## Topics

### Creating a video buffer

[`static OSSharedPtr<IOUserVideoBuffer> Create(IOUserVideoDriver *in_driver, IOUserVideoStreamDirection in_direction, IOMemoryDescriptor *in_data_memory_descriptor, IOMemoryDescriptor *in_control_memory_descriptor, uint32_t bufferID);`](/documentation/VideoDriverKit/IOUserVideoBuffer/Create)

[`virtual bool init(IOUserVideoDriver *in_driver, IOUserVideoStreamDirection in_direction, IOMemoryDescriptor *in_data_memory_descriptor, IOMemoryDescriptor *in_control_memory_descriptor, uint32_t bufferID);`](/documentation/VideoDriverKit/IOUserVideoBuffer/init)

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

A video driver.

### Freeing a video buffer

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

### Getting information about the class

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

Gets the class identifier of the object.

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

Gets the class identifier of the base class object.

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

Video class identifiers of an video object.

### Working with memory descriptors

[`kern_return_t SetDataMemoryDescriptor(IOMemoryDescriptor *in_data_memory_descriptor);`](/documentation/VideoDriverKit/IOUserVideoBuffer/SetDataMemoryDescriptor)

Sets a new IOMemoryDescriptor to use for video IO on the IOUserVideoStream.

[`OSSharedPtr<IOMemoryDescriptor> GetDataMemoryDescriptor();`](/documentation/VideoDriverKit/IOUserVideoBuffer/GetDataMemoryDescriptor)

Gets the memory descriptor used for video IO that was initialized with or set on the video stream.

[`kern_return_t SetControlMemoryDescriptor(IOMemoryDescriptor *in_control_memory_descriptor);`](/documentation/VideoDriverKit/IOUserVideoBuffer/SetControlMemoryDescriptor)

Sets a new IOMemoryDescriptor to use for video IO on the IOUserVideoStream.

[`OSSharedPtr<IOMemoryDescriptor> GetControlMemoryDescriptor();`](/documentation/VideoDriverKit/IOUserVideoBuffer/GetControlMemoryDescriptor)

Gets the memory descriptior used for video IO that was initialized with or set on the video stream.

### Accessing buffer ID

[`IOStreamBufferID getBufferID();`](/documentation/VideoDriverKit/IOUserVideoBuffer/getBufferID)

[`void setBufferID(IOStreamBufferID newBufferID);`](/documentation/VideoDriverKit/IOUserVideoBuffer/setBufferID)

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

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

## Relationships

### Inherits From

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

---

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)