int SDL_GetNumAudioDevices(int iscapture)
iscapture | 0のとき再生デバイス, 0でないとき録音デバイスを要求する |
int i, count = SDL_GetNumAudioDevices(0);
for (i = 0; i < count; ++i) {
printf("オーディオデバイス %d: %s¥n", i, SDL_GetAudioDeviceName(i, 0));
}
この関数はオーディオサブシステムの初期化に成功した場合のみ有効である.
録音はSDL2.0.4では実装されていないので注意すること. よって, iscaptureは将来用で, 現在は常に0にする必要がある.
この関数はデバイスの一覧を決定できない場合-1を戻す. -1を戻すことは失敗ではない. 例えば, SDLが遠隔のオーディオサーバと対話するとき, インターネット上の全てを一覧にすることはできない. しかし, 指定したホストをSDL_OpenAudioDevice()で開くことはできる.
多くの場合, この関数が0以上の値を戻したとき, 既にデフォルトのデバイス(SDL_OpenAudioDevice()の第1引数がNULL)を開いている.
この関数は利用できるハードウェアを再検索する. ループで毎回呼ばずに, ループの開始時に一度だけ呼ぶ必要がある.
// このようにしてはならない.
// for (int i = 0; i < SDL_GetNumAudioDevices(0); i++)
// 代わりにこうするべきである.
const int count = SDL_GetNumAudioDevices(0);
for (int i = 0; i < count; i++) { /* ここにコードを書く */ }