#ifndef ENCODER_H #define ENCODER_H #include #include struct encoder_plugin { const gchar *name; gboolean (*init)(gpointer *data); gssize (*encode)(gpointer data, GInputStream *input, GOutputStream *output); void (*close)(gpointer data); }; struct encoder { const struct encoder_plugin *encoder; gpointer data; }; gboolean encoder_init(struct encoder *encoder); gssize encoder_encode(struct encoder *encoder, GInputStream *input, GOutputStream *output); void encoder_close(struct encoder *encoder); const struct encoder_plugin *encoder_get(const gchar *name); #endif