From d3e57c15cfbaa1bbabb0c718c4e5c969c18f4181 Mon Sep 17 00:00:00 2001 From: Vitor Sessak Date: Fri, 15 Feb 2008 22:12:41 +0000 Subject: [PATCH] Rework filter initialization sequence. Now supports passing user parameters, querying supported colorspaces, etc. Commited in SoC by Bobby Bingham on 2007-07-05 20:48:48 Originally committed as revision 12080 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavfilter/avfilter.h | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index 2e50467633..ed445dae84 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -98,6 +98,13 @@ struct AVFilterPad int type; #define AV_PAD_VIDEO 0 + /** + * Callback to get a list of supported formats. The returned list should + * be terminated by -1. This is used for both input and output pads and + * is required for both. + */ + int *(*query_formats)(AVFilterLink *link); + /** * Callback called before passing the first slice of a new frame. If * NULL, the filter layer will default to storing a reference to the @@ -131,11 +138,15 @@ struct AVFilterPad void (*request_frame)(AVFilterLink *link); /** - * Callback to set properties of the link. Only for video output pads. - * XXX: this is not acceptable as is. it needs reworked to allow for - * negotiation of colorspace, etc. + * Link configuration callback. For output pads, this should set the link + * properties such as width/height. NOTE: this should not set the format + * property - that is negotiated between filters by the filter system using + * the query_formats() callback. + * + * For input pads, this should check the properties of the link, and update + * the filter's internal state as necessary. */ - int (*set_video_props)(AVFilterLink *link); + int (*config_props)(AVFilterLink *link); }; /* the default implementations of start_frame() and end_frame() */ @@ -206,4 +217,6 @@ AVFilterContext *avfilter_create_by_name(char *name); int avfilter_init_filter(AVFilterContext *filter, const char *args); void avfilter_destroy(AVFilterContext *filter); +int *avfilter_make_format_list(int len, ...); + #endif /* FFMPEG_AVFILTER_H */