diff --git a/engine/common/soundlib/libmpg/libmpg.c b/engine/common/soundlib/libmpg/libmpg.c index 3397dc0d..05127440 100644 --- a/engine/common/soundlib/libmpg/libmpg.c +++ b/engine/common/soundlib/libmpg/libmpg.c @@ -87,7 +87,7 @@ int open_mpeg_stream( void *mpg, void *file, pfread f_read, pfseek f_seek, wavin if( !mh || !sc ) return 0; - ret = mpg123_replace_reader_handle( mh, (void *)f_read, (void *)f_seek, NULL ); + ret = mpg123_replace_reader_handle( mh, f_read, f_seek, NULL ); if( ret != MPG123_OK ) return 0; diff --git a/engine/common/soundlib/libmpg/libmpg.h b/engine/common/soundlib/libmpg/libmpg.h index 34f6e23b..da12c1c7 100644 --- a/engine/common/soundlib/libmpg/libmpg.h +++ b/engine/common/soundlib/libmpg/libmpg.h @@ -34,9 +34,15 @@ typedef struct int playtime; // stream size in milliseconds } wavinfo_t; +#ifdef _MSC_VER // a1ba: MSVC6 don't have ssize_t +typedef long mpg_ssize_t; +#else +typedef ssize_t mpg_ssize_t; +#endif + // custom stdio -typedef long (*pfread)( void *handle, void *buf, size_t count ); -typedef long (*pfseek)( void *handle, long offset, int whence ); +typedef mpg_ssize_t (*pfread)( void *handle, void *buf, size_t count ); +typedef fs_offset_t (*pfseek)( void *handle, fs_offset_t offset, int whence ); extern void *create_decoder( int *error ); extern int feed_mpeg_header( void *mpg, const byte *data, long bufsize, long streamsize, wavinfo_t *sc ); diff --git a/engine/common/soundlib/libmpg/mpg123.h b/engine/common/soundlib/libmpg/mpg123.h index 6db8b3f7..0f9a8857 100644 --- a/engine/common/soundlib/libmpg/mpg123.h +++ b/engine/common/soundlib/libmpg/mpg123.h @@ -32,6 +32,7 @@ typedef struct mpg123_handle_s mpg123_handle_t; #include #include "fmt123.h" #include STDINT_H +#include "xash3d_types.h" #ifndef FALSE #define FALSE 0 @@ -50,7 +51,7 @@ typedef unsigned char byte; typedef unsigned short word; typedef unsigned long ulong; typedef unsigned int uint; -typedef long mpg_off_t; +typedef fs_offset_t mpg_off_t; #ifdef _MSC_VER // a1ba: MSVC6 don't have ssize_t typedef long mpg_ssize_t; diff --git a/engine/common/soundlib/snd_mp3.c b/engine/common/soundlib/snd_mp3.c index b7ab1380..e1814c48 100644 --- a/engine/common/soundlib/snd_mp3.c +++ b/engine/common/soundlib/snd_mp3.c @@ -291,14 +291,14 @@ qboolean Sound_LoadMPG( const char *name, const byte *buffer, fs_offset_t filesi return true; } -/* -================= -FS_SeekEx -================= -*/ -static fs_offset_t FS_SeekEx( file_t *file, fs_offset_t offset, int whence ) +static fs_offset_t FS_SeekMpg( void *file, fs_offset_t offset, int whence ) { - return FS_Seek( file, offset, whence ) == -1 ? -1 : FS_Tell( file ); + return g_fsapi.Seek((file_t *)file, offset, whence ) == -1 ? -1 : g_fsapi.Tell((file_t *)file ); +} + +static mpg_ssize_t FS_ReadMpg( void *file, void *buf, size_t count ) +{ + return g_fsapi.Read((file_t *)file, buf, count ); } /* @@ -334,7 +334,7 @@ stream_t *Stream_OpenMPG( const char *filename ) if( ret ) Con_DPrintf( S_ERROR "%s\n", get_error( mpeg )); // trying to open stream and read header - if( !open_mpeg_stream( mpeg, file, (void*)FS_Read, (void*)FS_SeekEx, &sc )) + if( !open_mpeg_stream( mpeg, file, FS_ReadMpg, FS_SeekMpg, &sc )) { Con_DPrintf( S_ERROR "Stream_OpenMPG: failed to load (%s): %s\n", filename, get_error( mpeg )); close_decoder( mpeg );