bool SDL_LoadWAV_IO(SDL_IOStream *src, bool closeio, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len);
| SDL_IOStream * | src | WAVEデータの読込元 |
| bool | closeio | 真のときエラーであってもsrcから戻る前にSDL_CloseIO()が呼ばれる |
| SDL_AudioSpec * | spec | 成功した場合のWAVEファイルの詳細な形式の代入先へのポインタ |
| Uint8 ** | audio_buf | この関数が確保した領域のオーディオデータへのポインタの代入先へのポインタ |
| Uint32 * | audio_len | オーディオデータのバイト数の代入先へのポインタ |
(bool) 成功のとき真を戻す.
audio_bufには確保されたオーディオデータが書き込まれたバッファへのポインタが代入され, audio_lenにはオーディオバッファのバイト長が代入される.
この関数は .WAVファイルをオープンできない, 不明な形式が使用されている, または壊れているとき偽を戻す. SDL_GetError()を呼んで詳細を知ることができる.
この関数が戻したaudio_bufを使い終えたとき, SDL_free()を呼んで破棄する必要がある.
WAVEファイルを読み込むには, src, spec, audio_buf, audio_lenが有効なポインタである必要がある.
ファイルのデータ全体がメモリに読み込まれ, 必要ならばデコードされる.
対応する形式はRIFF WAVEファイルで, PCM(8, 16, 24, 32ビット), IEEE浮動小数点(32ビット), Microsoft ADPCMとIMA ADPCM(4ビット), A-lawとμ-law(8ビット)である. 他の形式には現時点では対応しておらずエラーとなる.
この関数が成功すると, 真を戻し, 関数が確保した領域のオーディオデータへのポインタがaudio_bufに書き込まれ, そのバイト数がaudio_lenに代入される.
SDL_AudioSpecのfreq, channels, formatにはバッファ内の音声データの値が代入される.
この関数が戻したaudio_bufを使い終えたとき, SDL_free()を呼んで破棄する必要がある.
.WAVファイルフォーマットの仕様が不完全なため, デコーダが厳密に解釈すると, 広く出回っている問題のあるファイルを再生できない. これらのファイルを再生するため, デコーダはファイル, factチャンク, RIFFチャンクサイズの切り捨てを認めている. SDL_HINT_WAVE_RIFF_CHUNK_SIZE, SDL_HINT_WAVE_TRUNCATION, SDL_HINT_WAVE_FACT_CHUNKヒントで読込時の動作を調整できる.
不正な(切り捨て, 破損, ヘッダの不正な値), または大きすぎる, または対応していないファイルは全てエラーとなる. また, データソースの致命的なI/Oエラーは, 読み込みを中断してエラーとなる. いずれのエラーの場合もNULLを戻し(srcがNULLの場合を除く), 適当なエラーメッセージが設定される.
データソースはシークに対応している必要がある.
使用例:
SDL_LoadWAV_IO(SDL_IOFromFile("sample.wav", "rb"), true, &spec, &buf, &len);
SDL_LoadWAV関数でも同じことができるが, より単純である:
SDL_LoadWAV("sample.wav", &spec, &buf, &len);
この関数はどのスレッドからも安全に呼べる.