bool MIX_SetTrackAudioStream(MIX_Track *track, SDL_AudioStream *stream);
| MIX_Track * | track | 新しいオーディオ入力を設定するトラック |
| SDL_AudioStream * | stream | 新しいオーディオストリーム. NULLも可 |
オーディオストリームを使用すると, アプリケーションはアルゴリズムによる生成やその場での生成などによる, あらゆる種類と形式の生成することができるようになる.
トラックがオーディオストリームを使用する場合, ミックスするデータが必要になるとSDL_GetAudioStreamDataが呼ばれる. アプリケーションはストリームのデータを先にバッファに入れておくことも, ストリームにコールバックを設定して必要な時点で渡すこともできる. 詳細はSDLのドキュメントにある.
与えられたオーディオストリームは一度に1つのトラックしか割り当てられない. 複数を割り当ててもエラーは戻さないが, 1つのストリームを複数のトラックに割り当てるとそれぞれのトラックがストリームから不規則に読み取り, 混乱や誤ったミックスが発生する.
トラックが有効なオーディオ入力を得られたら, MIX_PlayTrack()または可能ならばMIX_PlayTag()を呼んでミックスを開始できる.
この関数のオーディオストリームにNULLを渡すことができる. この場合はトラックからオーディオ入力を取り除く. トラックが再生中の場合, ミキサーの処理が行われる次のタイミングで認識され, トラックの停止がマークされ割り付けられたMIX_TrackStoppedCallbackが呼ばれる.
トラックの再生中にオーディオ入力を変更することはできる. しかし, 一部の設定, 例えばループ位置は, 新しいオーディオでは意味をなさなくなる場合がある. このような場合は, MIX_PlayTrackを再び呼んでパラメータを修正すること.
渡されたオーディオストリームはトラックが必要がなくなるまで有効を保つ必要がある(トラックの入力を変えた, またはトラックを破棄した場合でも).
この関数はどのスレッドからも安全に呼べる.