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

SDL_SetAudioStreamInputChannelMap

オーディオストリームの入力チャネルマップを設定する

ヘッダ

SDL3/SDL_audio.h

構文

bool SDL_SetAudioStreamInputChannelMap(SDL_AudioStream *stream, const int *chmap, int count);

引数

SDL_AudioStream *stream変更するオーディオストリーム
const int *chmap新しいチャネルマップ. NULLのときデフォルトに戻す
intcountチャネルの数

戻り値

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

詳細

チャネルマップは任意で, ほとんどの場合は必要なく, SDLが求める順序でデータを渡せばよい.

入力チャネルマップは, SDL_PutAudioStreamDataでストリームに追加されたデータのチャネルの順序を入れ替える. その後のSDL_PutAudioStreamDataの呼び出しでは, 新しいチャネルの順序でデータを供給する必要がある.

配列の各項目は入力チャネルを表していて, チャネルはその値に再マップされる. ステレオの左右を入れ替えるには, 配列を { 1, 0 } のようにする. 複数のチャネルを同一のチャネルに再マップすることも可能で, その場合は { 1, 1 } のようにすると, ステレオの両チャネルが右チャネルにマップされる. チャネルマップに有効なチャネルではなく-1を設定すると, そのチャネルはミュートされ無音になる.

チャネルマップでチャネルの数を変更することはできない. 録音またはミュートを設定するのみである.

既にストリームにキューされているデータは, データが追加された時点の順序で処理される. これにより, ある順序でサウンドファイルを最後まである順序でストリームに渡し, 次のサウンドファイルでは順序を変えることもでき, また, 以前のサウンドファイルが既にキューにある状態で, 新しいサウンドをキューに入れても, どちらも正常に再生できる.

オーディオストリームはデフォルトでは再マップが適用されていない. チャネルマップにNULLを渡すことができ, 再マップを無効にすることができる.

SDLはチャネルマップをコピーする. 呼び出し側は, この関数の呼び出し後に配列を保存する必要はない.

countが現在のオーディオストリームの形式のチャネル数と等しくない場合, 失敗する. これは, チャネルマップを設定とオーディオストリームの形式の変更で競合が発生しないようにするための対策である.

ストリームの形式の変更とは異なり, 録音デバイスにバインドされたストリームの入力チャネルマップはいつでも変更できる. この関数の呼び出しの後にデバイスからストリームに加えられたデータは新しくマップされているが, 既に加えられたデータは前のマップのままである.

スレッドセーフ

この関数はストリーム固有のミューテックスが行われている限りどのスレッドからも安全に呼べる. しかし, 異なるスレッドから同時に形式を異なるチャネル数に変更してはならない.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_SetAudioStreamInputChannelMap - SDL Wiki