目次 - SDL_mixer 3.0 - MIX_LoadAudio_IO

MIX_LoadAudio_IO

SDL_IOStreamから再生するオーディオを読み込む

ヘッダ

SDL3_mixer/SDL_mixer.h

構文

MIX_Audio * MIX_LoadAudio_IO(MIX_Mixer *mixer, SDL_IOStream *io, bool predecode, bool closeio);

引数

MIX_Mixer *mixerオーディオを使用するミキサー. NULLも可
SDL_IOStream *ioデータを読み込むSDL_IOStream
boolpredecode真のとき, この関数から戻る前に圧縮されたデータを全て展開する
boolcloseio真のときSDL_mixerは戻る前に(成功でも失敗でも)SDL_IOStreamを閉じる

戻り値

(MIX_Audio *) ミキサーで音声を発生させるために使用できるオーディオオブジェクトを戻す. 失敗のときNULLを戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

通常の使用では, アプリケーションはオーディオは一度読み込み(それは初期設定時にかもしれない), それを複数回再生する.

オーディオを読み込むと, それは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接続で来るなど)は, データをメモリかディスクに保存し, それを読み込んでストリームを生成することを検討すること.

スレッドセーフ

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

バージョン

SDL_image 3.0.0以降

関連項目

SDL Wikiへのリンク

SDL3_mixer/MIX_LoadAudio_IO