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

SDL_OpenAudioDeviceStream

簡単のため典型的なオーディオの初期化を一度に行う関数

ヘッダ

SDL3/SDL_audio.h

構文

SDL_AudioStream * SDL_OpenAudioDeviceStream(SDL_AudioDeviceID devid, const SDL_AudioSpec *spec, SDL_AudioStreamCallback callback, void *userdata);

引数

SDL_AudioDeviceIDdevidオープンするデバイスインスタンスID, またはSDL_AUDIO_DEVICE_DEFAULT_PLAYBACKまたはSDL_AUDIO_DEVICE_DEFAULT_RECORDINGで最も適したデフォルトデバイス
const SDL_AudioSpec *specデバイスの設定. NULLで適切なデフォルト設定にできる
SDL_AudioStreamCallbackcallbackアプリケーションが新しい再生データを送信する, または新しい録音データを受信するためのコールバック. アプリケーションがSDL_PutAudioStreamDataまたはSDL_GetAudioStreamDataを使う場合はNULLとする
void *userdataアプリケーションがコールバックに渡すポインタ. NULLも可能callbackがNULLのとき無視される

戻り値

(SDL_AudioStream *) 使用の準備がされたオーディオストリームを戻す. 失敗のときNULLを戻す. SDL_GetError()を呼んで詳細を知ることができる. このストリームを使用し終えてSDL_DestroyAudioStreamを呼ぶと, 資源の解放とデバイスのクローズが行われる.

詳細

アプリケーションが1つのデータ源からPCMオーディオを供給したいだけならば, この関数が一度の呼び出しでオーディオの設定を全て行う.

これはSDL2からアプリケーションを移行する簡単な手段でもある.

この関数はオーディオデバイスをオープンし, ストリームを生成してそれにバインドする. 他の初期化とは違い, オーディオデバイスはこのストリームを破棄したときクローズされる. そのため, アプリケーションは戻されたSDL_AudioStreamのみをオーディオの再生に必要な対象とすることができる.

これも他の関数とは違い, オーディオデバイスは一時停止状態から始まる. オーディオの処理を開始するためにストリームをバインドする過程がないため, SDL2の挙動により近いものになっている. オーディオデバイスはSDL_ResumeAudioStreamDevice()で一時停止を解除する必要がある.

この関数は再生と録音の両方に対応している.

spec引数はオーディオストリームのアプリケーション側を表す. つまり, 録音の場合はデバイスからの出力の形式となり, 再生の場合はデバイスへの入力の形式となる. specがNULLの場合, システムが形式を選択し, その後にアプリケーションはSDL_GetAudioStreamFormat()で情報を得る.

どのデバイスをオープンするのかが問題にならないならば, 再生ならばSDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, 録音ならばSDL_AUDIO_DEVICE_DEFAULT_RECORDINGを使うことができる(恐らく使わなければならない).

コールバック関数の指定は任意である. NULLならば, アプリケーションは再生データをキューに入れる(または録音データをキューから出す). NULLでなければ, デバイスの一時停止が解除されればコールバックの呼び出しが始まる.

戻されたストリームをSDL_DestroyAudioStreamで破棄すると, ストリームに関連付けられたオーディオデバイスもクローズされる.

スレッドセーフ

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

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_OpenAudioDeviceStream - SDL Wiki