目次 - API(機能別) - 再生と録音 - SDL_PauseAudioDevice

SDL_PauseAudioDevice

指定したデバイスの再生の一時停止と一時停止解除を行う

構文

void SDL_PauseAudioDevice(SDL_AudioDeviceID dev, int pause_on)

引数

devSDL_OpenAudioDevice()で開いたオーディオデバイスのID
pause_on0以外のとき一時停止, 0のとき一時停止解除

サンプルコード

extern SDL_AudioDeviceID devid;
SDL_PauseAudioDevice(devid, 1);  // この関数から戻ったときオーディオコールバックは一時停止する
SDL_Delay(5000);  // オーディオデバイスは5秒間無音
SDL_PauseAudioDevice(devid, 0);  // オーディオコールバックが再び実行される

詳細

この関数は指定のデバイスのコールバック処理を一時停止と一時停止の解除を行う. 新しく開いたオーディオデバイスは一時停止から始まる. よって, 指定の開いたオーディオデバイスの再生を始めるためには, この関数をpause_on=0で呼ぶ必要がある. これにより, オーディオデバイスを開いた後でも, コールバック関数のデータを安全に初期化できる. 一時停止中はオーディオデバイスに無音が書き込まれる. そしてコールバック関数は呼ばれないことが保障されている. あるデバイスを停止しても, 他の一時停止していないデバイスのコールバックは停止しない.

一時停止状態はスタックではない. デバイスを複数回一時停止しても, 一度一時停止解除すると再生が始まる. これはSDL_LockAudioDevice()の動作とは異なる.

単にコールバック関数との競合からいくつかの変数を守るだけならば, オーディオデバイスの一時停止を使うべきではない. 再生の漏れを引き起こす可能性があるためである. 代わりにSDL_LockAudioDevice()を使うべきだ.

関連項目(関数)

SDL_LockAudioDevice

SDL Wikiへのリンク

SDL_PauseAudioDevice - SDL Wiki