A callback that fires when all mixing has completed.
Defined in <SDL3_mixer/SDL_mixer.h>
typedef void (SDLCALL *MIX_PostMixCallback)(void *userdata, MIX_Mixer *mixer, const SDL_AudioSpec *spec, float *pcm, int samples);
userdata | an opaque pointer provided by the app for its personal use. |
mixer | the mixer that is generating audio. |
spec | the format of the data in pcm . |
pcm | the raw PCM data in float32 format. |
samples | the number of float values pointed to by pcm . |
This callback is fired when the mixer has completed all its work. If this mixer was created with MIX_CreateMixerDevice(), the data provided by this callback is what is being sent to the audio hardware, minus last conversions for format requirements. If this mixer was created with MIX_CreateMixer(), this is what is being output from MIX_Generate(), after final conversions.
The audio data passed through here is not const data; the app is permitted to change it in any way it likes, and those changes will replace the final mixer pipeline output.
An audiospec is provided. SDL_mixer always does its mixing work in 32-bit float samples, even if the inputs or final output are not floating point. As such, spec->format
will always be SDL_AUDIO_F32
and pcm
hardcoded to be a float pointer.
samples
is the number of float values pointed to by pcm
: samples, not sample frames! There are no promises how many samples will be provided per-callback, and this number can vary wildly from call to call, depending on many factors.
This datatype is available since SDL_mixer 3.0.0.