00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00026 #ifndef MPD_FILTER_PLUGIN_H
00027 #define MPD_FILTER_PLUGIN_H
00028
00029 #include <glib.h>
00030
00031 #include <stdbool.h>
00032 #include <stddef.h>
00033
00034 struct config_param;
00035 struct filter;
00036
00037 struct filter_plugin {
00038 const char *name;
00039
00043 struct filter *(*init)(const struct config_param *param,
00044 GError **error_r);
00045
00049 void (*finish)(struct filter *filter);
00050
00058 const struct audio_format *
00059 (*open)(struct filter *filter,
00060 struct audio_format *audio_format,
00061 GError **error_r);
00062
00066 void (*close)(struct filter *filter);
00067
00071 const void *(*filter)(struct filter *filter,
00072 const void *src, size_t src_size,
00073 size_t *dest_buffer_r,
00074 GError **error_r);
00075 };
00076
00086 struct filter *
00087 filter_new(const struct filter_plugin *plugin,
00088 const struct config_param *param, GError **error_r);
00089
00099 struct filter *
00100 filter_configured_new(const struct config_param *param, GError **error_r);
00101
00108 void
00109 filter_free(struct filter *filter);
00110
00121 const struct audio_format *
00122 filter_open(struct filter *filter, struct audio_format *audio_format,
00123 GError **error_r);
00124
00130 void
00131 filter_close(struct filter *filter);
00132
00145 const void *
00146 filter_filter(struct filter *filter, const void *src, size_t src_size,
00147 size_t *dest_size_r,
00148 GError **error_r);
00149
00150 #endif