bool SDL_SetAudioStreamGetCallback(SDL_AudioStream *stream, SDL_AudioStreamCallback callback, void *userdata);
| SDL_AudioStream * | stream | コールバックを設定するオーディオストリーム |
| SDL_AudioStreamCallback | callback | ストリームにデータの要求があったとき呼ばれるコールバック関数 |
| void * | userdata | アプリケーションがコールバックに渡すポインタ |
(bool) 成功のとき真, 失敗のとき偽を戻す.
SDL_GetError()を呼んで詳細を知ることができる.
失敗するのはstreamがNULLの場合のみである.
このコールバックはストリームからデータを取り出す前に呼ばれ, コールバックによるデータの変更を可能にしている.
コールバックが呼ばれた最中にSDL_PutAudioStreamData()を呼んでオーディオデータを追加することもできる(任意)ため, 必要ならばこれをトリガとしてこのコールバックで即座に新しいデータを追加できる.
コールバックのadditional_amount引数は, 呼び出し側が必要としている未処理の(ストリームの入力形式の)データのおおまかなバイト数であり, 安全のため多く推定されている場合がある.
これはストリーム内に既にある量を考慮しており, 要求の解決のために必要な追加の量のみを要求している.
そのため, コールバックは0バイトを要求されることや, 呼び出されるたびに要求される量が異なる可能性がある.
このコールバックは正確な量のデータを供給する必要はない. 多すぎる, 少なすぎる, まったく供給しないのいずれも認められる. 呼び出し側は, コールバックが供給した量に関わらず, 要求より多い場合は必要な量のみを受け取る.
オーディオストリームの消去や掃き出しではこのコールバックは呼ばれない.
この関数はストリームのロックを取得するため, 既存の処理中のコールバック(要求と追加)は新しいコールバックを設定する前に処理を完了する.
この関数にNULLを渡すとコールバックは無効になる.
この関数はどのスレッドからも安全に呼べる.