目次 - SDL_mixer 3.0 - MIX_SetTrackIOStream

MIX_SetTrackIOStream

MIX_Trackへの入力としてSDL_IOStreamを設定する

ヘッダ

SDL3_mixer/SDL_mixer.h

構文

bool MIX_SetTrackIOStream(MIX_Track *track, SDL_IOStream *io, bool closeio);

引数

MIX_Track *track新しいオーディオ入力を設定するトラック
SDL_IOStream *ioトラックの入力として使用するI/Oストリーム
boolcloseio真のとき使用し終えたときSDL_IOStreamを閉じる

戻り値

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

詳細

これはトラックへの入力としては推奨しないが, 極めて限定的な状況では有用な手段になりうる: 一度だけ再生する大きなファイルをディスクから必要の応じて小さなチャンクで読み込む場合である. しかしほとんどの場合は先にMIX_Audioを生成してMIX_SetTrackAudio()を使用する方がよい.

ストリームは対応した形式のオーディオファイルを提供するものである必要がある. SDL_mixerはこの関数の呼び出しで有効であることを確認し, その後でミックスの途中で必要になるとストリームからファイルデータを読み込みデコードする.

ストリームはデータ全体に完全にシーク可能である必要がある. そうでなければこの関数は失敗する.

与えられたI/Oストリームは一度に1つのトラックしか割り当てられない. 複数を割り当ててもエラーは戻さないが, 1つのストリームを複数のトラックに割り当てるとそれぞれのトラックがストリームから不規則に読み取り, 混乱や誤ったミックス, デコードの失敗が発生する.

トラックが有効なオーディオ入力を得られたら, MIX_PlayTrack()または可能ならばMIX_PlayTag()を呼んでミックスを開始できる.

この関数のI/OストリームにNULLを渡すことができる. この場合はトラックから入力を取り除く. トラックが再生中の場合, ミキサーの処理が行われる次のタイミングで認識され, トラックの停止がマークされ割り付けられたMIX_TrackStoppedCallbackが呼ばれる.

トラックの再生中にオーディオ入力を変更することはできる. しかし, 一部の設定, 例えばループ位置は, 新しいオーディオでは意味をなさなくなる場合がある. このような場合は, MIX_PlayTrackを再び呼んでパラメータを修正すること.

渡されたI/Oストリームはトラックが必要がなくなるまで有効を保つ必要がある(トラックの入力を変えた, またはトラックを破棄した場合でも).

スレッドセーフ

この関数はどのスレッドからも安全に呼べる.

バージョン

SDL_image 3.0.0以降

SDL Wikiへのリンク

SDL3_mixer/MIX_SetTrackIOStream