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_S8 | 8bit符号ありサンプリング |
AUDIO_U8 | 8bit符号なしサンプリング |
16bit | |
AUDIO_S16LSB | 16bit符号ありリトルエンディアンサンプリング |
AUDIO_S16MSB | 16bit符号ありビッグエンディアンサンプリング |
AUDIO_S16SYS | 16bit符号ありシステムと同じバイト順サンプリング |
AUDIO_S16 | AUDIO_S16LSB |
AUDIO_U16LSB | 16bit符号なしリトルエンディアンサンプリング |
AUDIO_U16MSB | 16bit符号なしビッグエンディアンサンプリング |
AUDIO_U16SYS | 16bit符号なしシステムと同じバイト順サンプリング |
AUDIO_U16 | AUDIO_S16LSB |
32bit (SDL 2.0で追加) | |
AUDIO_S32LSB | 32bit整数リトルエンディアンサンプリング |
AUDIO_S32MSB | 32bit整数ビッグエンディアンサンプリング |
AUDIO_S32SYS | 32bit整数システムと同じバイト順サンプリング |
AUDIO_S32 | AUDIO_S32LSB |
浮動小数点 (SDL 2.0で追加) | |
AUDIO_F32LSB | 32bit浮動小数点リトルエンディアンサンプリング |
AUDIO_F32MSB | 32bit浮動小数点ビッグエンディアンサンプリング |
AUDIO_F32SYS | 32bit浮動小数点システムと同じバイト順サンプリング |
AUDIO_F32 | AUDIO_F32LSB |
extern SDL_AudioFormat fmt;
if (SDL_AUDIO_ISFLOAT(fmt)) {
printf("浮動小数点データ¥n");
} else {
printf("整数データ¥n");
}
printf("サンプルあたり%dビット¥n", (int) SDL_AUDIO_BITSIZE(fmt));