aboutsummaryrefslogtreecommitdiffstats
path: root/src/inputPlugin.h
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-05-30 19:13:57 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-05-30 19:13:57 +0000
commit8e137ddf8184f6eb8e5655b9323e47b2a8f2eef9 (patch)
tree323f69cab6f7fefa24497a69b3afa1cd05590cd7 /src/inputPlugin.h
parentcfc78c7213c7eab60248fd625b63791fc2909d6f (diff)
downloadmpd-8e137ddf8184f6eb8e5655b9323e47b2a8f2eef9.tar.gz
mpd-8e137ddf8184f6eb8e5655b9323e47b2a8f2eef9.tar.xz
mpd-8e137ddf8184f6eb8e5655b9323e47b2a8f2eef9.zip
start to implement inputPlugin interface
git-svn-id: https://svn.musicpd.org/mpd/trunk@1242 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/inputPlugin.h')
-rw-r--r--src/inputPlugin.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/inputPlugin.h b/src/inputPlugin.h
new file mode 100644
index 000000000..a84e54944
--- /dev/null
+++ b/src/inputPlugin.h
@@ -0,0 +1,61 @@
+#ifndef INPUT_PLUGIN_H
+#define INPUT_PLUGIN_H
+
+#include "inputStream.h"
+#include "decode.h"
+#include "outputBuffer.h"
+#include "tag.h"
+
+#define INPUT_PLUGIN_STREAM_FILE 0x01
+#define INPUT_PLUGIN_STREAM_URL 0x02
+
+#define INPUT_PLUGIN_NAME_LENGTH 64
+
+typedef int (* InputPlugin_streamDecodeFunc) (OutputBuffer *, DecoderControl *,
+ InputStream *);
+
+typedef int (* InputPlugin_fileDecodeFunc) (OutputBuffer *, DecoderControl *);
+
+typedef MpdTag * (* InputPlugin_tagDupFunc) (char * utf8file);
+
+typedef struct _InputPlugin {
+ char name[INPUT_PLUGIN_NAME_LENGTH];
+ InputPlugin_streamDecodeFunc streamDecodeFunc;
+ InputPlugin_fileDecodeFunc fileDecodeFunc;
+ InputPlugin_tagDupFunc tagDupFunc;
+ unsigned char streamTypes;
+ char ** suffixes;
+ char ** mimeTypes;
+} InputPlugin;
+
+/* interface for adding and removing plugins */
+
+InputPlugin * newInputPlugin();
+
+void addSuffixToInputPlugin(InputPlugin * inPlugin, char * suffix);
+
+void addMimeTypeToInputPlugin(InputPlugin * inPlugin, char * suffix);
+
+void freeInputPlugin(InputPlugin * inputPlugin);
+
+/* interface for using plugins */
+
+InputPlugin * getInputPluginFromSuffix(char * suffix);
+
+InputPlugin * getInputPluginFromMimeTypes(char * mimeType);
+
+InputPlugin * getInputPluginFromName(char * name);
+
+/* this is needed b/c shoutcast and such don't indicate the proper mime type
+ and don't have a suffix in the url! */
+InputPlugin * getDefaultInputPlugin();
+
+/* this is where we "load" all the "plugins" ;-) */
+void initInputPlugins();
+
+/* this is where we "unload" all the "plugins" */
+void finishInputPlugins();
+
+void unloadInputPlugin(InputPlugin * inputPlugin);
+
+#endif