bool SDL_PutAudioStreamPlanarData(SDL_AudioStream *stream, const void * const *channel_buffers, int num_channels, int num_samples);
| SDL_AudioStream * | stream | オーディオデータを追加するストリーム |
| const void * const * | channel_buffers | 配列へのポインタの配列. 1つの配列が1チャネルを表す |
| int | num_channels | channel_buffers配列の数または-1 |
| int | num_samples | ストリームに書き込む各配列のサンプル数 |
(bool) 成功のとき真, 失敗のとき偽を戻す SDL_GetError()を呼んで詳細を知ることができる.
データは, 形式/チャネル数/サンプルレートが, 最後に呼んだSDL_SetAudioStreamFormatまたは変更していないならばストリームを生成したとき指定した形式と一致している必要がある.
データは交互に配置され, キューに入れられる. SDL_AudioStreamは交互に配置されたデータのみ処理する. そのため, これは単に配列ごとに分けられたデータを簡単にキューに入れることができる便利のための関数なので注意すること. チャネルごとに分けられたデータを回収する関数は存在しない.
channel_buffers内の配列は, 交互に並べられたデータと同じ順序にすること. 先頭の配列が, 交互に並べられた先頭のデータである.
それぞれの配列はNULLにもできる. その場合, そのチャネルは無音が配置される.
num_channelsはchannel_buffersの配列の数を指定する.
これはストリームの形式がどこかで変わってもオーバーフローを防ぐために使用できる.
現在のチャネルよりも多いチャネル数を指定しても無視される.
少ないチャネルを指定すると, 存在しない配列の分はNULLとして扱われる(そのチャネルには無音が書き込まれる).
チャネル数を-1にすると, SDLは現在のチャネル数と一致する配列があるとみなす.
num_samplesは配列ごとのサンプル数なので注意すること.
これはキューに入力されるサンプルフレームの数とも言える.
ステレオ配列でこの値が1ならば, ストリームのキューには2サンプルが入力される.
これは1つの配列のバイト数を指定するSDL_PutAudioStreamDataとは異なる.
この関数はどのスレッドからも安全に呼べるが, ストリームにコールバックが設定されている場合は, 呼び出し側のロックが必要になる.