---
title: IOAudioStream
framework: kernel
role: symbol
role_heading: Class
path: kernel/ioaudiostream
---

# IOAudioStream

This class wraps a single sample buffer in an audio driver.

## Declaration

```occ
class IOAudioStream : IOService
```

## Overview

Overview An IOAudioStream represents one hardware sample buffer as well as the direction of that buffer, the mix buffer that multiple clients mix into as well as a list of all of the formats to which this buffer can be set. When an IOAudioEngine is created during init time in the driver, an IOAudioStream must be created for each sample buffer in the device. Typically, the sample buffer will be interleaved (or single channel), as a non-interleaved buffer should be divided into multiple single-channel buffers (and multiple IOAudioStreams). Additionally, when an IOAudioStream is created it must have all of the possible formats (and allowed sample rates for each format) set and must have the currently set format specified (addAvailableFormat() and setFormat()).

## Topics

### Instance Methods

- [addAvailableFormat](kernel/ioaudiostream/1580021-addavailableformat.md)
- [addAvailableFormat](kernel/ioaudiostream/3516531-addavailableformat.md)
- [addAvailableFormat](kernel/ioaudiostream/3516532-addavailableformat.md)
- [addAvailableFormat](kernel/ioaudiostream/3516533-addavailableformat.md)
- [addClient](kernel/ioaudiostream/1580015-addclient.md)
- [addDefaultAudioControl](kernel/ioaudiostream/1580039-adddefaultaudiocontrol.md)
- [clearAvailableFormats](kernel/ioaudiostream/1580032-clearavailableformats.md)
- [clearSampleBuffer](kernel/ioaudiostream/1580056-clearsamplebuffer.md)
- [clipIfNecessary](kernel/ioaudiostream/1580058-clipifnecessary.md)
- [clipOutputSamples](kernel/ioaudiostream/1580040-clipoutputsamples.md)
- [free](kernel/ioaudiostream/1580016-free.md)
- [getDirection](kernel/ioaudiostream/1580048-getdirection.md)
- [getFormat](kernel/ioaudiostream/1580050-getformat.md)
- [getFormatExtension](kernel/ioaudiostream/1580019-getformatextension.md)
- [getMaxNumChannels](kernel/ioaudiostream/1580049-getmaxnumchannels.md)
- [getMetaClass](kernel/ioaudiostream/1580051-getmetaclass.md)
- [getMixBuffer](kernel/ioaudiostream/1580037-getmixbuffer.md)
- [getMixBufferSize](kernel/ioaudiostream/1580063-getmixbuffersize.md)
- [getNumClients](kernel/ioaudiostream/1580054-getnumclients.md)
- [getNumSampleFramesRead](kernel/ioaudiostream/1580061-getnumsampleframesread.md)
- [getSampleBuffer](kernel/ioaudiostream/1580022-getsamplebuffer.md)
- [getSampleBufferSize](kernel/ioaudiostream/1580028-getsamplebuffersize.md)
- [getStartingChannelID](kernel/ioaudiostream/1580018-getstartingchannelid.md)
- [getStreamAvailable](kernel/ioaudiostream/1580024-getstreamavailable.md)
- [getWorkLoop](kernel/ioaudiostream/1580023-getworkloop.md)
- [hardwareFormatChanged](kernel/ioaudiostream/1580044-hardwareformatchanged.md)
- [initWithAudioEngine](kernel/ioaudiostream/1580064-initwithaudioengine.md)
- [lockStreamForIO](kernel/ioaudiostream/1580035-lockstreamforio.md)
- [mixOutputSamples](kernel/ioaudiostream/1580043-mixoutputsamples.md)
- [numSampleFramesPerBufferChanged](kernel/ioaudiostream/1580030-numsampleframesperbufferchanged.md)
- [processOutputSamples](kernel/ioaudiostream/1580041-processoutputsamples.md)
- [readInputSamples](kernel/ioaudiostream/1580045-readinputsamples.md)
- [removeClient](kernel/ioaudiostream/1580057-removeclient.md)
- [removeDefaultAudioControls](kernel/ioaudiostream/1580034-removedefaultaudiocontrols.md)
- [resetClipInfo](kernel/ioaudiostream/1580053-resetclipinfo.md)
- [safeLogError](kernel/ioaudiostream/1580047-safelogerror.md)
- [setDefaultNumSampleFramesRead](kernel/ioaudiostream/1580062-setdefaultnumsampleframesread.md)
- [setDirection](kernel/ioaudiostream/1580060-setdirection.md)
- [setFormat](kernel/ioaudiostream/1580046-setformat.md)
- [setFormat](kernel/ioaudiostream/3516534-setformat.md)
- [setFormat](kernel/ioaudiostream/3516535-setformat.md)
- [setFormat](kernel/ioaudiostream/3516536-setformat.md)
- [setFormat](kernel/ioaudiostream/3516537-setformat.md)
- [setIOFunction](kernel/ioaudiostream/1580033-setiofunction.md)
- [setIOFunctionList](kernel/ioaudiostream/1580026-setiofunctionlist.md)
- [setMixBuffer](kernel/ioaudiostream/1580065-setmixbuffer.md)
- [setProperties](kernel/ioaudiostream/1580042-setproperties.md)
- [setSampleBuffer](kernel/ioaudiostream/1580036-setsamplebuffer.md)
- [setSampleLatency](kernel/ioaudiostream/1580055-setsamplelatency.md)
- [setStartingChannelNumber](kernel/ioaudiostream/1580052-setstartingchannelnumber.md)
- [setStreamAvailable](kernel/ioaudiostream/1580038-setstreamavailable.md)
- [setTerminalType](kernel/ioaudiostream/1580066-setterminaltype.md)
- [stop](kernel/ioaudiostream/1580017-stop.md)
- [unlockStreamForIO](kernel/ioaudiostream/1580020-unlockstreamforio.md)
- [updateNumClients](kernel/ioaudiostream/1580029-updatenumclients.md)
- [validateFormat](kernel/ioaudiostream/1580059-validateformat.md)
- [validateFormat](kernel/ioaudiostream/3516538-validateformat.md)
- [validateFormat](kernel/ioaudiostream/3516539-validateformat.md)

### Type Methods

- [createDictionaryFromFormat](kernel/ioaudiostream/1580027-createdictionaryfromformat.md)
- [createFormatFromDictionary](kernel/ioaudiostream/1580025-createformatfromdictionary.md)
- [initKeys](kernel/ioaudiostream/1580067-initkeys.md)
- [setFormatAction](kernel/ioaudiostream/1580031-setformataction.md)

## Relationships

### Inherits From

- [IOService](kernel/ioservice.md)

## See Also

### Interfaces

- [IOAudioLevelControl](kernel/ioaudiolevelcontrol.md)
- [IOAudioSelectorControl](kernel/ioaudioselectorcontrol.md)
- [IOAudioToggleControl](kernel/ioaudiotogglecontrol.md)
- [IOAudioControl](kernel/ioaudiocontrol.md)
- [IOAudioEngine](kernel/ioaudioengine.md)
- [IOAudioPort](kernel/ioaudioport.md)
