summaryrefslogtreecommitdiff
path: root/decoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'decoder.h')
-rw-r--r--decoder.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/decoder.h b/decoder.h
new file mode 100644
index 0000000..0a29c64
--- /dev/null
+++ b/decoder.h
@@ -0,0 +1,30 @@
+#ifndef _DECODER_H_
+#define _DECODER_H_
+
+#include <glib.h>
+#include <gio/gio.h>
+
+struct decoder_plugin {
+ const gchar *name;
+ const gchar * const *extensions;
+
+ gboolean (*init)(gpointer *data);
+ gssize (*decode)(gpointer data, const guchar *inbuf, gsize inbuf_size,
+ guchar *outbuf, gsize outbuf_size);
+ void (*close)(gpointer data);
+};
+
+struct decoder {
+ const struct decoder_plugin *decoder;
+
+ gpointer data;
+};
+
+extern struct decoder_plugin *decoder_plugins;
+
+gboolean decoder_init(struct decoder *decoder);
+gssize decoder_decode(struct decoder *decoder, const guchar *inbuf,
+ gsize inbuf_size, guchar *outbuf, gsize outbuf_size);
+void decoder_close(struct decoder *decoder);
+
+#endif