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

# IOUserVideoClockDevice

A clock device.

## Declaration

```occ
class IOUserVideoClockDevice;
```

## Overview

Overview IOUserVideoClockDevice handles the necessary configurations to be able to run IO.

## Topics

### Creating a clock device

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

### Freeing a clock device

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

### Getting information about the class

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

### Performing I/O

- [StartIO](videodriverkit/iouservideoclockdevice/startio.md)
- [StopIO](videodriverkit/iouservideoclockdevice/stopio.md)
- [IOUserVideoStartStopFlags](videodriverkit/videodriverkit/iouservideostartstopflags.md)

### Supporting device configuration changes

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

### Supporting sample rate changes

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

### Identifying the clock device

- [GetUID](videodriverkit/iouservideoclockdevice/getuid.md)

### Working with the clock domain

- [SetClockDomain](videodriverkit/iouservideoclockdevice/setclockdomain.md)
- [GetClockDomain](videodriverkit/iouservideoclockdevice/getclockdomain.md)

### Working with sample rates

- [SetSampleRate](videodriverkit/iouservideoclockdevice/setsamplerate.md)
- [GetSampleRate](videodriverkit/iouservideoclockdevice/getsamplerate.md)
- [SetAvailableSampleRates](videodriverkit/iouservideoclockdevice/setavailablesamplerates.md)
- [GetAvailableSampleRates](videodriverkit/iouservideoclockdevice/getavailablesamplerates.md)
- [GetNumberAvailableSampleRates](videodriverkit/iouservideoclockdevice/getnumberavailablesamplerates.md)

### Working with timing and latency

- [SetOutputLatency](videodriverkit/iouservideoclockdevice/setoutputlatency.md)
- [GetOutputLatency](videodriverkit/iouservideoclockdevice/getoutputlatency.md)
- [SetInputLatency](videodriverkit/iouservideoclockdevice/setinputlatency.md)
- [GetInputLatency](videodriverkit/iouservideoclockdevice/getinputlatency.md)

### Working with clock device state

- [GetDeviceIsRunning](videodriverkit/iouservideoclockdevice/getdeviceisrunning.md)
- [SetDeviceIsAlive](videodriverkit/iouservideoclockdevice/setdeviceisalive.md)
- [GetDeviceIsAlive](videodriverkit/iouservideoclockdevice/getdeviceisalive.md)
- [SetIsHidden](videodriverkit/iouservideoclockdevice/setishidden.md)
- [GetIsHidden](videodriverkit/iouservideoclockdevice/getishidden.md)

### Working with clock device behavior

- [SetClockAlgorithm](videodriverkit/iouservideoclockdevice/setclockalgorithm.md)
- [GetClockAlgorithm](videodriverkit/iouservideoclockdevice/getclockalgorithm.md)
- [IOUserVideoClockAlgorithm](videodriverkit/videodriverkit/iouservideoclockalgorithm.md)
- [SetClockIsStable](videodriverkit/iouservideoclockdevice/setclockisstable.md)
- [GetClockIsStable](videodriverkit/iouservideoclockdevice/getclockisstable.md)

### Working with transport type

- [SetTransportType](videodriverkit/iouservideoclockdevice/settransporttype.md)
- [GetTransportType](videodriverkit/iouservideoclockdevice/gettransporttype.md)
- [IOUserVideoTransportType](videodriverkit/videodriverkit/iouservideotransporttype.md)

### Communicating with the host

- [RequestDeviceConfigurationChange](videodriverkit/iouservideoclockdevice/requestdeviceconfigurationchange.md)

### Managing video controls

- [AddControl](videodriverkit/iouservideoclockdevice/addcontrol.md)
- [RemoveControl](videodriverkit/iouservideoclockdevice/removecontrol.md)
- [IOUserVideoControl](videodriverkit/iouservideocontrol.md)

### Accessing timestamps

- [UpdateCurrentZeroTimestamp](videodriverkit/iouservideoclockdevice/updatecurrentzerotimestamp.md)
- [GetCurrentZeroTimestamp](videodriverkit/iouservideoclockdevice/getcurrentzerotimestamp.md)

### Accessing client status information

- [GetCurrentClientSampleTime](videodriverkit/iouservideoclockdevice/getcurrentclientsampletime.md)

### Working with transport states

- [GetDeviceTransportState](videodriverkit/iouservideoclockdevice/getdevicetransportstate.md)
- [IOUserVideoDeviceTransportState](videodriverkit/videodriverkit/iouservideodevicetransportstate.md)

### Handling stream format changes

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

## Relationships

### Inherits From

- [IOUserVideoObject](videodriverkit/iouservideoobject.md)

### Inherited By

- [IOUserVideoDevice](videodriverkit/iouservideodevice.md)

## See Also

### Video devices

- [IOUserVideoDevice](videodriverkit/iouservideodevice.md)
