<!--
{
  "documentType" : "article",
  "framework" : "AudioToolbox",
  "identifier" : "/documentation/AudioToolbox/audio-queue-services",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Audio Queue Services"
}
-->

# Audio Queue Services

Connect to audio hardware and manage the recording or playback process.

## Discussion

This document describes Audio Queue Services, a C programming interface in the Audio Toolbox framework, which is part of Core Audio.

An audio queue is a software object you use for recording or playing audio. An audio queue does the work of:

- Connecting to audio hardware
- Managing memory
- Employing codecs, as needed, for compressed audio formats
- Mediating playback or recording

Audio Queue Services enables you to record and play audio in linear PCM, in compressed formats (such as Apple Lossless and AAC), and in other formats for which users have installed codecs. Audio Queue Services also supports scheduled playback and synchronization of multiple audio queues and synchronization of audio with video.

> Note:
> Audio Queue Services provides features similar to those previously offered by the Sound Manager and in macOS. It adds additional features such as synchronization. The Sound Manager is deprecated in OS X v10.5 and does not work with 64-bit applications. Audio Queue Services is recommended for all new development and as a replacement for the Sound Manager in existing Mac apps.

## Topics

### Creating and Disposing of Audio Queues

[`AudioQueueNewOutputWithDispatchQueue(_:_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueNewOutputWithDispatchQueue(_:_:_:_:_:))

[`AudioQueueNewInputWithDispatchQueue(_:_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueNewInputWithDispatchQueue(_:_:_:_:_:))

[`AudioQueueNewOutput(_:_:_:_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueNewOutput(_:_:_:_:_:_:_:))

Creates a new playback audio queue object.

[`AudioQueueNewInput(_:_:_:_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueNewInput(_:_:_:_:_:_:_:))

Creates a new recording audio queue object.

[`AudioQueueDispose(_:_:)`](/documentation/AudioToolbox/AudioQueueDispose(_:_:))

Disposes of an audio queue.

[`AudioQueueRef`](/documentation/AudioToolbox/AudioQueueRef)

Defines an opaque data type that represents an audio queue.

[`AudioQueueInputCallbackBlock`](/documentation/AudioToolbox/AudioQueueInputCallbackBlock)

[`AudioQueueOutputCallbackBlock`](/documentation/AudioToolbox/AudioQueueOutputCallbackBlock)

### Controlling Audio Queues

[`AudioQueueStart(_:_:)`](/documentation/AudioToolbox/AudioQueueStart(_:_:))

Begins playing or recording audio.

[`AudioQueuePrime(_:_:_:)`](/documentation/AudioToolbox/AudioQueuePrime(_:_:_:))

Decodes enqueued buffers in preparation for playback.

[`AudioQueueFlush(_:)`](/documentation/AudioToolbox/AudioQueueFlush(_:))

Resets an audio queue’s decoder state.

[`AudioQueueStop(_:_:)`](/documentation/AudioToolbox/AudioQueueStop(_:_:))

Stops playing or recording audio.

[`AudioQueuePause(_:)`](/documentation/AudioToolbox/AudioQueuePause(_:))

Pauses audio playback or recording.

[`AudioQueueReset(_:)`](/documentation/AudioToolbox/AudioQueueReset(_:))

Resets an audio queue.

### Handling Audio Queue Buffers

[`AudioQueueAllocateBuffer(_:_:_:)`](/documentation/AudioToolbox/AudioQueueAllocateBuffer(_:_:_:))

Asks an audio queue object to allocate an audio queue buffer.

[`AudioQueueAllocateBufferWithPacketDescriptions(_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueAllocateBufferWithPacketDescriptions(_:_:_:_:))

Asks an audio queue object to allocate an audio queue buffer with space for packet descriptions.

[`AudioQueueFreeBuffer(_:_:)`](/documentation/AudioToolbox/AudioQueueFreeBuffer(_:_:))

Asks an audio queue to dispose of an audio queue buffer.

[`AudioQueueEnqueueBuffer(_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueEnqueueBuffer(_:_:_:_:))

Adds a buffer to the buffer queue of a recording or playback audio queue.

[`AudioQueueEnqueueBufferWithParameters(_:_:_:_:_:_:_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueEnqueueBufferWithParameters(_:_:_:_:_:_:_:_:_:_:))

Adds a buffer to the buffer queue of a playback audio queue object, specifying start time and other settings.

### Tapping the Queue’s Audio

[`AudioQueueProcessingTapNew(_:_:_:_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueProcessingTapNew(_:_:_:_:_:_:_:))

[`AudioQueueProcessingTapGetQueueTime(_:_:_:)`](/documentation/AudioToolbox/AudioQueueProcessingTapGetQueueTime(_:_:_:))

[`AudioQueueProcessingTapGetSourceAudio(_:_:_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueProcessingTapGetSourceAudio(_:_:_:_:_:_:))

[`AudioQueueProcessingTapDispose(_:)`](/documentation/AudioToolbox/AudioQueueProcessingTapDispose(_:))

### Manipulating Audio Queue Parameters

[`AudioQueueGetParameter(_:_:_:)`](/documentation/AudioToolbox/AudioQueueGetParameter(_:_:_:))

Gets an audio queue parameter value.

[`AudioQueueSetParameter(_:_:_:)`](/documentation/AudioToolbox/AudioQueueSetParameter(_:_:_:))

Sets a playback audio queue parameter value.

### Manipulating Audio Queue Properties

[`AudioQueueGetProperty(_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueGetProperty(_:_:_:_:))

Gets an audio queue property value.

[`AudioQueueSetProperty(_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueSetProperty(_:_:_:_:))

Sets an audio queue property value.

[`AudioQueueGetPropertySize(_:_:_:)`](/documentation/AudioToolbox/AudioQueueGetPropertySize(_:_:_:))

Gets the size of the value of an audio queue property.

[`AudioQueueAddPropertyListener(_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueAddPropertyListener(_:_:_:_:))

Adds a property listener callback to an audio queue.

[`AudioQueueRemovePropertyListener(_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueRemovePropertyListener(_:_:_:_:))

Removes a property listener callback from an audio queue.

### Managing the Timeline

[`AudioQueueCreateTimeline(_:_:)`](/documentation/AudioToolbox/AudioQueueCreateTimeline(_:_:))

Creates a timeline object for an audio queue.

[`AudioQueueDisposeTimeline(_:_:)`](/documentation/AudioToolbox/AudioQueueDisposeTimeline(_:_:))

Disposes of an audio queue’s timeline object.

[`AudioQueueDeviceGetCurrentTime(_:_:)`](/documentation/AudioToolbox/AudioQueueDeviceGetCurrentTime(_:_:))

Gets the current time of the audio hardware device associated with an audio queue.

[`AudioQueueDeviceGetNearestStartTime(_:_:_:)`](/documentation/AudioToolbox/AudioQueueDeviceGetNearestStartTime(_:_:_:))

Gets the start time, for an audio hardware device, that is closest to a requested start time.

[`AudioQueueDeviceTranslateTime(_:_:_:)`](/documentation/AudioToolbox/AudioQueueDeviceTranslateTime(_:_:_:))

Converts the time for an audio queue’s associated audio hardware device from one time base representation to another.

[`AudioQueueGetCurrentTime(_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueGetCurrentTime(_:_:_:_:))

Gets the current audio queue time.

[`AudioQueueTimelineRef`](/documentation/AudioToolbox/AudioQueueTimelineRef)

Defines an opaque data type that represents an audio queue timeline object.

### Performing Offline Rendering

[`AudioQueueSetOfflineRenderFormat(_:_:_:)`](/documentation/AudioToolbox/AudioQueueSetOfflineRenderFormat(_:_:_:))

Sets the rendering mode and audio format for a playback audio queue.

[`AudioQueueOfflineRender(_:_:_:_:)`](/documentation/AudioToolbox/AudioQueueOfflineRender(_:_:_:_:))

Exports audio to a buffer, instead of to a device, using a playback audio queue.

### Callbacks

[`AudioQueueInputCallback`](/documentation/AudioToolbox/AudioQueueInputCallback)

Called by the system when a recording audio queue has finished filling an audio queue buffer.

[`AudioQueueOutputCallback`](/documentation/AudioToolbox/AudioQueueOutputCallback)

Called by the system when an audio queue buffer is available for reuse.

[`AudioQueuePropertyListenerProc`](/documentation/AudioToolbox/AudioQueuePropertyListenerProc)

Called by the system when a specified audio queue property changes value.

### Data Types

[`AudioQueueChannelAssignment`](/documentation/AudioToolbox/AudioQueueChannelAssignment)

[`AudioQueueProcessingTapFlags`](/documentation/AudioToolbox/AudioQueueProcessingTapFlags)

[`AudioQueueBuffer`](/documentation/AudioToolbox/AudioQueueBuffer)

Defines an audio queue buffer.

[`AudioQueueBufferRef`](/documentation/AudioToolbox/AudioQueueBufferRef)

A pointer to an audio queue buffer.

[`AudioQueueLevelMeterState`](/documentation/AudioToolbox/AudioQueueLevelMeterState)

Specifies the current level metering information for one channel of an audio queue.

[`AudioQueueParameterEvent`](/documentation/AudioToolbox/AudioQueueParameterEvent)

Specifies an audio queue parameter and associated value.

[`AudioQueueParameterID`](/documentation/AudioToolbox/AudioQueueParameterID)

A `UInt32` value that uniquely identifies an audio queue parameter.

[`AudioQueueParameterValue`](/documentation/AudioToolbox/AudioQueueParameterValue)

A `Float32` value for an audio queue parameter.

[`AudioQueueProcessingTapCallback`](/documentation/AudioToolbox/AudioQueueProcessingTapCallback)

[`AudioQueueProcessingTapRef`](/documentation/AudioToolbox/AudioQueueProcessingTapRef)

### Structures

[`AudioUnitConnection`](/documentation/AudioToolbox/AudioUnitConnection)

An audio unit source-to-destination connection specification.

[`AudioUnitEvent`](/documentation/AudioToolbox/AudioUnitEvent)

[`AudioUnitExternalBuffer`](/documentation/AudioToolbox/AudioUnitExternalBuffer)

Allows an audio unit host application to tell an audio unit to use a specified buffer for its input callback.

[`AudioUnitFrequencyResponseBin`](/documentation/AudioToolbox/AudioUnitFrequencyResponseBin)

An audio unit’s audio level at a particular frequency.

[`AudioUnitMeterClipping`](/documentation/AudioToolbox/AudioUnitMeterClipping)

Audio clipping that has occurred in a mixer unit.

[`AudioUnitMIDIControlMapping`](/documentation/AudioToolbox/AudioUnitMIDIControlMapping)

[`AudioUnitOtherPluginDesc`](/documentation/AudioToolbox/AudioUnitOtherPluginDesc)

[`AudioUnitParameter`](/documentation/AudioToolbox/AudioUnitParameter)

An adjustable audio unit attribute such as volume, pitch, or filter cutoff frequency.

[`AudioUnitParameterEvent`](/documentation/AudioToolbox/AudioUnitParameterEvent)

A scheduled change to an audio unit parameter’s value.

[`AudioUnitParameterHistoryInfo`](/documentation/AudioToolbox/AudioUnitParameterHistoryInfo)

The suggested update rate and history duration for parameters which have the [`flag_PlotHistory`](/documentation/AudioToolbox/AudioUnitParameterOptions/flag_PlotHistory) flag set.

[`AudioUnitParameterNameInfo`](/documentation/AudioToolbox/AudioUnitParameterNameInfo)

A short version of the name for an audio unit parameter.

[`AudioUnitParameterIDName`](/documentation/AudioToolbox/AudioUnitParameterIDName)

A type definition for a data type that defines the short version of the name for an audio unit parameter.

[`AudioUnitParameterInfo`](/documentation/AudioToolbox/AudioUnitParameterInfo)

[`AudioUnitParameterOptions`](/documentation/AudioToolbox/AudioUnitParameterOptions)

Value options for audio unit parameters.

[`AudioUnitParameterStringFromValue`](/documentation/AudioToolbox/AudioUnitParameterStringFromValue)

A string representation of a parameter’s value.

[`AudioUnitParameterValueFromString`](/documentation/AudioToolbox/AudioUnitParameterValueFromString)

A parameter’s value based on a string representation of the value.

[`AudioUnitParameterValueName`](/documentation/AudioToolbox/AudioUnitParameterValueName)

[`AudioUnitParameterValueTranslation`](/documentation/AudioToolbox/AudioUnitParameterValueTranslation)

[`AudioUnitPresetMAS_SettingData`](/documentation/AudioToolbox/AudioUnitPresetMAS_SettingData)

[`AudioUnitPresetMAS_Settings`](/documentation/AudioToolbox/AudioUnitPresetMAS_Settings)

[`AudioUnitProperty`](/documentation/AudioToolbox/AudioUnitProperty)

A key-value pair that declares an attribute or behavior for an audio unit.

[`AudioUnitRenderActionFlags`](/documentation/AudioToolbox/AudioUnitRenderActionFlags)

Flags for configuring audio unit rendering.

[`AU3DMixerRenderingFlags`](/documentation/AudioToolbox/AU3DMixerRenderingFlags)

[`AUChannelInfo`](/documentation/AudioToolbox/AUChannelInfo)

The audio input and output channel capabilities for an audio unit.

[`AUDependentParameter`](/documentation/AudioToolbox/AUDependentParameter)

An audio unit parameter whose value can change in response to a change in its parent metaparameter.

[`AUDistanceAttenuationData`](/documentation/AudioToolbox/AUDistanceAttenuationData)

[`AUHostIdentifier`](/documentation/AudioToolbox/AUHostIdentifier)

[`AUHostTransportStateFlags`](/documentation/AudioToolbox/AUHostTransportStateFlags)

[`AUHostVersionIdentifier`](/documentation/AudioToolbox/AUHostVersionIdentifier)

The name and version of an audio unit’s host application.

[`AUInputSamplesInOutputCallbackStruct`](/documentation/AudioToolbox/AUInputSamplesInOutputCallbackStruct)

The callback function and custom data for providing input-to-output sample mapping for an audio unit.

[`AUMIDIEvent`](/documentation/AudioToolbox/AUMIDIEvent)

A structure that describes a scheduled MIDI event.

[`AUMIDIOutputCallbackStruct`](/documentation/AudioToolbox/AUMIDIOutputCallbackStruct)

The callback function and custom data for an audio unit that provides MIDI output.

[`AUNumVersion`](/documentation/AudioToolbox/AUNumVersion)

[`AUParameterAutomationEvent`](/documentation/AudioToolbox/AUParameterAutomationEvent)

[`AUParameterEvent`](/documentation/AudioToolbox/AUParameterEvent)

A structure that describes a scheduled parameter event.

[`AUParameterMIDIMapping`](/documentation/AudioToolbox/AUParameterMIDIMapping)

[`AUParameterMIDIMappingFlags`](/documentation/AudioToolbox/AUParameterMIDIMappingFlags)

[`AUPreset`](/documentation/AudioToolbox/AUPreset)

Used to set factory presets for an audio unit.

[`AUPresetEvent`](/documentation/AudioToolbox/AUPresetEvent)

Describes an audio unit preset.

[`AURecordedParameterEvent`](/documentation/AudioToolbox/AURecordedParameterEvent)

An event recording the changing of a parameter at a particular host time.

[`AURenderCallbackStruct`](/documentation/AudioToolbox/AURenderCallbackStruct)

Used for registering an input callback function with an audio unit.

[`AURenderEvent`](/documentation/AudioToolbox/AURenderEvent)

A union of the various specific render event types.

[`AURenderEventHeader`](/documentation/AudioToolbox/AURenderEventHeader)

The common header for a render event.

[`AUSamplerBankPresetData`](/documentation/AudioToolbox/AUSamplerBankPresetData)

[`AUSamplerInstrumentData`](/documentation/AudioToolbox/AUSamplerInstrumentData)

[`AUScheduledAudioSliceFlags`](/documentation/AudioToolbox/AUScheduledAudioSliceFlags)

[`AUSpatialMixerRenderingFlags`](/documentation/AudioToolbox/AUSpatialMixerRenderingFlags)

### Enumerations

[`AudioQueueProcessingTapFlags`](/documentation/AudioToolbox/AudioQueueProcessingTapFlags)

[Anonymous](/documentation/AudioToolbox/1552627-anonymous)

[Audio Queue Time Pitch Algorithms](/documentation/AudioToolbox/1552630-audio-queue-time-pitch-algorithm)

[Audio Queue Property IDs](/documentation/AudioToolbox/1552629-audio-queue-property-ids)

[Audio Queue Property IDs](/documentation/AudioToolbox/1618733-audio-queue-property-ids)

[Audio Queue Hardware Codec Policy](/documentation/AudioToolbox/1618727-audio-queue-hardware-codec-polic)

### Constants

[`AudioQueuePropertyID`](/documentation/AudioToolbox/AudioQueuePropertyID)

Identifiers for audio queue properties.

[Audio Queue Parameters](/documentation/AudioToolbox/1552626-audio-queue-parameters)

Identifiers for audio queue parameters.

[Hardware Codec Policy Keys](/documentation/AudioToolbox/1618724-hardware-codec-policy-keys)

Indicates how an audio queue should choose between hardware and software implementations of a codec.

### Result Codes

This table lists result codes defined for Audio Queue Services.

[`kAudioQueueErr_InvalidBuffer`](/documentation/AudioToolbox/kAudioQueueErr_InvalidBuffer)

The specified audio queue buffer does not belong to the specified audio queue.

[`kAudioQueueErr_BufferEmpty`](/documentation/AudioToolbox/kAudioQueueErr_BufferEmpty)

The audio queue buffer is empty (that is, the `mAudioDataByteSize` field = `0`).

[`kAudioQueueErr_DisposalPending`](/documentation/AudioToolbox/kAudioQueueErr_DisposalPending)

The function cannot act on the audio queue because it is being asynchronously disposed of.

[`kAudioQueueErr_InvalidProperty`](/documentation/AudioToolbox/kAudioQueueErr_InvalidProperty)

The specified property ID is invalid.

[`kAudioQueueErr_InvalidPropertySize`](/documentation/AudioToolbox/kAudioQueueErr_InvalidPropertySize)

The size of the specified property is invalid.

[`kAudioQueueErr_InvalidParameter`](/documentation/AudioToolbox/kAudioQueueErr_InvalidParameter)

The specified parameter ID is invalid.

[`kAudioQueueErr_CannotStart`](/documentation/AudioToolbox/kAudioQueueErr_CannotStart)

The audio queue has encountered a problem and cannot start.

[`kAudioQueueErr_InvalidDevice`](/documentation/AudioToolbox/kAudioQueueErr_InvalidDevice)

The specified audio hardware device could not be located.

[`kAudioQueueErr_BufferInQueue`](/documentation/AudioToolbox/kAudioQueueErr_BufferInQueue)

The audio queue buffer cannot be disposed of when it is enqueued.

[`kAudioQueueErr_InvalidRunState`](/documentation/AudioToolbox/kAudioQueueErr_InvalidRunState)

The queue is running but the function can only operate on the queue when it is stopped, or vice versa.

[`kAudioQueueErr_InvalidQueueType`](/documentation/AudioToolbox/kAudioQueueErr_InvalidQueueType)

The queue is an input queue but the function can only operate on an output queue, or vice versa.

[`kAudioQueueErr_Permissions`](/documentation/AudioToolbox/kAudioQueueErr_Permissions)

You do not have the required permissions to call the function.

[`kAudioQueueErr_InvalidPropertyValue`](/documentation/AudioToolbox/kAudioQueueErr_InvalidPropertyValue)

The property value used is not valid.

[`kAudioQueueErr_PrimeTimedOut`](/documentation/AudioToolbox/kAudioQueueErr_PrimeTimedOut)

During a call to the [`AudioQueuePrime(_:_:_:)`](/documentation/AudioToolbox/AudioQueuePrime(_:_:_:)) function, the audio queue’s audio converter failed to convert the requested number of sample frames.

[`kAudioQueueErr_CodecNotFound`](/documentation/AudioToolbox/kAudioQueueErr_CodecNotFound)

The requested codec was not found.

[`kAudioQueueErr_InvalidCodecAccess`](/documentation/AudioToolbox/kAudioQueueErr_InvalidCodecAccess)

The codec could not be accessed.

[`kAudioQueueErr_QueueInvalidated`](/documentation/AudioToolbox/kAudioQueueErr_QueueInvalidated)

In iOS, the audio server has exited, causing the audio queue to become invalid.

[`kAudioQueueErr_RecordUnderrun`](/documentation/AudioToolbox/kAudioQueueErr_RecordUnderrun)

During recording, data was lost because there was no enqueued buffer to store it in.

[`kAudioQueueErr_EnqueueDuringReset`](/documentation/AudioToolbox/kAudioQueueErr_EnqueueDuringReset)

During a call to the [`AudioQueueReset(_:)`](/documentation/AudioToolbox/AudioQueueReset(_:)), [`AudioQueueStop(_:_:)`](/documentation/AudioToolbox/AudioQueueStop(_:_:)), or [`AudioQueueDispose(_:_:)`](/documentation/AudioToolbox/AudioQueueDispose(_:_:)) functions, the system does not allow you to enqueue buffers.

[`kAudioQueueErr_InvalidOfflineMode`](/documentation/AudioToolbox/kAudioQueueErr_InvalidOfflineMode)

The operation requires the audio queue to be in offline mode but it isn’t, or vice versa.

[`kAudioFormatUnsupportedDataFormatError`](/documentation/AudioToolbox/kAudioFormatUnsupportedDataFormatError)

The playback data format is unsupported (declared in `AudioFormat.h`).



---

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)