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

SDL_OpenAudio

オーディオデバイスを開く古い関数. 新しいプログラムは代わりにSDL_OpenAudioDevice()を使う方がよい

構文

int SDL_OpenAudio(SDL_AudioSpec* desired, SDL_AudioSpec* obtained)

引数

desired要求する出力形式のSDL_AudioSpec
obtained実際のパラメータが代入されたSDL_AudioSpec, またはNULL

戻り値

この関数はオーディオデバイスを要求したパラメータで開く. 成功のとき0を戻し, 実際のハードウェアのパラメータをobtainedの示すポインタに書き込む.

obtainedがNULLの場合, コールバック関数に渡される音声データは要求した形式であることが保証されている. そして必要ならば実際のハードウェアの音声形式に自動的に変換される. obtainedがNULLの場合, desiredのフィールドが書き換えられる.

この関数はオーディオデバイスを開く, またはオーディオスレッドの設定に失敗したとき, 負の数のエラーコードを戻す. SDL_GetError()を呼んで詳細を知ることができる.

サンプルコード

SDL_AudioSpec want, have;

SDL_memset(&want, 0, sizeof(want)); /* または SDL_zero(want); */
want.freq = 48000;
want.format = AUDIO_F32;
want.channels = 2;
want.samples = 4096;
want.callback = MyAudioCallback; /* この関数はどこか別の場所に書く. 詳細はSDL_AudioSpecを参照すること */

if (SDL_OpenAudio(&want, &have) < 0) {
    SDL_Log("オーディオを開けなかった: %s", SDL_GetError());
} else {
    if (have.format != want.format)
        SDL_Log("32bit浮動小数点のオーディオ形式に対応していない");
    SDL_PauseAudio(0); /* 再生を開始する */
    SDL_Delay(5000); /* コールバックで音声を5秒間再生する */
    SDL_CloseAudio();
}

詳細

この関数はSDL 1.2との互換性のために残されている. しかし, SDL 2.0の新しい関数よりもやや簡単に使えるという理由もある. オーディオデバイスを開く, 新しくより強力な推奨される方法は, SDL_OpenAudioDevice()を使うことである.

この関数は

SDL_CloseAudioDevice(1);

と同じである.

2つの異なる点がある.

関連項目(関数)

SDL_CloseAudio
SDL_LockAudio
SDL_PauseAudio
SDL_UnlockAudio

関連項目(構造体)

SDL_AudioSpec

SDL Wikiへのリンク

SDL_OpenAudio - SDL Wiki