|
@@ -1520,38 +1520,26 @@ void SDL_QuitAudio(void)
|
|
|
}
|
|
|
|
|
|
#define NUM_FORMATS 8
|
|
|
-static int format_idx; /* !!! FIXME: whoa, why are there globals in use here?! */
|
|
|
-static int format_idx_sub;
|
|
|
-static SDL_AudioFormat format_list[NUM_FORMATS][NUM_FORMATS] = {
|
|
|
- { SDL_AUDIO_U8, SDL_AUDIO_S8, SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB },
|
|
|
- { SDL_AUDIO_S8, SDL_AUDIO_U8, SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB },
|
|
|
- { SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_U8, SDL_AUDIO_S8 },
|
|
|
- { SDL_AUDIO_S16MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_U8, SDL_AUDIO_S8 },
|
|
|
- { SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_U8, SDL_AUDIO_S8 },
|
|
|
- { SDL_AUDIO_S32MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_U8, SDL_AUDIO_S8 },
|
|
|
- { SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_U8, SDL_AUDIO_S8 },
|
|
|
- { SDL_AUDIO_F32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_U8, SDL_AUDIO_S8 },
|
|
|
+static const SDL_AudioFormat format_list[NUM_FORMATS][NUM_FORMATS + 1] = {
|
|
|
+ { SDL_AUDIO_U8, SDL_AUDIO_S8, SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB, 0 },
|
|
|
+ { SDL_AUDIO_S8, SDL_AUDIO_U8, SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB, 0 },
|
|
|
+ { SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
|
|
+ { SDL_AUDIO_S16MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
|
|
+ { SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
|
|
+ { SDL_AUDIO_S32MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
|
|
+ { SDL_AUDIO_F32LSB, SDL_AUDIO_F32MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
|
|
+ { SDL_AUDIO_F32MSB, SDL_AUDIO_F32LSB, SDL_AUDIO_S32MSB, SDL_AUDIO_S32LSB, SDL_AUDIO_S16MSB, SDL_AUDIO_S16LSB, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
|
|
};
|
|
|
|
|
|
-SDL_AudioFormat
|
|
|
-SDL_GetFirstAudioFormat(SDL_AudioFormat format)
|
|
|
+const SDL_AudioFormat *SDL_ClosestAudioFormats(SDL_AudioFormat format)
|
|
|
{
|
|
|
- for (format_idx = 0; format_idx < NUM_FORMATS; ++format_idx) {
|
|
|
- if (format_list[format_idx][0] == format) {
|
|
|
- break;
|
|
|
+ int i;
|
|
|
+ for (i = 0; i < NUM_FORMATS; i++) {
|
|
|
+ if (format_list[i][0] == format) {
|
|
|
+ return &format_list[i][0];
|
|
|
}
|
|
|
}
|
|
|
- format_idx_sub = 0;
|
|
|
- return SDL_GetNextAudioFormat();
|
|
|
-}
|
|
|
-
|
|
|
-SDL_AudioFormat
|
|
|
-SDL_GetNextAudioFormat(void)
|
|
|
-{
|
|
|
- if ((format_idx == NUM_FORMATS) || (format_idx_sub == NUM_FORMATS)) {
|
|
|
- return 0;
|
|
|
- }
|
|
|
- return format_list[format_idx][format_idx_sub++];
|
|
|
+ return &format_list[0][NUM_FORMATS]; /* not found; return what looks like a list with only a zero in it. */
|
|
|
}
|
|
|
|
|
|
Uint8 SDL_GetSilenceValueForFormat(const SDL_AudioFormat format)
|