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

SDL_AudioIterationCallback

オーディオデバイスの繰り返し処理で呼ばれるコールバックの型

ヘッダ

SDL3/SDL_audio.h

構文

typedef void (SDLCALL *SDL_AudioIterationCallback)(void *userdata, SDL_AudioDeviceID devid, bool start);

引数

void *userdataアプリケーションが自身で使用するためにSDL_SetAudioIterationCallbacksに渡したポインタ
SDL_AudioDeviceIDdevidこのコールバックの実行対象のオーディオデバイス
boolstart真のとき繰り返しの開始, 偽のとき終了

詳細

このコールバックは, 論理オーディオデバイスがバインドされたオーディオストリームにアクセスしようとしたとき呼ばれ, アクセスが完了したとき再び呼ばれる. これはオーディオデバイスの1回の「繰り返し」をカバーしている.

ストリームの最後のオーディオバッファの処理の途中で状態の変更が行われないようにすることができるため, 全てのバインドされたオーディオストリームの状態を必ずアトミックに更新しなければならない場合, このコールバックを使うと便利である.

このコールバックがオーディオデバイスへのデータの送信を遅らせると再生に問題が生じる可能性があるため, このコールバックでは可能な限り早く処理を行い長時間ブロックしないようにする必要がある. このコールバックは, 1つの物理オーディオデバイスに関連した全ての論理デバイスとバインドされたオーディオストリームの処理を遅らせる可能性がある. 注意深く使用すること.

スレッドセーフ

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

バージョン

SDL 3.4.0以降

関連項目

SDL Wikiへのリンク

SDL_AudioIterationCallback - SDL Wiki