audio: SDL_ClosestAudioFormats now favors float32 and native byte order.
Fixes #9581.
This commit is contained in:
parent
80f5f0b1fb
commit
364bbd545d
1 changed files with 20 additions and 8 deletions
|
@ -2138,18 +2138,30 @@ int SDL_ResumeAudioStreamDevice(SDL_AudioStream *stream)
|
||||||
return SDL_ResumeAudioDevice(devid);
|
return SDL_ResumeAudioDevice(devid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
|
||||||
|
#define NATIVE(type) SDL_AUDIO_##type##LE
|
||||||
|
#define SWAPPED(type) SDL_AUDIO_##type##BE
|
||||||
|
#else
|
||||||
|
#define NATIVE(type) SDL_AUDIO_##type##BE
|
||||||
|
#define SWAPPED(type) SDL_AUDIO_##type##LE
|
||||||
|
#endif
|
||||||
|
|
||||||
#define NUM_FORMATS 8
|
#define NUM_FORMATS 8
|
||||||
|
// always favor Float32 in native byte order, since we're probably going to convert to that for processing anyhow.
|
||||||
static const SDL_AudioFormat format_list[NUM_FORMATS][NUM_FORMATS + 1] = {
|
static const SDL_AudioFormat format_list[NUM_FORMATS][NUM_FORMATS + 1] = {
|
||||||
{ SDL_AUDIO_U8, SDL_AUDIO_S8, SDL_AUDIO_S16LE, SDL_AUDIO_S16BE, SDL_AUDIO_S32LE, SDL_AUDIO_S32BE, SDL_AUDIO_F32LE, SDL_AUDIO_F32BE, 0 },
|
{ SDL_AUDIO_U8, NATIVE(F32), SWAPPED(F32), SDL_AUDIO_S8, NATIVE(S16), SWAPPED(S16), NATIVE(S32), SWAPPED(S32), 0 },
|
||||||
{ SDL_AUDIO_S8, SDL_AUDIO_U8, SDL_AUDIO_S16LE, SDL_AUDIO_S16BE, SDL_AUDIO_S32LE, SDL_AUDIO_S32BE, SDL_AUDIO_F32LE, SDL_AUDIO_F32BE, 0 },
|
{ SDL_AUDIO_S8, NATIVE(F32), SWAPPED(F32), SDL_AUDIO_U8, NATIVE(S16), SWAPPED(S16), NATIVE(S32), SWAPPED(S32), 0 },
|
||||||
{ SDL_AUDIO_S16LE, SDL_AUDIO_S16BE, SDL_AUDIO_S32LE, SDL_AUDIO_S32BE, SDL_AUDIO_F32LE, SDL_AUDIO_F32BE, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
{ NATIVE(S16), NATIVE(F32), SWAPPED(F32), SWAPPED(S16), NATIVE(S32), SWAPPED(S32), SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
||||||
{ SDL_AUDIO_S16BE, SDL_AUDIO_S16LE, SDL_AUDIO_S32BE, SDL_AUDIO_S32LE, SDL_AUDIO_F32BE, SDL_AUDIO_F32LE, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
{ SWAPPED(S16), NATIVE(F32), SWAPPED(F32), NATIVE(S16), SWAPPED(S32), NATIVE(S32), SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
||||||
{ SDL_AUDIO_S32LE, SDL_AUDIO_S32BE, SDL_AUDIO_F32LE, SDL_AUDIO_F32BE, SDL_AUDIO_S16LE, SDL_AUDIO_S16BE, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
{ NATIVE(S32), NATIVE(F32), SWAPPED(F32), SWAPPED(S32), NATIVE(S16), SWAPPED(S16), SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
||||||
{ SDL_AUDIO_S32BE, SDL_AUDIO_S32LE, SDL_AUDIO_F32BE, SDL_AUDIO_F32LE, SDL_AUDIO_S16BE, SDL_AUDIO_S16LE, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
{ SWAPPED(S32), NATIVE(F32), SWAPPED(F32), NATIVE(S32), SWAPPED(S16), NATIVE(S16), SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
||||||
{ SDL_AUDIO_F32LE, SDL_AUDIO_F32BE, SDL_AUDIO_S32LE, SDL_AUDIO_S32BE, SDL_AUDIO_S16LE, SDL_AUDIO_S16BE, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
{ NATIVE(F32), SWAPPED(F32), NATIVE(S32), SWAPPED(S32), NATIVE(S16), SWAPPED(S16), SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
||||||
{ SDL_AUDIO_F32BE, SDL_AUDIO_F32LE, SDL_AUDIO_S32BE, SDL_AUDIO_S32LE, SDL_AUDIO_S16BE, SDL_AUDIO_S16LE, SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
{ SWAPPED(F32), NATIVE(F32), SWAPPED(S32), NATIVE(S32), SWAPPED(S16), NATIVE(S16), SDL_AUDIO_U8, SDL_AUDIO_S8, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#undef NATIVE
|
||||||
|
#undef SWAPPED
|
||||||
|
|
||||||
const SDL_AudioFormat *SDL_ClosestAudioFormats(SDL_AudioFormat format)
|
const SDL_AudioFormat *SDL_ClosestAudioFormats(SDL_AudioFormat format)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < NUM_FORMATS; i++) {
|
for (int i = 0; i < NUM_FORMATS; i++) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue