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

SDL_SetAudioStreamGetCallback

オーディオストリームがデータを要求したとき呼ばれるコールバックを設定する

ヘッダ

SDL3/SDL_audio.h

構文

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

引数

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

戻り値

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

詳細

このコールバックはストリームからデータを取り出す前に呼ばれ, コールバックによるデータの変更を可能にしている.

コールバックが呼ばれた最中にSDL_PutAudioStreamData()を呼んでオーディオデータを追加することもできる(任意)ため, 必要ならばこれをトリガとしてこのコールバックで即座に新しいデータを追加できる.

コールバックのadditional_amount引数は, 呼び出し側が必要としている未処理の(ストリームの入力形式の)データのおおまかなバイト数であり, 安全のため多く推定されている場合がある. これはストリーム内に既にある量を考慮しており, 要求の解決のために必要な追加の量のみを要求している. そのため, コールバックは0バイトを要求されることや, 呼び出されるたびに要求される量が異なる可能性がある.

このコールバックは正確な量のデータを供給する必要はない. 多すぎる, 少なすぎる, まったく供給しないのいずれも認められる. 呼び出し側は, コールバックが供給した量に関わらず, 要求より多い場合は必要な量のみを受け取る.

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

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

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

スレッドセーフ

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

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_SetAudioStreamGetCallback - SDL Wiki