From 1c9a23dbd0124d758b02d7fca7e95acd6ae476a9 Mon Sep 17 00:00:00 2001 From: n-a-c-h <> Date: Fri, 24 Dec 2004 02:04:04 +0000 Subject: [PATCH] Some sound code rollback, fixes problems when using ALSA. --- zsnes/src/linux/sdllink.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/zsnes/src/linux/sdllink.c b/zsnes/src/linux/sdllink.c index a34d9e18..fe2f18b2 100644 --- a/zsnes/src/linux/sdllink.c +++ b/zsnes/src/linux/sdllink.c @@ -531,7 +531,7 @@ void ProcessKeyBuf(int scancode) int InitSound(void) { SDL_AudioSpec wanted; - + const int samptab[7] = { 1, 1, 2, 4, 2, 4, 4 }; const int freqtab[7] = { 8000, 11025, 22050, 44100, 16000, 32000, 48000 }; SDL_CloseAudio(); @@ -562,16 +562,8 @@ int InitSound(void) wanted.channels = 1; } - wanted.samples = (freqtab[SoundQuality] * wanted.channels)/32; + wanted.samples = samptab[SoundQuality] * 128 * wanted.channels; - printf("InitSound: %dhz, requesting %d sized buffer, " , freqtab[SoundQuality], wanted.samples); - - if (wanted.samples < 256) { wanted.samples = 256; } - else if(wanted.samples < 512) { wanted.samples = 512; } - else if(wanted.samples < 1024) { wanted.samples = 1024; } - else { wanted.samples = 2048; } // never exceed this. - - printf("getting %d.\n",wanted.samples); wanted.format = AUDIO_S16LSB; wanted.userdata = NULL; wanted.callback = UpdateSound; @@ -586,9 +578,9 @@ int InitSound(void) } SDL_PauseAudio(0); - Buffer_len = (audiospec.size * 3); - Buffer_len = (Buffer_len + 255) & ~255; /* Align to SPCSize */; - Buffer = malloc(Buffer_len+1); + Buffer_len = (audiospec.size * 2); + Buffer_len = (Buffer_len + 255) & ~255; /* Align to SPCSize */ + Buffer = malloc(Buffer_len); return TRUE; }