目次 - SDL 3.0 API(機能別) - 再生と録音 - SDL_PutAudioStreamPlanarData

SDL_PutAudioStreamPlanarData

オーディオストリームにチャネルごとの配列に分けられたデータを追加する

ヘッダ

SDL3/SDL_audio.h

構文

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チャネルを表す
intnum_channelschannel_buffers配列の数または-1
intnum_samplesストリームに書き込む各配列のサンプル数

戻り値

(bool) 成功のとき真, 失敗のとき偽を戻す SDL_GetError()を呼んで詳細を知ることができる.

詳細

データは, 形式/チャネル数/サンプルレートが, 最後に呼んだSDL_SetAudioStreamFormatまたは変更していないならばストリームを生成したとき指定した形式と一致している必要がある.

データは交互に配置され, キューに入れられる. SDL_AudioStreamは交互に配置されたデータのみ処理する. そのため, これは単に配列ごとに分けられたデータを簡単にキューに入れることができる便利のための関数なので注意すること. チャネルごとに分けられたデータを回収する関数は存在しない.

channel_buffers内の配列は, 交互に並べられたデータと同じ順序にすること. 先頭の配列が, 交互に並べられた先頭のデータである. それぞれの配列はNULLにもできる. その場合, そのチャネルは無音が配置される.

num_channelschannel_buffersの配列の数を指定する. これはストリームの形式がどこかで変わってもオーバーフローを防ぐために使用できる. 現在のチャネルよりも多いチャネル数を指定しても無視される. 少ないチャネルを指定すると, 存在しない配列の分はNULLとして扱われる(そのチャネルには無音が書き込まれる). チャネル数を-1にすると, SDLは現在のチャネル数と一致する配列があるとみなす.

num_samplesは配列ごとのサンプル数なので注意すること. これはキューに入力されるサンプルフレームの数とも言える. ステレオ配列でこの値が1ならば, ストリームのキューには2サンプルが入力される. これは1つの配列のバイト数を指定するSDL_PutAudioStreamDataとは異なる.

スレッドセーフ

この関数はどのスレッドからも安全に呼べるが, ストリームにコールバックが設定されている場合は, 呼び出し側のロックが必要になる.

バージョン

SDL 3.4.0以降

関連項目

SDL Wikiへのリンク

SDL_PutAudioStreamPlanarData - SDL Wiki