Fixes audio problems on broken drivers (Diablo-D3)
This commit is contained in:
@@ -507,7 +507,7 @@ void ProcessKeyBuf(int scancode)
|
|||||||
int InitSound(void)
|
int InitSound(void)
|
||||||
{
|
{
|
||||||
SDL_AudioSpec wanted;
|
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 };
|
const int freqtab[7] = { 8000, 11025, 22050, 44100, 16000, 32000, 48000 };
|
||||||
|
|
||||||
SDL_CloseAudio();
|
SDL_CloseAudio();
|
||||||
@@ -538,7 +538,16 @@ int InitSound(void)
|
|||||||
wanted.channels = 1;
|
wanted.channels = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
wanted.samples = samptab[SoundQuality] * 128 * wanted.channels;
|
wanted.samples = (freqtab[SoundQuality] * wanted.channels)/32;
|
||||||
|
|
||||||
|
//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.format = AUDIO_S16LSB;
|
||||||
wanted.userdata = NULL;
|
wanted.userdata = NULL;
|
||||||
wanted.callback = UpdateSound;
|
wanted.callback = UpdateSound;
|
||||||
@@ -553,9 +562,9 @@ int InitSound(void)
|
|||||||
}
|
}
|
||||||
SDL_PauseAudio(0);
|
SDL_PauseAudio(0);
|
||||||
|
|
||||||
Buffer_len = (audiospec.size * 2);
|
Buffer_len = (audiospec.size * 3);
|
||||||
Buffer_len = (Buffer_len + 255) & ~255; /* Align to SPCSize */
|
Buffer_len = (Buffer_len + 255) & ~255; /* Align to SPCSize */;
|
||||||
Buffer = malloc(Buffer_len);
|
Buffer = malloc(Buffer_len+1);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user