---
title: IOUserVideoDevice
framework: VideoDriverKit
role: symbol
role_heading: Class
platforms: [driverkit 27.0+]
path: videodriverkit/iouservideodevice
---

# IOUserVideoDevice

A video device.

## Declaration

```occ
class IOUserVideoDevice;
```

## Overview

Overview The device has IOUserVideoStream objects.

## Topics

### Creating a video device

- [Create](videodriverkit/iouservideodevice/create.md)
- [init](videodriverkit/iouservideodevice/init.md)
- [IOUserVideoDriver](videodriverkit/iouservideodriver.md)

### Freeing a video device

- [free](videodriverkit/iouservideodevice/free.md)

### Getting information about the class

- [GetClassID](videodriverkit/iouservideodevice/getclassid.md)
- [GetBaseClassID](videodriverkit/iouservideodevice/getbaseclassid.md)
- [IOUserVideoClassID](videodriverkit/videodriverkit/iouservideoclassid.md)

### Performing I/O

- [StartIO](videodriverkit/iouservideodevice/startio.md)
- [StopIO](videodriverkit/iouservideodevice/stopio.md)
- [IOUserVideoStartStopFlags](videodriverkit/videodriverkit/iouservideostartstopflags.md)
- [GetCurrentClientIOTime](videodriverkit/iouservideodevice/getcurrentclientiotime.md)
- [SetIOOperationHandler](videodriverkit/iouservideodevice/setiooperationhandler.md)
- [IOOperationHandler](videodriverkit/videodriverkit/iooperationhandler.md)

### Supporting device configuration changes

- [PerformDeviceConfigurationChange](videodriverkit/iouservideodevice/performdeviceconfigurationchange.md)
- [AbortDeviceConfigurationChange](videodriverkit/iouservideodevice/abortdeviceconfigurationchange.md)

### Supporting sample rate changes

- [HandleChangeSampleRate](videodriverkit/iouservideodevice/handlechangesamplerate.md)

### Supporting stream format changes

- [StreamFormatChanged](videodriverkit/iouservideodevice/streamformatchanged.md)

### Working with video streams

- [AddStream](videodriverkit/iouservideodevice/addstream.md)
- [RemoveStream](videodriverkit/iouservideodevice/removestream.md)
- [IOUserVideoStream](videodriverkit/iouservideostream.md)

### Working with default device behavior

- [SetCanBeDefaultInputDevice](videodriverkit/iouservideodevice/setcanbedefaultinputdevice.md)
- [CanBeDefaultInputDevice](videodriverkit/iouservideodevice/canbedefaultinputdevice.md)
- [SetCanBeDefaultOutputDevice](videodriverkit/iouservideodevice/setcanbedefaultoutputdevice.md)
- [CanBeDefaultOutputDevice](videodriverkit/iouservideodevice/canbedefaultoutputdevice.md)
- [SetCanBeDefaultSystemOutputDevice](videodriverkit/iouservideodevice/setcanbedefaultsystemoutputdevice.md)
- [CanBeDefaultSystemOutputDevice](videodriverkit/iouservideodevice/canbedefaultsystemoutputdevice.md)

### Working with safety offset behavior

- [SetInputSafetyOffset](videodriverkit/iouservideodevice/setinputsafetyoffset.md)
- [GetInputSafetyOffset](videodriverkit/iouservideodevice/getinputsafetyoffset.md)
- [SetOutputSafetyOffset](videodriverkit/iouservideodevice/setoutputsafetyoffset.md)
- [GetOutputSafetyOffset](videodriverkit/iouservideodevice/getoutputsafetyoffset.md)

### Working with channel layouts

- [SetPreferredChannelsForStereo](videodriverkit/iouservideodevice/setpreferredchannelsforstereo.md)
- [GetPreferredChannelsForStereo](videodriverkit/iouservideodevice/getpreferredchannelsforstereo.md)
- [SetPreferredInputChannelLayout](videodriverkit/iouservideodevice/setpreferredinputchannellayout.md)
- [SetPreferredOutputChannelLayout](videodriverkit/iouservideodevice/setpreferredoutputchannellayout.md)
- [IOUserVideoChannelLabel](videodriverkit/videodriverkit/iouservideochannellabel.md)

### Working with controls

- [SetControlValue](videodriverkit/iouservideodevice/setcontrolvalue.md)

## Relationships

### Inherits From

- [IOUserVideoClockDevice](videodriverkit/iouservideoclockdevice.md)

## See Also

### Video devices

- [IOUserVideoClockDevice](videodriverkit/iouservideoclockdevice.md)
