diff options
author | Eric Wong <normalperson@yhbt.net> | 2006-03-16 06:52:46 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2006-03-16 06:52:46 +0000 |
commit | 69635022133488e6b19569fb59b16c4658a244eb (patch) | |
tree | a7149e6a5a82017ae3821c801433c8794f796aec /src/inputPlugin.h | |
parent | d7e846bdc2d848525ebd4251c4c5d9c5fe0d2705 (diff) | |
download | mpd-69635022133488e6b19569fb59b16c4658a244eb.tar.gz mpd-69635022133488e6b19569fb59b16c4658a244eb.tar.xz mpd-69635022133488e6b19569fb59b16c4658a244eb.zip |
merge with mpd/trunk up to r3925
git-svn-id: https://svn.musicpd.org/mpd/trunk@3926 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/inputPlugin.h')
-rw-r--r-- | src/inputPlugin.h | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/inputPlugin.h b/src/inputPlugin.h index dc2e2219e..78268a7f3 100644 --- a/src/inputPlugin.h +++ b/src/inputPlugin.h @@ -25,30 +25,53 @@ #include "outputBuffer.h" #include "tag.h" +/* valid values for streamTypes in the InputPlugin struct: */ #define INPUT_PLUGIN_STREAM_FILE 0x01 #define INPUT_PLUGIN_STREAM_URL 0x02 +/* optional, set this to NULL if the InputPlugin doesn't have/need one + * this must return < 0 if there is an error and >= 0 otherwise */ typedef int (* InputPlugin_initFunc) (); +/* optional, set this to NULL if the InputPlugin doesn't have/need one */ typedef void (* InputPlugin_finishFunc) (); +/* boolean return value, returns 1 if the InputStream is decodable by + * the InputPlugin, 0 if not */ +typedef unsigned int (* InputPlugin_tryDecodeFunc) (InputStream *); + +/* this will be used to decode InputStreams, and is recommended for files + * and networked (HTTP) connections. + * + * returns -1 on error, 0 on success */ typedef int (* InputPlugin_streamDecodeFunc) (OutputBuffer *, DecoderControl *, InputStream *); +/* use this if and only if your InputPlugin can only be passed a filename or + * handle as input, and will not allow callbacks to be set (like Ogg-Vorbis + * and FLAC libraries allow) + * + * returns -1 on error, 0 on success */ typedef int (* InputPlugin_fileDecodeFunc) (OutputBuffer *, DecoderControl *, char * path); -/* file should be the full path! */ +/* file should be the full path! Returns NULL if a tag cannot be found + * or read */ typedef MpdTag * (* InputPlugin_tagDupFunc) (char * file); typedef struct _InputPlugin { char * name; InputPlugin_initFunc initFunc; InputPlugin_finishFunc finishFunc; + InputPlugin_tryDecodeFunc tryDecodeFunc; InputPlugin_streamDecodeFunc streamDecodeFunc; InputPlugin_fileDecodeFunc fileDecodeFunc; InputPlugin_tagDupFunc tagDupFunc; + + /* one or more of the INPUT_PLUGIN_STREAM_* values OR'd together */ unsigned char streamTypes; + + /* last element in these arrays must always be a NULL: */ char ** suffixes; char ** mimeTypes; } InputPlugin; @@ -59,9 +82,9 @@ void unloadInputPlugin(InputPlugin * inputPlugin); /* interface for using plugins */ -InputPlugin * getInputPluginFromSuffix(char * suffix); +InputPlugin * getInputPluginFromSuffix(char * suffix, unsigned int next); -InputPlugin * getInputPluginFromMimeType(char * mimeType); +InputPlugin * getInputPluginFromMimeType(char * mimeType, unsigned int next); InputPlugin * getInputPluginFromName(char * name); |