Mix_Chunk *Mix_LoadWAV_RW(SDL_RWops *src, int freesrc)
src | 読み込み元のSDL_RWops |
freesrc | 0以外のときSDL_RWopsを閉じて解放する. 0のとき開いたままにする |
SDL_mixerには2つのオーディオデータ構造がある. 1つは「チャンク」で, これは事前にファイルを完全にメモリにデコードする. もう1つは「音楽」で, ファイルを必要に応じてデコードする. 当初はWAVの様な無圧縮の単純な形式をチャンク, MP3等を音楽として, 1つの音楽をBGMとしてストリーム再生し, チャンクを効果音として繰り返し再生することを意図していた.
現在では形式による違いはなく, ほぼ相互に交換可能で, 事前にデコードした方がアプリケーションにとってよいかの問題となっている. チャンクはより多くのメモリを使用するが, 一度読み込めば再度デコードすることはない. 一方, 音楽は再生のたびに常にデコードする必要がある. さらに決定的なのは, アプリケーションには多くのチャンクのチャネルを確保できるが, 「音楽」チャネルは1つしか提供されていない.
freesrcが0以外のとき, 処理が成功してもしなくても関数から戻るときRWopsは閉じる. どのような場合でもこの関数を呼ぶと必要ならばSDL_mixerは全て読み込む.
これとは別にSDL_RWopsを使わずにファイルをディスクから読み込む関数(SDL_mixer 2.6.0以前はマクロ)も存在する. Mix_LoadWAV("filename.wav")とすると, 関数があなたの代わりにこれらの操作を行う.
チャンクを使用し終えたならば, アプリケーションはMix_FreeChunk()を呼んで解放する必要がある.