#include "snd_wav.h"
-typedef struct
+typedef struct wavinfo_s
{
int rate;
int width;
} wavinfo_t;
-static qbyte *data_p;
-static qbyte *iff_end;
-static qbyte *last_chunk;
-static qbyte *iff_data;
+static unsigned char *data_p;
+static unsigned char *iff_end;
+static unsigned char *last_chunk;
+static unsigned char *iff_data;
static int iff_chunk_len;
}
data_p -= 8;
last_chunk = data_p + 8 + ( (iff_chunk_len + 1) & ~1 );
- if (!strncmp(data_p, name, 4))
+ if (!strncmp((const char *)data_p, name, 4))
return;
}
}
GetWavinfo
============
*/
-static wavinfo_t GetWavinfo (char *name, qbyte *wav, int wavlength)
+static wavinfo_t GetWavinfo (char *name, unsigned char *wav, int wavlength)
{
wavinfo_t info;
int i;
// find "RIFF" chunk
FindChunk("RIFF");
- if (!(data_p && !strncmp(data_p+8, "WAVE", 4)))
+ if (!(data_p && !strncmp((const char *)data_p+8, "WAVE", 4)))
{
Con_Print("Missing RIFF/WAVE chunks\n");
return info;
FindNextChunk ("LIST");
if (data_p)
{
- if (!strncmp (data_p + 28, "mark", 4))
+ if (!strncmp ((const char *)data_p + 28, "mark", 4))
{ // this is not a proper parse, but it works with cooledit...
data_p += 24;
i = GetLittleLong (); // samples in loop
{
if (samples < info.samples)
{
- Con_Printf ("Sound %s has a bad loop length", name);
+ Con_Printf ("Sound %s has a bad loop length\n", name);
info.samples = samples;
}
}
*/
static const sfxbuffer_t* WAV_FetchSound (channel_t* ch, unsigned int start, unsigned int nbsamples)
{
- return ch->sfx->fetcher_data;
+ return (sfxbuffer_t *)ch->sfx->fetcher_data;
}
/*
*/
static void WAV_FreeSfx (sfx_t* sfx)
{
- sfxbuffer_t* sb = sfx->fetcher_data;
+ sfxbuffer_t* sb = (sfxbuffer_t *)sfx->fetcher_data;
// Free the sound buffer
sfx->memsize -= (sb->length * sfx->format.channels * sfx->format.width) + sizeof (*sb) - sizeof (sb->data);
*/
qboolean S_LoadWavFile (const char *filename, sfx_t *s)
{
- qbyte *data;
+ fs_offset_t filesize;
+ unsigned char *data;
wavinfo_t info;
int len;
size_t memsize;
return true;
// Load the file
- data = FS_LoadFile(filename, snd_mempool, false);
+ data = FS_LoadFile(filename, snd_mempool, false, &filesize);
if (!data)
return false;
Con_DPrintf ("Loading WAV file \"%s\"\n", filename);
- info = GetWavinfo (s->name, data, (int)fs_filesize);
+ info = GetWavinfo (s->name, data, (int)filesize);
// Stereo sounds are allowed (intended for music)
if (info.channels < 1 || info.channels > 2)
{
len = len * info.width * info.channels;
memsize = len + sizeof (*sb) - sizeof (sb->data);
- sb = Mem_Alloc (snd_mempool, memsize);
+ sb = (sfxbuffer_t *)Mem_Alloc (snd_mempool, memsize);
if (sb == NULL)
{
Con_Printf("failed to allocate memory for sound \"%s\"\n", s->name);
if (info.loopstart < 0)
s->loopstart = -1;
else
- s->loopstart = (double)info.loopstart * (double)shm->format.speed / (double)s->format.speed;
+ s->loopstart = (int)((double)info.loopstart * (double)shm->format.speed / (double)s->format.speed);
s->flags &= ~SFXFLAG_STREAMED;
#if BYTE_ORDER != LITTLE_ENDIAN