Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Let SDL convert to valid Dreamcast audio formats instead of failing i…
Browse files Browse the repository at this point in the history
…f the

 hardware can't be opened in a specific format. Not that you'd want to swallow
 the overhead on a Dreamcast, but hey, it's the SDL way.
  • Loading branch information
icculus committed Aug 31, 2006
1 parent a3b390f commit 0350ac5
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions src/audio/dc/SDL_dcaudio.c
Expand Up @@ -220,18 +220,31 @@ DCAUD_CloseAudio(_THIS)
static int
DCAUD_OpenAudio(_THIS, SDL_AudioSpec * spec)
{
switch (spec->format & 0xff) {
case 8:
spec->format = AUDIO_S8;
break;
case 16:
spec->format = AUDIO_S16LSB;
break;
default:
SDL_AudioFormat test_format = SDL_FirstAudioFormat(spec->format);
int valid_datatype = 0;
while ((!valid_datatype) && (test_format)) {
spec->format = test_format;
switch (test_format) {
/* only formats Dreamcast accepts... */
case AUDIO_S8:
case AUDIO_S16LSB:
valid_datatype = 1;
break;

default:
test_format = SDL_NextAudioFormat();
break;
}
}

if (!valid_datatype) { /* shouldn't happen, but just in case... */
SDL_SetError("Unsupported audio format");
return (-1);
}

if (spec->channels > 2)
spec->channels = 2; /* no more than stereo on the Dreamcast. */

/* Update the fragment size as size in bytes */
SDL_CalculateAudioSpec(spec);

Expand Down

0 comments on commit 0350ac5

Please sign in to comment.