diff options
author | Simon Howard | 2009-05-07 21:59:38 +0000 |
---|---|---|
committer | Simon Howard | 2009-05-07 21:59:38 +0000 |
commit | cc93c797921f08d48ac8dfc64fefcf7725a84517 (patch) | |
tree | e7cc9351488dff129417e3cc50444bfec9ffaecc | |
parent | 5859134e1c81d15e49cab4c1971ed2bce5781845 (diff) | |
download | chocolate-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.c | 7 | ||||
-rw-r--r-- | src/i_sdlsound.c | 7 |
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; |