|
@@ -157,55 +157,46 @@ extern "C" |
|
|
{ |
|
|
media_raw_audio_format format; |
|
|
SDL_AudioFormat test_format = SDL_FirstAudioFormat(spec->format); |
|
|
int valid_datatype = 0; |
|
|
|
|
|
/* Parse the audio format and fill the Be raw audio format */ |
|
|
memset(&format, '\0', sizeof (media_raw_audio_format)); |
|
|
format.byte_order = B_MEDIA_LITTLE_ENDIAN; |
|
|
format.frame_rate = (float) spec->freq; |
|
|
format.channel_count = spec->channels; /* !!! FIXME: support > 2? */ |
|
|
while ((!valid_datatype) && (test_format)) { |
|
|
while (test_format) { |
|
|
spec->format = test_format; |
|
|
switch (test_format) { |
|
|
case AUDIO_S8: |
|
|
valid_datatype = 1; |
|
|
format.format = media_raw_audio_format::B_AUDIO_CHAR; |
|
|
break; |
|
|
|
|
|
case AUDIO_U8: |
|
|
valid_datatype = 1; |
|
|
format.format = media_raw_audio_format::B_AUDIO_UCHAR; |
|
|
break; |
|
|
|
|
|
case AUDIO_S16LSB: |
|
|
valid_datatype = 1; |
|
|
format.format = media_raw_audio_format::B_AUDIO_SHORT; |
|
|
break; |
|
|
|
|
|
case AUDIO_S16MSB: |
|
|
valid_datatype = 1; |
|
|
format.format = media_raw_audio_format::B_AUDIO_SHORT; |
|
|
format.byte_order = B_MEDIA_BIG_ENDIAN; |
|
|
break; |
|
|
|
|
|
case AUDIO_S32LSB: |
|
|
valid_datatype = 1; |
|
|
format.format = media_raw_audio_format::B_AUDIO_INT; |
|
|
break; |
|
|
|
|
|
case AUDIO_S32MSB: |
|
|
valid_datatype = 1; |
|
|
format.format = media_raw_audio_format::B_AUDIO_INT; |
|
|
format.byte_order = B_MEDIA_BIG_ENDIAN; |
|
|
break; |
|
|
|
|
|
case AUDIO_F32LSB: |
|
|
valid_datatype = 1; |
|
|
format.format = media_raw_audio_format::B_AUDIO_FLOAT; |
|
|
break; |
|
|
|
|
|
case AUDIO_F32MSB: |
|
|
valid_datatype = 1; |
|
|
format.format = media_raw_audio_format::B_AUDIO_FLOAT; |
|
|
format.byte_order = B_MEDIA_BIG_ENDIAN; |
|
|
break; |
|
@@ -218,7 +209,7 @@ extern "C" |
|
|
|
|
|
format.buffer_size = spec->samples; |
|
|
|
|
|
if (!valid_datatype) { /* shouldn't happen, but just in case... */ |
|
|
if (!test_format) { /* shouldn't happen, but just in case... */ |
|
|
SDL_SetError("Unsupported audio format"); |
|
|
return (-1); |
|
|
} |
|
|