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

SDL_SetAudioStreamPutCallback

オーディオストリームにデータが追加されたとき呼ばれるコールバックを設定する

ヘッダ

SDL3/SDL_audio.h

構文

bool SDL_SetAudioStreamPutCallback(SDL_AudioStream *stream, SDL_AudioStreamCallback callback, void *userdata);

引数

SDL_AudioStream *streamコールバックを設定するオーディオストリーム
SDL_AudioStreamCallbackcallbackストリームにデータを追加したとき呼ばれるコールバック関数
void *userdataアプリケーションがコールバックに渡すポインタ

戻り値

(bool) 成功のとき真, 失敗のとき偽を戻す. SDL_GetError()を呼んで詳細を知ることができる. 失敗するのはstreamがNULLの場合のみである.

詳細

このコールバックはストリームにデータを追加した後で呼ばれ, コールバックによるデータの変更を可能にしている.

コールバックが呼ばれた最中にSDL_GetAudioStreamData()を呼んでオーディオデータを得ることもできる(任意).

コールバックのadditional_amount引数は, 呼び出し側が渡した未処理の(ストリームの出力形式の)データのおおまかなバイト数であり, 安全のため少なく推定されている場合がある. この値はストリーム内の既にデータがある場合, 利用可能なデータの量よりも少ない場合がある. また, ストリームが再サンプリングのためにバッファを維持する必要がある場合, 呼び出し側が渡した量よりも少ないことがある. そのため, コールバックは0バイトを渡すことや, 呼び出されるたびに渡す量が異なる可能性がある.

コールバックは, 現在の呼び出して渡された量の代わりに, SDL_GetAudioStreamAvailableでストリームから読み出し可能な総量を得ることもできる.

このコールバックで全てのデータを読み出す必要はない. 少ない, またはまったく読み出さないことも認められる. 読み出されなかったデータは, 単に次のアクセスのためにストリーム内に残る.

オーディオストリームの消去や掃き出しではこのコールバックは呼ばれない.

この関数はストリームのロックを取得するため, 既存の処理中のコールバック(要求と追加)は新しいコールバックを設定する前に処理を完了する.

この関数にNULLを渡すとコールバックは無効になる.

スレッドセーフ

この関数はどのスレッドからも安全に呼べる.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_SetAudioStreamPutCallback - SDL Wiki