MIX_Audio * MIX_LoadAudio_IO(MIX_Mixer *mixer, SDL_IOStream *io, bool predecode, bool closeio);
| MIX_Mixer * | mixer | オーディオを使用するミキサー. NULLも可 |
| SDL_IOStream * | io | データを読み込むSDL_IOStream |
| bool | predecode | 真のとき, この関数から戻る前に圧縮されたデータを全て展開する |
| bool | closeio | 真のときSDL_mixerは戻る前に(成功でも失敗でも)SDL_IOStreamを閉じる |
通常の使用では, アプリケーションはオーディオは一度読み込み(それは初期設定時にかもしれない), それを複数回再生する.
オーディオを読み込むと, それはRAMに元のデータの形式のまま保存される. 再生のたびにデータはデコードされる. 例えば, MP3はMP3形式でメモリに格納され, デコードされながら再生される. これはI/Oオーバーヘッドとメモリ使用のバランスのためである.
predecodeが真のとき, データは読み込み時にデコードされ生のPCMデータとして格納される.
これはロード時間とメモリ使用量が飛躍的に増大するが, 再生の最中はデータをデコードする必要がなくなる.
(MIX_SetTrackIOStream()を使用するとデータをRAMにあらかじめ読み込む処理を完全に回避できるが, 別のトレードオフが発生する. 適切な方法はアプリケーションのニーズにより異なり, 異なる状況では異なる方法が合理的な場合がある.)
MIX_Audioオブジェクトはミキサー間で共有できる.
この関数はMIX_Mixerを引数に取り, これはこのミキサーで使用すること意味し, 読み込みではこのオーディオ形式に合わせようとするが, 生成されたオーディオは別のミキサーでも使用できる.
mixerがNULLの場合, MIX_Mixerは妥当なデフォルトを設定する.
MIX_Audioを生成した後は, MIX_SetTrackAudio()でMIX_Trackに割り付けるか, そのままMIX_PlayAudio()で再生する.
MIX_Audioを使い終えたならば, MIX_DestroyAudio()で解放できる.
この関数はSDL_IOStreamからデータを読み込む. ファイルシステムのパスから読み込むもの(MIX_LoadAudio())や, プロパティで全てを制御できるもの(MIX_LoadAudioWithProperties())もある.
SDL_IOStreamはシーク可能の必要がある. そうでなければ読み込みで失敗する. ストリームがシークできない場合(データがHTTP接続で来るなど)は, データをメモリかディスクに保存し, それを読み込んでストリームを生成することを検討すること.
この関数はどのスレッドからも安全に呼べる.