The calculated values in this structure are calculated by SDL_OpenAudio().
Defined in [SDL_audio.h](https://github.com/libsdl-org/SDL/blob/SDL2/include/SDL_audio.h)
typedef struct SDL_AudioSpec
{int freq; /**< DSP frequency -- samples per second */
/**< Audio data format */
SDL_AudioFormat format; /**< Number of channels: 1 mono, 2 stereo */
Uint8 channels; /**< Audio buffer silence value (calculated) */
Uint8 silence; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */
Uint16 samples; /**< Necessary for some compile environments */
Uint16 padding; /**< Audio buffer size in bytes (calculated) */
Uint32 size; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
SDL_AudioCallback callback; void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */
} SDL_AudioSpec;
For multi-channel audio, the default SDL channel mapping is: 2: FL FR (stereo) 3: FL FR LFE (2.1 surround) 4: FL FR BL BR (quad) 5: FL FR LFE BL BR (4.1 surround) 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) 7: FL FR FC LFE BC SL SR (6.1 surround) 8: FL FR FC LFE BL BR SL SR (7.1 surround)
SDL_AudioSpec want, have;
SDL_AudioDeviceID dev;extern void SDLCALL MyAudioCallback(void *userdata, Uint8 *stream, int len);
0, sizeof(want)); /* or SDL_zero(want) */
SDL_memset(&want, 48000;
want.freq =
want.format = AUDIO_F32;2;
want.channels = 4096;
want.samples = // you wrote this function elsewhere.
want.callback = MyAudioCallback; 0, &want, &have, SDL_AUDIO_ALLOW_FORMAT_CHANGE); dev = SDL_OpenAudioDevice(NULL,
int |
freq |
DSP frequency (samples per second); see Remarks for details |
format |
audio data format; see Remarks for details |
|
Uint8 |
channels |
number of separate sound channels: see Remarks for details |
Uint8 |
silence |
audio buffer silence value (calculated) |
Uint16 |
samples |
audio buffer size in samples (power of 2); see Remarks for details |
Uint32 |
size |
audio buffer size in bytes (calculated) |
SDL_AudioCallback |
callback |
the function to call when the audio device needs more data; see Remarks for details |
void* |
userdata |
a pointer that is passed to callback (otherwise ignored by SDL) |
CategoryAPI, CategoryAPIStruct, CategoryStruct, CategoryAudio