aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/input_plugin.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/input_plugin.h b/src/input_plugin.h
new file mode 100644
index 000000000..8a7efeb7d
--- /dev/null
+++ b/src/input_plugin.h
@@ -0,0 +1,48 @@
+#ifndef INPUT_PLUGIN_H
+#define INPUT_PLUGIN_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();
+
+#endif