#ifndef DECODER_H #define DECODER_H #include #include 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; }; 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); const struct decoder_plugin *decoder_get(const gchar *name); const struct decoder_plugin *decoder_find(const gchar *filename); #endif