int SDL_QueueAudio(SDL_AudioDeviceID dev, const void* data, Uint32 len)
dev | 音声データを送信する音声デバイスのID |
data | 再生させるデータ |
len | データのバイト長(サンプル数ではない!) |
キューされた音声データを, コールバックではない録音デバイスから受け取りたいならば, この関数ではなくSDL_DequeueAudio()を使うこと. SDL_QueueAudio()を録音デバイスに対して使うと, エラーを表す-1を戻すだろう.
SDLには音声データをデバイスに与える2つの方法がある. SDLがコールバック関数を周期的に呼んで音声データを得る方法(引きの方法)と, コールバックを使わずにあなたがこの関数で音声データを定期的に与える方法(押しの方法)である.
キューできるデータの量にはアドレス空間以外の制限はない. キューされたデータは, アプリケーションが何もしなくても, 必要に応じてデバイスが取り出す. デバイスがデータを必要とするがキューにデータがない場合は, 代わりに無音になる. これは十分な十分なデータを定期的にキューできない場合は再生が途切れることを意味する.
この関数は与えられたデータをコピーする. よって, この関数から戻った後は安全に解放できる. この関数はスレッドセーフである. しかし, 一度に2つのスレッドから1つのデバイスにキューした場合, どちらのバッファが先にキューされるかはわからない.
アプリケーション提供のコールバック関数が使うデバイスに音声をキューしてはならない. そのようなデバイスに対しては, この関数は常に無効である. コールバック関数を使うか, SDL_QueueAudio()で音声をキューに入れるかのどちらかで, 両方を行ってはならない.
キューを消去する前にSDL_LockAudio()を呼んではならない. この関数の内部でSDLはロックを扱っている.
SDLはplanar audioに対応していない. あらかじめplanar audioフォーマットからplanarではないもの(SDL_AudioFormatを参照すること)にリサンプルする必要がある.