目次 - SDL 3.0 API(機能別) - 再生と録音 - SDL_AudioPostmixCallback

SDL_AudioPostmixCallback

オーディオデバイスにデータを送信する直前に呼ばれるコールバックの型

ヘッダ

SDL3/SDL_audio.h

構文

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送られるオーディオサンプルのバッファ. このコールバックでデータの獲得と修正を行える
intbuflenバッファのバイト数

詳細

これは, 例えばビジュアライザーの書き込みや, 再生前のオーディオデータに最後のエフェクトを適用させるような, 最後のミックスにアクセスしたい場合に有用である.

このコールバックがオーディオデバイスへのデータの送信を遅らせると再生に問題が生じる可能性があるため, このコールバックでは可能な限り早く処理を行い長時間ブロックしないようにする必要がある.

コールバックの途中でオーディオデバイスが変わることがあるため, このコールバックはspecの形式のオーディオデータを必ず扱える必要がある. しかし, データは常にSDL_AUDIO_F32形式のため, 変化に対応すべきなのは周波数とチャネル数のみである.

このコールバックは論理デバイスのゲインとオーディオストリームのゲインが適用された後で呼ばれる つまり, この時点で出力をゲインの設定よりもさらに大きくすることもできる.

スレッドセーフ

このコールバックはSDLが背後で使用するスレッドから実行される. コールバックで使用する資源を保護する必要があるならば, アプリケーションの責任でロックする必要がある.

バージョン

SDL 3.2.0以降

SDL Wikiへのリンク

SDL_AudioPostmixCallback - SDL Wiki