---
title: IOUserAudioStream
framework: audiodriverkit
role: symbol
role_heading: Class
path: audiodriverkit/iouseraudiostream
---

# IOUserAudioStream

An audio object that performs I/O for an audio device.

## Declaration

```occ
class IOUserAudioStream;
```

## Overview

Overview IOUserAudioStream allocates memory descriptors that the host uses for running I/O. An IOUserAudioDevice uses an IOUserAudioStream instance to perform I/O. Changes to the device that owns a stream may update formats on the underlying stream, which you handle by overriding HandleChangeCurrentStreamFormat and HandleChangeStreamIsActive.

## Topics

### Creating an Audio Stream

- [Create](audiodriverkit/iouseraudiostream/create.md)
- [init](audiodriverkit/iouseraudiostream/init.md)
- [IOUserAudioDriver](audiodriverkit/iouseraudiodriver.md)

### Freeing an Audio Stream

- [free](audiodriverkit/iouseraudiostream/free.md)

### Getting Information About the Class

- [GetClassID](audiodriverkit/iouseraudiostream/getclassid.md)
- [GetBaseClassID](audiodriverkit/iouseraudiostream/getbaseclassid.md)
- [IOUserAudioClassID](audiodriverkit/audiodriverkit/iouseraudioclassid.md)

### Performing I/O

- [StartIO](audiodriverkit/iouseraudiostream/startio.md)
- [StopIO](audiodriverkit/iouseraudiostream/stopio.md)
- [IOUserAudioStartStopFlags](audiodriverkit/audiodriverkit/iouseraudiostartstopflags.md)

### Working with Stream Formats

- [SetCurrentStreamFormat](audiodriverkit/iouseraudiostream/setcurrentstreamformat.md)
- [GetCurrentStreamFormat](audiodriverkit/iouseraudiostream/getcurrentstreamformat.md)
- [SetAvailableStreamFormats](audiodriverkit/iouseraudiostream/setavailablestreamformats.md)
- [GetAvailableStreamFormats](audiodriverkit/iouseraudiostream/getavailablestreamformats.md)
- [GetNumberAvailableStreamFormats](audiodriverkit/iouseraudiostream/getnumberavailablestreamformats.md)
- [IOUserAudioStreamBasicDescription](audiodriverkit/audiodriverkit/iouseraudiostreambasicdescription.md)
- [GetStreamDirection](audiodriverkit/iouseraudiostream/getstreamdirection.md)
- [IOUserAudioStreamDirection](audiodriverkit/audiodriverkit/iouseraudiostreamdirection.md)
- [SetStreamIsActive](audiodriverkit/iouseraudiostream/setstreamisactive.md)
- [GetStreamIsActive](audiodriverkit/iouseraudiostream/getstreamisactive.md)

### Working with Stream Terminals

- [SetTerminalType](audiodriverkit/iouseraudiostream/setterminaltype.md)
- [GetTerminalType](audiodriverkit/iouseraudiostream/getterminaltype.md)
- [IOUserAudioStreamTerminalType](audiodriverkit/audiodriverkit/iouseraudiostreamterminaltype.md)

### Working with Memory Descriptors

- [GetIOMemoryDescriptor](audiodriverkit/iouseraudiostream/getiomemorydescriptor.md)
- [SetIOMemoryDescriptor](audiodriverkit/iouseraudiostream/setiomemorydescriptor.md)

### Managing Stream Changes

- [HandleChangeCurrentStreamFormat](audiodriverkit/iouseraudiostream/handlechangecurrentstreamformat.md)
- [HandleChangeStreamIsActive](audiodriverkit/iouseraudiostream/handlechangestreamisactive.md)
- [DeviceSampleRateChanged](audiodriverkit/iouseraudiostream/devicesampleratechanged.md)

### Instance Methods

- [GetLatency](audiodriverkit/iouseraudiostream/getlatency.md)
- [GetStartingChannel](audiodriverkit/iouseraudiostream/getstartingchannel.md)
- [SetLatency](audiodriverkit/iouseraudiostream/setlatency.md)
- [SetStartingChannel](audiodriverkit/iouseraudiostream/setstartingchannel.md)

## Relationships

### Inherits From

- [IOUserAudioObject](audiodriverkit/iouseraudioobject.md)
