bool MIX_SetTrackIOStream(MIX_Track *track, SDL_IOStream *io, bool closeio);
| MIX_Track * | track | 新しいオーディオ入力を設定するトラック |
| SDL_IOStream * | io | トラックの入力として使用するI/Oストリーム |
| bool | closeio | 真のとき使用し終えたときSDL_IOStreamを閉じる |
これはトラックへの入力としては推奨しないが, 極めて限定的な状況では有用な手段になりうる: 一度だけ再生する大きなファイルをディスクから必要の応じて小さなチャンクで読み込む場合である. しかしほとんどの場合は先にMIX_Audioを生成してMIX_SetTrackAudio()を使用する方がよい.
ストリームは対応した形式のオーディオファイルを提供するものである必要がある. SDL_mixerはこの関数の呼び出しで有効であることを確認し, その後でミックスの途中で必要になるとストリームからファイルデータを読み込みデコードする.
ストリームはデータ全体に完全にシーク可能である必要がある. そうでなければこの関数は失敗する.
与えられたI/Oストリームは一度に1つのトラックしか割り当てられない. 複数を割り当ててもエラーは戻さないが, 1つのストリームを複数のトラックに割り当てるとそれぞれのトラックがストリームから不規則に読み取り, 混乱や誤ったミックス, デコードの失敗が発生する.
トラックが有効なオーディオ入力を得られたら, MIX_PlayTrack()または可能ならばMIX_PlayTag()を呼んでミックスを開始できる.
この関数のI/OストリームにNULLを渡すことができる. この場合はトラックから入力を取り除く. トラックが再生中の場合, ミキサーの処理が行われる次のタイミングで認識され, トラックの停止がマークされ割り付けられたMIX_TrackStoppedCallbackが呼ばれる.
トラックの再生中にオーディオ入力を変更することはできる. しかし, 一部の設定, 例えばループ位置は, 新しいオーディオでは意味をなさなくなる場合がある. このような場合は, MIX_PlayTrackを再び呼んでパラメータを修正すること.
渡されたI/Oストリームはトラックが必要がなくなるまで有効を保つ必要がある(トラックの入力を変えた, またはトラックを破棄した場合でも).
この関数はどのスレッドからも安全に呼べる.