summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Howard2009-05-07 21:59:38 +0000
committerSimon Howard2009-05-07 21:59:38 +0000
commitcc93c797921f08d48ac8dfc64fefcf7725a84517 (patch)
treee7cc9351488dff129417e3cc50444bfec9ffaecc
parent5859134e1c81d15e49cab4c1971ed2bce5781845 (diff)
downloadchocolate-doom-cc93c797921f08d48ac8dfc64fefcf7725a84517.tar.gz
chocolate-doom-cc93c797921f08d48ac8dfc64fefcf7725a84517.tar.bz2
chocolate-doom-cc93c797921f08d48ac8dfc64fefcf7725a84517.zip
Calculate SDL buffer size automatically based on sample rate.
Subversion-branch: /trunk/chocolate-doom Subversion-revision: 1511
-rw-r--r--pcsound/pcsound_sdl.c7
-rw-r--r--src/i_sdlsound.c7
2 files changed, 11 insertions, 3 deletions
diff --git a/pcsound/pcsound_sdl.c b/pcsound/pcsound_sdl.c
index f862dfa7..546e6a36 100644
--- a/pcsound/pcsound_sdl.c
+++ b/pcsound/pcsound_sdl.c
@@ -32,6 +32,7 @@
#include "pcsound.h"
#include "pcsound_internal.h"
+#define SOUND_SLICE_TIME 100 /* ms */
#define SQUARE_WAVE_AMP 0x2000
// If true, we initialised SDL and have the responsibility to shut it
@@ -165,6 +166,8 @@ static void PCSound_SDL_Shutdown(void)
static int PCSound_SDL_Init(pcsound_callback_func callback_func)
{
+ int slicesize;
+
// Check if SDL_mixer has been opened already
// If not, we must initialise it now
@@ -176,7 +179,9 @@ static int PCSound_SDL_Init(pcsound_callback_func callback_func)
return 0;
}
- if (Mix_OpenAudio(pcsound_sample_rate, AUDIO_S16SYS, 2, 1024) < 0)
+ slicesize = (SOUND_SLICE_TIME * pcsound_sample_rate) / 1000;
+
+ if (Mix_OpenAudio(pcsound_sample_rate, AUDIO_S16SYS, 2, slicesize) < 0)
{
fprintf(stderr, "Error initialising SDL_mixer: %s\n", Mix_GetError());
diff --git a/src/i_sdlsound.c b/src/i_sdlsound.c
index f3af667e..34adf9de 100644
--- a/src/i_sdlsound.c
+++ b/src/i_sdlsound.c
@@ -49,6 +49,7 @@
#include "doomdef.h"
#define LOW_PASS_FILTER
+#define SOUND_SLICE_TIME 100 /* ms */
#define NUM_CHANNELS 16
static boolean sound_initialised = false;
@@ -666,10 +667,10 @@ static void I_SDL_ShutdownSound(void)
sound_initialised = false;
}
-
static boolean I_SDL_InitSound(void)
{
int i;
+ int slicesize;
// No sounds yet
@@ -689,7 +690,9 @@ static boolean I_SDL_InitSound(void)
return false;
}
- if (Mix_OpenAudio(snd_samplerate, AUDIO_S16SYS, 2, 1024) < 0)
+ slicesize = (snd_samplerate * SOUND_SLICE_TIME) / 1000;
+
+ if (Mix_OpenAudio(snd_samplerate, AUDIO_S16SYS, 2, slicesize) < 0)
{
fprintf(stderr, "Error initialising SDL_mixer: %s\n", Mix_GetError());
return false;