# HG changeset patch # User giacomo # Date 1169232944 28800 # Node ID 1e5cb7a00cb0b12fcd7a0147dbd41482023452e8 # Parent c488d191b528006a53513515ec3facbc5bd06693 [svn] - added is_our_file_from_vfs function to sid, for both libsidplay v1 and v2 diff -r c488d191b528 -r 1e5cb7a00cb0 ChangeLog --- a/ChangeLog Fri Jan 19 09:56:06 2007 -0800 +++ b/ChangeLog Fri Jan 19 10:55:44 2007 -0800 @@ -1,3 +1,14 @@ +2007-01-19 17:56:06 +0000 Giacomo Lozito + revision [1008] + - modified the sid plugin to use vfs, for both libsidplay v1 and v2; still requires testing and some work in the is_our_file part + trunk/src/sid/xmms-sid.c | 1 + trunk/src/sid/xmms-sid.h | 1 + trunk/src/sid/xs_sidplay.h | 13 +++++- + trunk/src/sid/xs_sidplay1.cc | 88 ++++++++++++++++++++++++++++++++++++++----- + trunk/src/sid/xs_sidplay2.cc | 85 +++++++++++++++++++++++++++++++++++++---- + 5 files changed, 170 insertions(+), 18 deletions(-) + + 2007-01-19 12:46:00 +0000 Giacomo Lozito revision [1006] - updated amidi-plug to the new plugin API diff -r c488d191b528 -r 1e5cb7a00cb0 src/sid/xmms-sid.c --- a/src/sid/xmms-sid.c Fri Jan 19 09:56:06 2007 -0800 +++ b/src/sid/xmms-sid.c Fri Jan 19 10:55:44 2007 -0800 @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -62,7 +63,7 @@ t_xs_player xs_playerlist[] = { #ifdef HAVE_SIDPLAY1 {XS_ENG_SIDPLAY1, - xs_sidplay1_isourfile, + xs_sidplay1_isourfile, xs_sidplay1_isourfile_vfs, xs_sidplay1_init, xs_sidplay1_close, xs_sidplay1_initsong, xs_sidplay1_fillbuffer, xs_sidplay1_loadsid, xs_sidplay1_deletesid, @@ -71,7 +72,7 @@ #endif #ifdef HAVE_SIDPLAY2 {XS_ENG_SIDPLAY2, - xs_sidplay2_isourfile, + xs_sidplay2_isourfile, xs_sidplay2_isourfile_vfs, xs_sidplay2_init, xs_sidplay2_close, xs_sidplay2_initsong, xs_sidplay2_fillbuffer, xs_sidplay2_loadsid, xs_sidplay2_deletesid, @@ -273,6 +274,24 @@ /* + * Check whether the given file is handled by this plugin (VFS) + */ +gint xs_is_our_file_vfs(gchar * pcFilename, VFSFile * fp) +{ + assert(xs_status.sidPlayer); + + /* Check the filename */ + if (pcFilename == NULL) + return FALSE; + + if (xs_status.sidPlayer->plrIsOurFileVfs(pcFilename,fp)) + return TRUE; + + return FALSE; +} + + +/* * Main playing thread loop */ void *xs_playthread(void *argPointer) diff -r c488d191b528 -r 1e5cb7a00cb0 src/sid/xmms-sid.h --- a/src/sid/xmms-sid.h Fri Jan 19 09:56:06 2007 -0800 +++ b/src/sid/xmms-sid.h Fri Jan 19 10:55:44 2007 -0800 @@ -34,6 +34,7 @@ #endif #include +#include #ifdef __cplusplus extern "C" { @@ -132,6 +133,7 @@ typedef struct { gint plrIdent; gboolean (*plrIsOurFile)(gchar *); + gboolean (*plrIsOurFileVfs)(gchar *,VFSFile *); gboolean (*plrInit)(struct t_xs_status *); void (*plrClose)(struct t_xs_status *); gboolean (*plrInitSong)(struct t_xs_status *); @@ -173,6 +175,7 @@ void xs_reinit(void); void xs_close(void); gint xs_is_our_file(gchar *); +gint xs_is_our_file_vfs(gchar *,VFSFile *); void xs_play_file(gchar *); void xs_stop(void); void xs_pause(short); diff -r c488d191b528 -r 1e5cb7a00cb0 src/sid/xs_init.c --- a/src/sid/xs_init.c Fri Jan 19 09:56:06 2007 -0800 +++ b/src/sid/xs_init.c Fri Jan 19 10:55:44 2007 -0800 @@ -54,8 +54,8 @@ NULL, /* Tuple */ NULL, /* Tuple */ NULL, /* Buffer */ - NULL, /* VFS */ - sid_fmts, /* ext assist */ + xs_is_our_file_vfs, /* VFS */ + sid_fmts /* ext assist */ }; diff -r c488d191b528 -r 1e5cb7a00cb0 src/sid/xs_sidplay1.cc --- a/src/sid/xs_sidplay1.cc Fri Jan 19 09:56:06 2007 -0800 +++ b/src/sid/xs_sidplay1.cc Fri Jan 19 10:55:44 2007 -0800 @@ -64,7 +64,6 @@ return TRUE; else return FALSE; - return FALSE; } @@ -124,6 +123,14 @@ } +/* Check if we can play the given file (VFS) + */ +gboolean xs_sidplay1_isourfile_vfs(gchar * pcFilename, VFSFile * fp) +{ + return xs_sidplay1_detect_by_content( fp ); +} + + /* Initialize SIDPlay1 */ gboolean xs_sidplay1_init(t_xs_status * myStatus) diff -r c488d191b528 -r 1e5cb7a00cb0 src/sid/xs_sidplay1.h --- a/src/sid/xs_sidplay1.h Fri Jan 19 09:56:06 2007 -0800 +++ b/src/sid/xs_sidplay1.h Fri Jan 19 10:55:44 2007 -0800 @@ -11,6 +11,7 @@ #endif gboolean xs_sidplay1_isourfile(gchar *); +gboolean xs_sidplay1_isourfile_vfs(gchar *,VFSFile *); void xs_sidplay1_close(t_xs_status *); gboolean xs_sidplay1_init(t_xs_status *); gboolean xs_sidplay1_initsong(t_xs_status *); diff -r c488d191b528 -r 1e5cb7a00cb0 src/sid/xs_sidplay2.cc --- a/src/sid/xs_sidplay2.cc Fri Jan 19 09:56:06 2007 -0800 +++ b/src/sid/xs_sidplay2.cc Fri Jan 19 10:55:44 2007 -0800 @@ -65,11 +65,10 @@ if ( vfs_fread( magic_bytes , 1 , 4 , fp ) != 4 ) return FALSE; - if ( !strncmp( magic_bytes , "PSID" , 4 ) ) + if ( !strncmp( magic_bytes , "PSID" , 4 ) || !strncmp( magic_bytes , "RSID" , 4 ) ) return TRUE; else return FALSE; - return FALSE; } @@ -129,6 +128,13 @@ } +/* Check if we can play the given file (VFS) + */ +gboolean xs_sidplay2_isourfile_vfs(gchar * pcFilename, VFSFile * fp) +{ + return xs_sidplay2_detect_by_content( fp ); +} + /* Initialize SIDPlay2 */ diff -r c488d191b528 -r 1e5cb7a00cb0 src/sid/xs_sidplay2.h --- a/src/sid/xs_sidplay2.h Fri Jan 19 09:56:06 2007 -0800 +++ b/src/sid/xs_sidplay2.h Fri Jan 19 10:55:44 2007 -0800 @@ -8,6 +8,7 @@ #endif gboolean xs_sidplay2_isourfile(gchar *); +gboolean xs_sidplay2_isourfile_vfs(gchar *,VFSFile *); void xs_sidplay2_close(t_xs_status *); gboolean xs_sidplay2_init(t_xs_status *); gboolean xs_sidplay2_initsong(t_xs_status *);