X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=filter.h;h=39cec9ba03f4cbee46497b43fda7bdebc7b63dbb;hp=2d1c150afdda6add9bb498c625889fdcbdda5ea3;hb=d9e608504d9d0e71380907559546e211c4f0ce55;hpb=b779fcfc62bca2e728348c70bab3c50df3fe63b8 diff --git a/filter.h b/filter.h index 2d1c150a..39cec9ba 100644 --- a/filter.h +++ b/filter.h @@ -4,8 +4,10 @@ * Licensed under the GPL v2. For licencing details see COPYING. */ -/** \file filter.h Filter-related structures and exported symbols from filter_chain.c. */ +/** \file filter.h Filter-related structures and exported symbols from filter_common.c. */ +/** The list of supported filters. */ +enum filter_enum {FILTER_ENUM}; /** * Describes one running instance of a filter. @@ -141,7 +143,7 @@ struct filter_callback { * Note: As several instances of the same filter may be running at the same * time, all these filter functions must be reentrant; no static non-constant * variables may be used. - * \sa mp3dec.c, oggdec.c, wav.c, compress.c, filter_node + * \sa mp3dec_filter.c, oggdec_filter.c, wav_filter.c, compress_filter.c, filter_node */ struct filter { /** The name of the filter. */ @@ -220,55 +222,9 @@ static inline void write_int16_host_endian(char *buf, int val) #endif } +DECLARE_FILTER_INITS -/** \cond */ -extern struct filter filters[]; -#define DECLARE_EXTERN_FILTER_INIT(name) \ - extern void name ## _init(struct filter *f) - -#define FILTER_INIT(filter) { \ - .name = #filter, \ - .init = filter ## _init, \ - .parse_config = NULL, \ - .print_help = NULL \ -}, - -/* filters that are always present */ -DECLARE_EXTERN_FILTER_INIT(wav); -DECLARE_EXTERN_FILTER_INIT(compress); -DECLARE_EXTERN_FILTER_INIT(amp); - -/* next the optional filters */ -#ifdef HAVE_MAD -DECLARE_EXTERN_FILTER_INIT(mp3dec); -#define MP3DEC_FILTER FILTER_INIT(mp3dec) -#else -#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) -#else -#define OGGDEC_FILTER -#endif -/** \endcond */ - -/** define an array of all available filters */ -#define DEFINE_FILTER_ARRAY(filters) struct filter filters[] = { \ - FILTER_INIT(wav) \ - FILTER_INIT(compress) \ - FILTER_INIT(amp) \ - MP3DEC_FILTER \ - AACDEC_FILTER \ - OGGDEC_FILTER \ - { .name = NULL } }; - +#define FOR_EACH_SUPPORTED_FILTER(j) for (j = 0; j < NUM_SUPPORTED_FILTERS; j++) +/** The filter array, one structure for each supported filter. */ +extern struct filter filters[NUM_SUPPORTED_FILTERS];