目次 - SDL_mixer 3.0 - MIX_SetTrackRawIOStream

MIX_SetTrackRawIOStream

MIX_Trackへの無圧縮PCMデータの入力としてSDL_IOStreamを設定する

ヘッダ

SDL3_mixer/SDL_mixer.h

構文

bool MIX_SetTrackRawIOStream(MIX_Track *track, SDL_IOStream *io, const SDL_AudioSpec *spec, bool closeio);

引数

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

戻り値

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

詳細

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

MIX_SetTrackAudioStream()もトラックにSDL_AudioStreamで無圧縮PCMデータを提供できる. データを既に直接SDL_IOStreamから得ているのでなければ, こちらの方が望ましいかもしれない.

ここではストリームは無圧縮PCM形式のオーディオデータの必要がある.

与えられた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_SetTrackRawIOStream