目次 - API(機能別) - 再生と録音 - SDL_BuildAudioCVT

SDL_BuildAudioCVT

変換のためのSDL_AudioCVT構造体を初期化する

構文

int SDL_BuildAudioCVT(SDL_AudioCVT* cvt, SDL_AudioFormat src_format, Uint8 src_channels, int src_rate, SDL_AudioFormat dst_format, Uint8 dst_channels, int dst_rate)

引数

cvt音声変換の情報を代入するSDL_AudioCVT
src_format変換前の音声形式. SDL_AudioFormatを参照すること
src_channels変換前のチャネル数
src_rate変換前の周波数(1秒あたりのサンプルフレーム数)
dst_format変換後の音声形式. SDL_AudioFormatを参照すること
dst_channels変換後のチャネル数
dst_rate変換後の周波数(1秒あたりのサンプルフレーム数)

戻り値

音声が変換されるとき1, 変換の必要がないとき0, 失敗のとき負の数のエラーコードを戻す. SDL_GetError()を呼んで詳細を知ることができる.

サンプルコード

// 1024 ステレオ 48000Hzのサンプルフレームバッファを, 32bit浮動小数点から16bit整数に変換する
SDL_AudioCVT cvt;
SDL_BuildAudioCVT(&cvt, AUDIO_F32, 2, 48000, AUDIO_S16, 2, 48000);
SDL_assert(cvt.needed); // 明らかにこれは必要である
cvt.len = 1024 * 2 * 4;  // 1024 ステレオ 32bit浮動小数点のサンプルフレームバッファ
cvt.buf = (Uint8 *) SDL_malloc(cvt.len * cvt.len_mult);
// ここで32bit浮動小数点のデータをcvt.bufに読み込む
SDL_ConvertAudio(&cvt);
// cvt.bufにはcvt.len_cvtバイトの変換されたデータが書き込まれている

詳細

音声データを変換する前に, SDL_AudioCVTの変換前と変換後を初期化する必要がある.

この関数はSDL_AudioCVTの全フィールドを0にする. よって, 音声データをバッファに書き込む前に, この関数を呼ぶ必要がある.

一度この関数が成功を戻せば(そして変換の必要があれば), SDL_AudioCVTの残りのフィールドに値を書き込める. この段階で確保すべきバッファの長さがわかるためである. そして, SDL_ConvertAudio()を呼べば変換は完了する.

関連項目(関数)

SDL_ConvertAudio

SDL Wikiへのリンク

SDL_BuildAudioCVT - SDL Wiki