X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=filter.h;h=09e45913aa1f116a68e85039a8059f93f13d6822;hp=a6b390719e72d0d9b1852915b4747f9cca4cfb5a;hb=847cf62ae6a5df96af143f21cdf9b36f4ffdff70;hpb=607ac63646d7c31aa1792dcf1d9a60e498654376;ds=sidebyside diff --git a/filter.h b/filter.h index a6b39071..09e45913 100644 --- a/filter.h +++ b/filter.h @@ -1,19 +1,7 @@ /* - * Copyright (C) 2005-2006 Andre Noll + * Copyright (C) 2005-2007 Andre Noll * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Licensed under the GPL v2. For licencing details see COPYING. */ /** \file filter.h filter-related structures and exported symbols from filter_chain.c */ @@ -75,18 +63,14 @@ struct filter_chain { * 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; + /** Non-zero if this filter wont' produce any more output. */ + int error; + /** Pointer to the error variable of the receiving application. */ + int *input_error; + /** Pointer to the eof flag of the writing application. */ + int *output_error; + /** the task associated with the filter chain */ + struct task task; }; /** @@ -213,10 +197,9 @@ struct filter_callback { 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(__a_unused struct sched *s, struct task *t); /** * the structure associated with a paraslash filter @@ -304,6 +287,20 @@ void (*print_help)(void); */ void *(*parse_config)(int argc, char **argv); }; + + +static inline void write_int16_host_endian(char *buf, int val) +{ +#ifdef WORDS_BIGENDIAN + *buf = val >> 8; + *(buf + 1) = val & 0xff; +#else + *buf = val & 0xff; + *(buf + 1) = val >> 8; +#endif +} + + /** \cond */ extern struct filter filters[]; #define DECLARE_EXTERN_FILTER_INIT(name) \ @@ -343,15 +340,15 @@ DECLARE_EXTERN_FILTER_INIT(oggdec); #else #define OGGDEC_FILTER #endif +/** \endcond */ -/* - * a macro that defines an array of all available filters - */ -#define DEFINE_FILTER_ARRAY(fa) struct filter fa[] = { \ +/** define an array of all available filters */ +#define DEFINE_FILTER_ARRAY(filters) struct filter filters[] = { \ FILTER_INIT(wav) \ FILTER_INIT(compress) \ MP3DEC_FILTER \ AACDEC_FILTER \ OGGDEC_FILTER \ { .name = NULL } }; -/** \endcond */ + +