Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files
Added int32 adn float32 support to SDL_LoadWAV_RW().
  • Loading branch information
icculus committed Aug 31, 2006
1 parent 4721de7 commit 722893931996736e46cea6f0ee6883209f44c562
Showing with 34 additions and 16 deletions.
  1. +33 −16 src/audio/SDL_wave.c
  2. +1 −0 src/audio/SDL_wave.h
@@ -413,7 +413,7 @@ SDL_LoadWAV_RW(SDL_RWops * src, int freesrc,
int was_error;
Chunk chunk;
int lenread;
int MS_ADPCM_encoded, IMA_ADPCM_encoded;
int IEEE_float_encoded, MS_ADPCM_encoded, IMA_ADPCM_encoded;
int samplesize;

/* WAV magic header */
@@ -472,11 +472,15 @@ SDL_LoadWAV_RW(SDL_RWops * src, int freesrc,
was_error = 1;
goto done;
}
MS_ADPCM_encoded = IMA_ADPCM_encoded = 0;
IEEE_float_encoded = MS_ADPCM_encoded = IMA_ADPCM_encoded = 0;
switch (SDL_SwapLE16(format->encoding)) {
case PCM_CODE:
/* We can understand this */
break;
case IEEE_FLOAT_CODE:
IEEE_float_encoded = 1;
/* We can understand this */
break;
case MS_ADPCM_CODE:
/* Try to understand this */
if (InitMS_ADPCM(format) < 0) {
@@ -506,24 +510,37 @@ SDL_LoadWAV_RW(SDL_RWops * src, int freesrc,
}
SDL_memset(spec, 0, (sizeof *spec));
spec->freq = SDL_SwapLE32(format->frequency);
switch (SDL_SwapLE16(format->bitspersample)) {
case 4:
if (MS_ADPCM_encoded || IMA_ADPCM_encoded) {
spec->format = AUDIO_S16;

if (IEEE_float_encoded) {
if ((SDL_SwapLE16(format->bitspersample)) != 32) {
was_error = 1;
} else {
spec->format = AUDIO_F32;
}
} else {
switch (SDL_SwapLE16(format->bitspersample)) {
case 4:
if (MS_ADPCM_encoded || IMA_ADPCM_encoded) {
spec->format = AUDIO_S16;
} else {
was_error = 1;
}
break;
case 8:
spec->format = AUDIO_U8;
break;
case 16:
spec->format = AUDIO_S16;
break;
case 32:
spec->format = AUDIO_S32;
break;
default:
was_error = 1;
break;
}
break;
case 8:
spec->format = AUDIO_U8;
break;
case 16:
spec->format = AUDIO_S16;
break;
default:
was_error = 1;
break;
}

if (was_error) {
SDL_SetError("Unknown %d-bit PCM data format",
SDL_SwapLE16(format->bitspersample));
@@ -34,6 +34,7 @@
#define DATA 0x61746164 /* "data" */
#define PCM_CODE 0x0001
#define MS_ADPCM_CODE 0x0002
#define IEEE_FLOAT_CODE 0x0003
#define IMA_ADPCM_CODE 0x0011
#define MP3_CODE 0x0055
#define WAVE_MONO 1

0 comments on commit 7228939

Please sign in to comment.