X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=filter.h;h=45ade8d3697f86001c900ea3c7fe6541a44d48f1;hp=70f4f4feb9873a64ac1a2263373ee123e24a1840;hb=899a19c03fc05f6fd98687e3eaa86841a4633a10;hpb=2ed89c59f0efcd0a2763f47c7d3455663241e623 diff --git a/filter.h b/filter.h index 70f4f4fe..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 @@ -330,6 +327,13 @@ DECLARE_EXTERN_FILTER_INIT(mp3dec); #define MP3DEC_FILTER #endif +#ifdef HAVE_FAAD +DECLARE_EXTERN_FILTER_INIT(aacdec); +#define AACDEC_FILTER FILTER_INIT(aacdec) +#else +#define AACDEC_FILTER +#endif + #ifdef HAVE_OGGVORBIS DECLARE_EXTERN_FILTER_INIT(oggdec); #define OGGDEC_FILTER FILTER_INIT(oggdec) @@ -344,6 +348,7 @@ DECLARE_EXTERN_FILTER_INIT(oggdec); FILTER_INIT(wav) \ FILTER_INIT(compress) \ MP3DEC_FILTER \ + AACDEC_FILTER \ OGGDEC_FILTER \ { .name = NULL } }; /** \endcond */