X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=filter.h;h=0808059dac3f7450aaa73c27d6afd4d382c62e94;hp=befcd3381abd539ec743bf3e28b5198d7b093b50;hb=7e37a7cf49df279b9ab467fa4f62dd376c791a26;hpb=e90440367f744a7723b201a95888e66f070ffa92 diff --git a/filter.h b/filter.h index befcd338..0808059d 100644 --- a/filter.h +++ b/filter.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2010 Andre Noll + * Copyright (C) 2005-2011 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -81,19 +81,38 @@ struct filter { * argv. On failure, a negative paraslash error code must be returned. */ int (*parse_config)(int argc, char **argv, void **config); + /** + * Deallocate the memory for the configuration. + * + * This is called to free whatever ->parse_config() has allocated. + */ void (*free_config)(void *conf); /** The help texts for this filter. */ struct ggo_help help; + /** + * Set scheduler timeout and add file descriptors to fd sets. + * + * This function is used to control the timeout value for select. It + * only allowed to decrease the current value. The second purpose of + * this function is to set file descriptors to be watched by the + * subsequent select call to the two fd sets. + */ void (*pre_select)(struct sched *s, struct task *t); /** * Convert (filter) the given data. * - * Pointer to the converting function of the filter. It should convert as - * input data as possible. On errors, the post_select function is supposed - * to set t->error to a (negative) error code. + * Pointer to the converting function of the filter. On errors, the + * post_select function is supposed to set t->error to a (negative) + * error code. */ void (*post_select)(struct sched *s, struct task *t); + /** + * Answer a buffer tree query. + * + * This optional function pointer is used for inter node communications + * of the buffer tree nodes. See \ref btr_command_handler for details. + */ btr_command_handler execute; }; @@ -101,6 +120,8 @@ void filter_init(void); int check_filter_arg(char *filter_arg, void **conf); void print_filter_helps(int detailed); void generic_filter_pre_select(struct sched *s, struct task *t); +int decoder_execute(const char *cmd, unsigned sample_rate, unsigned channels, + char **result); static inline void write_int16_host_endian(char *buf, int val) {