[XBlast-commit] xblast sdl_sound.c,1.5,1.6
Brought to you by:
alfie
From: Frank Z. <fz...@us...> - 2006-03-28 11:54:43
|
Update of /cvsroot/xblast/xblast In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30847 Modified Files: sdl_sound.c Log Message: Change file lengths from long to int (better on 64 bits platforms). Removed some dead code and unused variables. When converting a sound from mono to stereo, avoid allocating some memory. Index: sdl_sound.c =================================================================== RCS file: /cvsroot/xblast/xblast/sdl_sound.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- sdl_sound.c 9 Feb 2006 21:21:25 -0000 1.5 +++ sdl_sound.c 28 Mar 2006 11:54:39 -0000 1.6 @@ -36,15 +36,14 @@ #define SND_ACK_OK 0 #define SND_ACK_ERROR 1 -typedef unsigned char u8; typedef short s16; static struct _sound_name { int sound_id; /* the sound's id to refer to it */ const char *name; /* raw samples data file name */ - u8 *samples; /* pointer to samples memory */ - long length; /* length in samples of the sound */ + uint8_t *samples; /* pointer to samples memory */ + int length; /* length in samples of the sound */ int repeat; /* repeat flag to play sound endlessly */ int mono; /* mono flag indicating mono sounds */ } sound_name[] = { @@ -191,44 +190,32 @@ static XBBool soundInitialized = XBFalse; -// FIXME: should be replaced: -#define XBLAST_SOUND_SERVER "xbsndsrv" - -static char *monoArgs[] = { - XBLAST_SOUND_SERVER, - "-mono", - NULL, -}; - -static char *stereoArgs[] = { - XBLAST_SOUND_SERVER, - NULL, -}; - /* * Open Audio */ XBBool SND_Init (const CFGSoundSetup * setup) { - char **serverArgs = NULL; + int i; assert (NULL != setup); + /* mode selection */ switch (setup->mode) { - /* wave sound via xbsndsrv */ + case XBSM_Waveout: - serverArgs = setup->stereo ? stereoArgs : monoArgs; isActive = XBTrue; break; - /* out via X11-bell */ + case XBSM_Beep: isActive = XBTrue; return XBTrue; - /* no sound at all */ + case XBSM_None: + /* no sound at all */ isActive = XBFalse; return XBTrue; + default: return XBFalse; } @@ -242,10 +229,9 @@ return XBFalse; } - // reset sound stuff - int i; + /* reset sound stuff */ for (i = 0; i < SND_MAX; i++) { - sound_chunk[i] = 0; + sound_chunk[i] = NULL; sound_channel[i] = -1; } @@ -263,7 +249,6 @@ { if (soundInitialized) { if (id == STOP_ALL_SOUNDS) { - fprintf (stderr, "stop all sounds\n"); Mix_HaltChannel (-1); } else // stop specific sound @@ -342,28 +327,27 @@ if (path_list[i] != NULL) { sprintf (fname, "%s/%s/%s", path_list[i], "sounds", sound_name[id].name); if ((f = open (fname, O_RDONLY)) >= 0) { - long sound_size; - long new_size, j; - u8 *sb, *sb1; + int sound_size; + uint8_t *sb, *sb1; struct stat snd_stat; #ifdef DEBUG fprintf (stderr, "Opened file \"%s\".\n", fname); #endif (void)fstat (f, &snd_stat); - sound_size = snd_stat.st_size / sizeof (u8); + sound_size = snd_stat.st_size / sizeof (uint8_t); if (sound_name[id].samples != NULL) { free (sound_name[id].samples); sound_name[id].samples = NULL; sound_name[id].length = 0; } - if ((sb = (u8 *) malloc (sound_size * sizeof (u8))) == NULL) { + if ((sb = malloc (sound_size * sizeof (uint8_t))) == NULL) { close (f); return (-1); } else { - read (f, sb, sound_size * sizeof (u8)); + read (f, sb, sound_size * sizeof (uint8_t)); close (f); #if defined(SERVER_STATISTICS) total_loaded++; @@ -372,27 +356,19 @@ same problem as the 2 channels issue */ if (mono_mode != XBTrue && sound_name[id].mono == XBTrue) { - new_size = sound_size * 2; - if ((sb1 = (u8 *) malloc (new_size * sizeof (u8))) == NULL) { + if ((sb1 = malloc (2 * sound_size * sizeof (uint8_t))) == NULL) { free (sb); return (-1); } - memcpy (sb1, sb, sound_size * sizeof (u8)); - for (j = 0, i = 0; i < sound_size; i++, j += 2) { - sb1[j] = (u8) sb[i]; - sb1[j + 1] = (u8) sb[i]; + for (i = 0; i < sound_size; i++) { + sb1[2*i] = sb1[2*i + 1] = sb[i]; } /* we free sb afterwards so we need to pass sb1 to sb */ free (sb); - sound_size = new_size; - if ((sb = (u8 *) malloc (sound_size * sizeof (u8))) == NULL) { - return (-1); - } - - memcpy (sb, sb1, sound_size); - free (sb1); + sb = sb1; + sound_size *= 2; } sound_name[id].samples = sb; sound_name[id].length = sound_size; @@ -402,7 +378,7 @@ if (mono_mode == XBTrue && sound_name[id].mono == XBFalse) { int i; - u8 *m, *s; + uint8_t *m, *s; s16 sum; m = s = sound_name[id].samples; |