Restore audio format binary compatibility with SDL 2.0

This commit is contained in:
Sam Lantinga
2023-09-04 10:16:33 -07:00
parent e85206ffd8
commit 3a932141e4
3 changed files with 22 additions and 24 deletions

View File

@@ -857,11 +857,11 @@ static void AudioConvertByteswap(void *dst, const void *src, int num_samples, in
static void AudioConvertToFloat(float *dst, const void *src, int num_samples, SDL_AudioFormat src_fmt)
{
// Endian conversion is handled separately
switch (src_fmt & ~SDL_AUDIO_MASK_ENDIAN) {
switch (src_fmt & ~SDL_AUDIO_MASK_BIG_ENDIAN) {
case SDL_AUDIO_S8: SDL_Convert_S8_to_F32(dst, (const Sint8 *) src, num_samples); break;
case SDL_AUDIO_U8: SDL_Convert_U8_to_F32(dst, (const Uint8 *) src, num_samples); break;
case (SDL_AUDIO_S16 & ~SDL_AUDIO_MASK_ENDIAN): SDL_Convert_S16_to_F32(dst, (const Sint16 *) src, num_samples); break;
case (SDL_AUDIO_S32 & ~SDL_AUDIO_MASK_ENDIAN): SDL_Convert_S32_to_F32(dst, (const Sint32 *) src, num_samples); break;
case SDL_AUDIO_S16LE: SDL_Convert_S16_to_F32(dst, (const Sint16 *) src, num_samples); break;
case SDL_AUDIO_S32LE: SDL_Convert_S32_to_F32(dst, (const Sint32 *) src, num_samples); break;
default: SDL_assert(!"Unexpected audio format!"); break;
}
}
@@ -869,11 +869,11 @@ static void AudioConvertToFloat(float *dst, const void *src, int num_samples, SD
static void AudioConvertFromFloat(void *dst, const float *src, int num_samples, SDL_AudioFormat dst_fmt)
{
// Endian conversion is handled separately
switch (dst_fmt & ~SDL_AUDIO_MASK_ENDIAN) {
switch (dst_fmt & ~SDL_AUDIO_MASK_BIG_ENDIAN) {
case SDL_AUDIO_S8: SDL_Convert_F32_to_S8((Sint8 *) dst, src, num_samples); break;
case SDL_AUDIO_U8: SDL_Convert_F32_to_U8((Uint8 *) dst, src, num_samples); break;
case (SDL_AUDIO_S16 & ~SDL_AUDIO_MASK_ENDIAN): SDL_Convert_F32_to_S16((Sint16 *) dst, src, num_samples); break;
case (SDL_AUDIO_S32 & ~SDL_AUDIO_MASK_ENDIAN): SDL_Convert_F32_to_S32((Sint32 *) dst, src, num_samples); break;
case SDL_AUDIO_S16LE: SDL_Convert_F32_to_S16((Sint16 *) dst, src, num_samples); break;
case SDL_AUDIO_S32LE: SDL_Convert_F32_to_S32((Sint32 *) dst, src, num_samples); break;
default: SDL_assert(!"Unexpected audio format!"); break;
}
}
@@ -959,7 +959,7 @@ void ConvertAudio(int num_frames, const void *src, SDL_AudioFormat src_format, i
}
// just a byteswap needed?
if ((src_format & ~SDL_AUDIO_MASK_ENDIAN) == (dst_format & ~SDL_AUDIO_MASK_ENDIAN)) {
if ((src_format & ~SDL_AUDIO_MASK_BIG_ENDIAN) == (dst_format & ~SDL_AUDIO_MASK_BIG_ENDIAN)) {
if (src_bitsize == 8) {
if (src != dst) {
SDL_memcpy(dst, src, num_frames * dst_sample_frame_size);