Initiates a rendering cycle for an audio unit.


OSStatus AudioUnitRender(AudioUnit inUnit, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inOutputBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData);



The audio unit that you are asking to render.


Flags to configure the rendering operation.


The audio time stamp for the render operation. Each time stamp must contain a valid sample time that is incremented monotonically from the previous call to this function. That is, the next time stamp is equal to inTimeStamp + inNumberFrames.

If sample time does not increase like this from one render call to the next, the audio unit interprets that as a discontinuity with the timeline it is rendering for.

When rendering to multiple output buses, ensure that this value is the same for each bus. Using the same value allows an audio unit to determine that the rendering for each output bus is part of a single render operation.


The output bus to render for.


The number of audio sample frames to render.


On input, the audio buffer list that the audio unit is to render into. On output, the audio data that was rendered by the audio unit.

The AudioBufferList that you provide on input must match the topology for the current audio format for the given bus. The buffer list can be either of these two variants:

  • If the mData pointers are non-null, the audio unit renders its output into those buffers

  • If the mData pointers are null, the audio unit can provide pointers to its own buffers. In this case, the audio unit must keep those buffers valid for the duration of the calling thread’s I/O cycle.

Return Value

A result code.

See Also

Audio Unit Initialization and Rendering Audio


Initializes an audio unit


Uninitializes an audio unit.


Registers a callback to receive audio unit render notifications.


Unregisters a previously-registered render listener callback function.


Resets an audio unit’s render state.