]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_ogg.c
Added "SDL/include" to the include paths and "SDL/lib" to the library paths (allow...
[xonotic/darkplaces.git] / snd_ogg.c
index a95ce2319e3f3a3c59ed439f6b88d925cfb1b29c..e1f8d93dea603d52ce8a15cb3aec7c4945e9278d 100644 (file)
--- a/snd_ogg.c
+++ b/snd_ogg.c
@@ -221,7 +221,7 @@ static dllhandle_t vf_dll = NULL;
 
 typedef struct
 {
-       qbyte *buffer;
+       unsigned char *buffer;
        ogg_int64_t ind, buffsize;
 } ov_decode_t;
 
@@ -297,8 +297,9 @@ qboolean OGG_OpenLibrary (void)
        const char* dllnames_vo [] =
        {
 #if defined(WIN64)
-               "vorbis64.dll",
+               "libvorbis64.dll",
 #elif defined(WIN32)
+               "libvorbis.dll",
                "vorbis.dll",
 #elif defined(MACOSX)
                "libvorbis.dylib",
@@ -311,8 +312,9 @@ qboolean OGG_OpenLibrary (void)
        const char* dllnames_vf [] =
        {
 #if defined(WIN64)
-               "vorbisfile64.dll",
+               "libvorbisfile64.dll",
 #elif defined(WIN32)
+               "libvorbisfile.dll",
                "vorbisfile.dll",
 #elif defined(MACOSX)
                "libvorbisfile.dylib",
@@ -374,13 +376,13 @@ void OGG_CloseLibrary (void)
 
 // We work with 1 sec sequences, so this buffer must be able to contain
 // 1 sec of sound of the highest quality (48 KHz, 16 bit samples, stereo)
-static qbyte resampling_buffer [48000 * 2 * 2];
+static unsigned char resampling_buffer [48000 * 2 * 2];
 
 
 // Per-sfx data structure
 typedef struct
 {
-       qbyte                   *file;
+       unsigned char                   *file;
        size_t                  filesize;
        snd_format_t    format;
 } ogg_stream_persfx_t;
@@ -413,9 +415,9 @@ static const sfxbuffer_t* OGG_FetchSound (channel_t* ch, unsigned int start, uns
        unsigned int factor;
        size_t buff_len;
 
-       per_ch = ch->fetcher_data;
+       per_ch = (ogg_stream_perchannel_t *)ch->fetcher_data;
        sfx = ch->sfx;
-       per_sfx = sfx->fetcher_data;
+       per_sfx = (ogg_stream_persfx_t *)sfx->fetcher_data;
        format = &sfx->format;
        buff_len = STREAM_BUFFER_SIZE(format);
 
@@ -426,9 +428,9 @@ static const sfxbuffer_t* OGG_FetchSound (channel_t* ch, unsigned int start, uns
                ogg_stream_persfx_t* per_sfx;
 
                memsize = sizeof (*per_ch) - sizeof (per_ch->sb.data) + buff_len;
-               per_ch = Mem_Alloc (snd_mempool, memsize);
+               per_ch = (ogg_stream_perchannel_t *)Mem_Alloc (snd_mempool, memsize);
                sfx->memsize += memsize;
-               per_sfx = sfx->fetcher_data;
+               per_sfx = (ogg_stream_persfx_t *)sfx->fetcher_data;
 
                // Open it with the VorbisFile API
                per_ch->ov_decode.buffer = per_sfx->file;
@@ -498,7 +500,7 @@ static const sfxbuffer_t* OGG_FetchSound (channel_t* ch, unsigned int start, uns
        bigendian = 0;
 #endif
        done = 0;
-       while ((ret = qov_read (&per_ch->vf, &resampling_buffer[done], (int)(newlength - done), bigendian, 2, 1, &per_ch->bs)) > 0)
+       while ((ret = qov_read (&per_ch->vf, (char *)&resampling_buffer[done], (int)(newlength - done), bigendian, 2, 1, &per_ch->bs)) > 0)
                done += ret;
 
        // Resample in the sfxbuffer
@@ -518,7 +520,7 @@ static void OGG_FetchEnd (channel_t* ch)
 {
        ogg_stream_perchannel_t* per_ch;
 
-       per_ch = ch->fetcher_data;
+       per_ch = (ogg_stream_perchannel_t *)ch->fetcher_data;
        if (per_ch != NULL)
        {
                size_t buff_len;
@@ -529,7 +531,7 @@ static void OGG_FetchEnd (channel_t* ch)
 
                Mem_Free (per_ch);
                ch->fetcher_data = NULL;
-               
+
                format = &ch->sfx->format;
                buff_len = STREAM_BUFFER_SIZE(format);
                ch->sfx->memsize -= sizeof (*per_ch) - sizeof (per_ch->sb.data) + buff_len;
@@ -544,7 +546,7 @@ OGG_FreeSfx
 */
 static void OGG_FreeSfx (sfx_t* sfx)
 {
-       ogg_stream_persfx_t* per_sfx = sfx->fetcher_data;
+       ogg_stream_persfx_t* per_sfx = (ogg_stream_persfx_t *)sfx->fetcher_data;
 
        // Free the Ogg Vorbis file
        Mem_Free(per_sfx->file);
@@ -570,7 +572,8 @@ Load an Ogg Vorbis file into memory
 */
 qboolean OGG_LoadVorbisFile (const char *filename, sfx_t *s)
 {
-       qbyte *data;
+       unsigned char *data;
+       fs_offset_t filesize;
        ov_decode_t ov_decode;
        OggVorbis_File vf;
        vorbis_info *vi;
@@ -584,7 +587,7 @@ qboolean OGG_LoadVorbisFile (const char *filename, sfx_t *s)
                return true;
 
        // Load the file
-       data = FS_LoadFile (filename, snd_mempool, false);
+       data = FS_LoadFile (filename, snd_mempool, false, &filesize);
        if (data == NULL)
                return false;
 
@@ -593,7 +596,7 @@ qboolean OGG_LoadVorbisFile (const char *filename, sfx_t *s)
        // Open it with the VorbisFile API
        ov_decode.buffer = data;
        ov_decode.ind = 0;
-       ov_decode.buffsize = fs_filesize;
+       ov_decode.buffsize = filesize;
        if (qov_open_callbacks (&ov_decode, &vf, NULL, 0, callbacks) < 0)
        {
                Con_Printf ("error while opening Ogg Vorbis file \"%s\"\n", filename);
@@ -616,16 +619,16 @@ qboolean OGG_LoadVorbisFile (const char *filename, sfx_t *s)
 
        // Decide if we go for a stream or a simple PCM cache
        buff_len = ceil (STREAM_BUFFER_DURATION * (shm->format.speed * 2 * vi->channels));
-       if (snd_streaming.integer && len > (ogg_int64_t)fs_filesize + 3 * buff_len)
+       if (snd_streaming.integer && len > (ogg_int64_t)filesize + 3 * buff_len)
        {
                ogg_stream_persfx_t* per_sfx;
 
                Con_DPrintf ("\"%s\" will be streamed\n", filename);
-               per_sfx = Mem_Alloc (snd_mempool, sizeof (*per_sfx));
+               per_sfx = (ogg_stream_persfx_t *)Mem_Alloc (snd_mempool, sizeof (*per_sfx));
                s->memsize += sizeof (*per_sfx);
                per_sfx->file = data;
-               per_sfx->filesize = fs_filesize;
-               s->memsize += fs_filesize;
+               per_sfx->filesize = filesize;
+               s->memsize += filesize;
 
                per_sfx->format.speed = vi->rate;
                per_sfx->format.width = 2;  // We always work with 16 bits samples
@@ -652,7 +655,7 @@ qboolean OGG_LoadVorbisFile (const char *filename, sfx_t *s)
                Con_DPrintf ("\"%s\" will be cached\n", filename);
 
                // Decode it
-               buff = Mem_Alloc (snd_mempool, (int)len);
+               buff = (char *)Mem_Alloc (snd_mempool, (int)len);
                done = 0;
                bs = 0;
 #if BYTE_ORDER == LITTLE_ENDIAN
@@ -668,7 +671,7 @@ qboolean OGG_LoadVorbisFile (const char *filename, sfx_t *s)
 
                // Resample it
                memsize = (size_t)len + sizeof (*sb) - sizeof (sb->data);
-               sb = Mem_Alloc (snd_mempool, memsize);
+               sb = (sfxbuffer_t *)Mem_Alloc (snd_mempool, memsize);
                s->memsize += memsize;
                s->fetcher_data = sb;
                s->fetcher = &wav_fetcher;
@@ -678,7 +681,7 @@ qboolean OGG_LoadVorbisFile (const char *filename, sfx_t *s)
                s->loopstart = -1;
                s->flags &= ~SFXFLAG_STREAMED;
 
-               sb->length = (unsigned int)ResampleSfx (buff, (size_t)done / (vi->channels * 2), &s->format, sb->data, s->name);
+               sb->length = (unsigned int)ResampleSfx ((unsigned char *)buff, (size_t)done / (vi->channels * 2), &s->format, sb->data, s->name);
                s->format.speed = shm->format.speed;
                s->total_length = sb->length;
                sb->offset = 0;