X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=filter.h;h=45ade8d3697f86001c900ea3c7fe6541a44d48f1;hp=2fb9ad175fbeecaf816c4707e79d2fe96091461d;hb=98d0c34a0377546a4ed0062ad32e8161d611d6e6;hpb=0f8ed21f8532a276d4f24b01638fd303fd57f0ed diff --git a/filter.h b/filter.h index 2fb9ad17..45ade8d3 100644 --- a/filter.h +++ b/filter.h @@ -22,71 +22,67 @@ * describes one running instance of a chain of filters * */ -struct filter_chain_info { -/** - * - * - * the number of channels of the current stream - * - * Set by the decoding filter - */ - unsigned int channels; -/** - * - * - * current samplerate in Hz - * - * Set by the decoding filter - */ - unsigned int samplerate; -/** - * - * - * the list containing all filter nodes in this filter chain - */ - struct list_head filters; -/** - * - * - * the input buffer of the filter chain - * - * This is set to point to the output buffer of the receiving application (the - * buffer used to read from stdin for para_filter; the output buffer of the - * current receiver for para_audiod) - */ - char *inbuf; -/** - * - * - * the output buffer of the filter chain - * - * Points to the output buffer of the last filter in the filter chain -**/ - char *outbuf; -/** - * - * - * pointer to variable containing the number of bytes loaded in the input buffer - */ - size_t *in_loaded; -/** - * - * - * pointer to variable containing the number of bytes loaded in the output buffer - */ - size_t *out_loaded; -/** - * - * - * non-zero if end of file was encountered - */ - int *eof; -/** - * - * - * non-zero if an error occured - */ - int error; +struct filter_chain { + /** + * + * + * the number of channels of the current stream + * + * Set by the decoding filter + */ + unsigned int channels; + /** + * + * + * current samplerate in Hz + * + * Set by the decoding filter + */ + unsigned int samplerate; + /** + * + * + * the list containing all filter nodes in this filter chain + */ + struct list_head filters; + /** + * + * + * the input buffer of the filter chain + * + * This is set to point to the output buffer of the receiving application (the + * buffer used to read from stdin for para_filter; the output buffer of the + * current receiver for para_audiod) + */ + char *inbuf; + /** + * + * + * the output buffer of the filter chain + * + * Points to the output buffer of the last filter in the filter chain + **/ + char *outbuf; + /** + * + * + * pointer to variable containing the number of bytes loaded in the input buffer + */ + size_t *in_loaded; + /** + * + * + * pointer to variable containing the number of bytes loaded in the output buffer + */ + size_t *out_loaded; + /** non-zero if this filter wont' produce any more output */ + int eof; + /** pointer to the eof flag of the receiving application */ + int *input_eof; + /** pointer to the eof flag of the writing application */ + int *output_eof; + /** the task associated with the filter chain */ + struct task task; }; /** @@ -104,7 +100,7 @@ struct filter_node { * * the filter chain this filter node belongs to */ - struct filter_chain_info *fci; + struct filter_chain *fc; /** * * @@ -212,11 +208,12 @@ struct filter_callback { }; -void close_filters(struct filter_chain_info *fci); -int filter_io(struct filter_chain_info *fci); +void close_filters(struct filter_chain *fc); +int filter_io(struct filter_chain *fc); void filter_init(struct filter *all_filters); int check_filter_arg(char *filter_arg, void **conf); int del_filter_callback(struct filter_callback *fcb); +void filter_pre_select(struct sched *s, struct task *t); /** * the structure associated with a paraslash filter