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

SDL_AudioFormat

音声形式のフラグ

ビットの意味

SDL_AudioFormatの16bitの現在の意味は次の通りである.

 +------------1ならサンプリングデータは符号あり
 |
 |        +-------------1ならビッグエンディアン
 |        |
 |        |           +---------1なら浮動小数点
 |        |           |
 |        |           |  +----ビットサイズ----+
 |        |           |  |                    |
15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0 

指定のないビットは常に0である. しかし, 将来のバージョンでは使うかもしれない. 特定のビットを調査するマクロもある.

音声形式のマクロ

SDL_AUDIO_MASK_BITSIZE(0xFF)
SDL_AUDIO_MASK_DATATYPE(1<<8)
SDL_AUDIO_MASK_ENDIAN(1<<12)
SDL_AUDIO_MASK_SIGNED(1<<15)
SDL_AUDIO_MASK_BITSIZE(x)(x & SDL_AUDIO_MASK_BITSIZE)
SDL_AUDIO_MASK_ISFLOAT(x)(x & SDL_AUDIO_MASK_DATATYPE)
SDL_AUDIO_MASK_ISBIGENDIAN(x)(x & SDL_AUDIO_MASK_ENDIAN)
SDL_AUDIO_MASK_ISSIGNED(x)(x & SDL_AUDIO_MASK_SIGNED)
SDL_AUDIO_MASK_ISINT(x)(!SDL_AUDIO_ISFLOAT(x))
SDL_AUDIO_MASK_ISLITTLEENDIAN(x)(!SDL_AUDIO_ISBIGENDIAN(x))
SDL_AUDIO_MASK_ISUNSIGNED(x)(!SDL_AUDIO_ISSIGNED(x))

音声形式の値

8bit
AUDIO_S88bit符号ありサンプリング
AUDIO_U88bit符号なしサンプリング
16bit
AUDIO_S16LSB16bit符号ありリトルエンディアンサンプリング
AUDIO_S16MSB16bit符号ありビッグエンディアンサンプリング
AUDIO_S16SYS16bit符号ありシステムと同じバイト順サンプリング
AUDIO_S16AUDIO_S16LSB
AUDIO_U16LSB16bit符号なしリトルエンディアンサンプリング
AUDIO_U16MSB16bit符号なしビッグエンディアンサンプリング
AUDIO_U16SYS16bit符号なしシステムと同じバイト順サンプリング
AUDIO_U16AUDIO_S16LSB
32bit (SDL 2.0で追加)
AUDIO_S32LSB32bit整数リトルエンディアンサンプリング
AUDIO_S32MSB32bit整数ビッグエンディアンサンプリング
AUDIO_S32SYS32bit整数システムと同じバイト順サンプリング
AUDIO_S32AUDIO_S32LSB
浮動小数点 (SDL 2.0で追加)
AUDIO_F32LSB32bit浮動小数点リトルエンディアンサンプリング
AUDIO_F32MSB32bit浮動小数点ビッグエンディアンサンプリング
AUDIO_F32SYS32bit浮動小数点システムと同じバイト順サンプリング
AUDIO_F32AUDIO_F32LSB

サンプルコード

extern SDL_AudioFormat fmt;
if (SDL_AUDIO_ISFLOAT(fmt)) {
    printf("浮動小数点データ¥n");
} else {
    printf("整数データ¥n");
}
printf("サンプルあたり%dビット¥n", (int) SDL_AUDIO_BITSIZE(fmt));

詳細

データ形式の思い込みに注意すること. 例えば, SDL_AUDIO_ISFLOAT()のチェックのみで32bitデータを想定すると, 後のバージョンで64bit浮動小数点が追加されたとき問題が発生する.

関連項目(構造体)

SDL_AudioCVT
SDL_AudioSpec

関連項目(関数)

SDL_BuildAudioCVT
SDL_MixAudioFormat

SDL Wikiへのリンク

SDL_AudioFormat - SDL Wiki