int SDL_ConvertAudio(SDL_AudioCVT* cvt)
cvt | 事前に設定したSDL_AudioCVT (詳細を参照すること) |
アプリケーションはcvt構造体をSDL_BuildAudioCVT()を使って初期化し, 音声バッファを確保し, 変換前の音声データを書き込む. この関数はバッファを変換し, 要求の形式で置き換える.
データはいくつかの段階を経て変換され, その途中で長さが一時的に増加することもある. 例えば低い周波数に再サンプリングする場合, SDLは一時的に16bitデータを32bitに拡張し, その後, 増大したデータを収縮させる. バッファは変換前と変換後の両用で, 変換すると書き換えられ, アプリケーションは変換の過程で最も長いデータを書き込めるだけの領域を確保する必要がある. SDL_BuildAudioCVT()から戻った後, アプリケーションはcvt構造体のlenフィールドに変換前データのバイト長を書き込み, bufフィールドに len * len_mult バイトを確保する必要がある.
変換前データはSDL_ConvertAudio()を呼ぶ前にバッファにコピーする必要がある. 成功すると, このバッファには変換後のデータが書き込まれている. cvt構造体のlen_cvtフィールドが変換後のデータのバイト長である. len_cvtの後の領域に書き込まれた値は未定義である.