typedef void (SDLCALL *SDL_AudioPostmixCallback)(void *userdata, const SDL_AudioSpec *spec, float *buffer, int buflen);
| void * | userdata | アプリケーションが自身で使用するためにSDL_SetAudioPostmixCallbackに渡したポインタ |
| const SDL_AudioSpec * | spec | オーディオデバイスに送られるデータの形式 |
| float * | buffer | 送られるオーディオサンプルのバッファ. このコールバックでデータの獲得と修正を行える |
| int | buflen | バッファのバイト数 |
これは, 例えばビジュアライザーの書き込みや, 再生前のオーディオデータに最後のエフェクトを適用させるような, 最後のミックスにアクセスしたい場合に有用である.
このコールバックがオーディオデバイスへのデータの送信を遅らせると再生に問題が生じる可能性があるため, このコールバックでは可能な限り早く処理を行い長時間ブロックしないようにする必要がある.
コールバックの途中でオーディオデバイスが変わることがあるため, このコールバックはspecの形式のオーディオデータを必ず扱える必要がある.
しかし, データは常にSDL_AUDIO_F32形式のため, 変化に対応すべきなのは周波数とチャネル数のみである.
このコールバックは論理デバイスのゲインとオーディオストリームのゲインが適用された後で呼ばれる つまり, この時点で出力をゲインの設定よりもさらに大きくすることもできる.
このコールバックはSDLが背後で使用するスレッドから実行される. コールバックで使用する資源を保護する必要があるならば, アプリケーションの責任でロックする必要がある.