Wiki Page Content

Differences between revisions 22 and 23
Revision 22 as of 2013-08-07 20:37:12
Size: 3258
Editor: RyanGordon
Comment: Added example, improved docs
Revision 23 as of 2013-08-07 20:45:17
Size: 3020
Editor: RyanGordon
Comment: Nuked stupid code, added remarks.
Deletions are marked like this. Additions are marked like this.
Line 65: Line 65:
void renderAudio(SDL_AudioFormat format, void *buf, size_t buflen)
{
    if (SDL_AUDIO_ISFLOAT(format)) {
        renderAudioAsFloatingPoint(buf, buflen);
    } else if (SDL_AUDIO_BITSIZE(format) == 16) {
        renderAudioAsInt16(buf, buflen);
    } else if (SDL_AUDIO_BITSIZE(format) == 32) {
        renderAudioAsInt32(buf, buflen);
    } else {
        SDL_assert(0 && "uhoh, we should write this.");
    }
}
Line 80: Line 68:
''You can add useful comments here'' Be careful about assuming details of a data format. If you only check SDL_AUDIO_ISFLOAT, you might be surprised to find a later version of SDL adds Float64 support when you expected there to be only 32-bit data, for example.

SDL_AudioFormat

An enumeration of audio formats.

Values

Bit Meanings

These are what the 16 bits in SDL_AudioFormat currently mean:

 +----------------------sample is signed if set
 |
 |        +----------sample is bigendian if set
 |        |
 |        |           +--sample is float if set
 |        |           |
 |        |           |  +--sample bit size---+
 |        |           |  |                    |
15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0 

Unspecified bits are always zero, but may be used in later versions of SDL. There are macros to query the specified bits.

Audio Format Macros

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_BITSIZE(x)

(x & SDL_AUDIO_MASK_BITSIZE)

SDL_AUDIO_ISFLOAT(x)

(x & SDL_AUDIO_MASK_DATATYPE)

SDL_AUDIO_ISBIGENDIAN(x)

(x & SDL_AUDIO_MASK_ENDIAN)

SDL_AUDIO_ISSIGNED(x)

(x & SDL_AUDIO_MASK_SIGNED)

SDL_AUDIO_ISINT(x)

(!SDL_AUDIO_ISFLOAT(x))

SDL_AUDIO_ISLITTLEENDIAN(x)

(!SDL_AUDIO_ISBIGENDIAN(x))

SDL_AUDIO_ISUNSIGNED(x)

(!SDL_AUDIO_ISSIGNED(x))

Audio Format Values

8-bit support

AUDIO_S8

signed 8-bit samples

AUDIO_U8

unsigned 8-bit samples

16-bit support

AUDIO_S16LSB

signed 16-bit samples in little-endian byte order

AUDIO_S16MSB

signed 16-bit samples in big-endian byte order

AUDIO_S16SYS

signed 16-bit samples in native byte order

AUDIO_S16

AUDIO_S16LSB

AUDIO_U16LSB

unsigned 16-bit samples in little-endian byte order

AUDIO_U16MSB

unsigned 16-bit samples in big-endian byte order

AUDIO_U16SYS

unsigned 16-bit samples in native byte order

AUDIO_U16

AUDIO_U16LSB

32-bit support (new to SDL 2.0)

AUDIO_S32LSB

32-bit integer samples in little-endian byte order

AUDIO_S32MSB

32-bit integer samples in big-endian byte order

AUDIO_S32SYS

32-bit integer samples in native byte order

AUDIO_S32

AUDIO_S32LSB

float support (new to SDL 2.0)

AUDIO_F32LSB

32-bit floating point samples in little-endian byte order

AUDIO_F32MSB

32-bit floating point samples in big-endian byte order

AUDIO_F32SYS

32-bit floating point samples in native byte order

AUDIO_F32

AUDIO_F32LSB

Code Examples


Remarks

Be careful about assuming details of a data format. If you only check SDL_AUDIO_ISFLOAT, you might be surprised to find a later version of SDL adds Float64 support when you expected there to be only 32-bit data, for example.


CategoryEnum, CategoryAudio

None: SDL_AudioFormat (last edited 2015-01-02 21:21:14 by PhilippWiesemann)

(Page Info.)
Feedback
Please include your contact information if you'd like to receive a reply.
Submit