目次 - 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.dataに読み込む
    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