Commit d3e57c15 authored by Vitor Sessak's avatar Vitor Sessak

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
parent 4d96a914
...@@ -98,6 +98,13 @@ struct AVFilterPad ...@@ -98,6 +98,13 @@ struct AVFilterPad
int type; int type;
#define AV_PAD_VIDEO 0 #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 * Callback called before passing the first slice of a new frame. If
* NULL, the filter layer will default to storing a reference to the * NULL, the filter layer will default to storing a reference to the
...@@ -131,11 +138,15 @@ struct AVFilterPad ...@@ -131,11 +138,15 @@ struct AVFilterPad
void (*request_frame)(AVFilterLink *link); void (*request_frame)(AVFilterLink *link);
/** /**
* Callback to set properties of the link. Only for video output pads. * Link configuration callback. For output pads, this should set the link
* XXX: this is not acceptable as is. it needs reworked to allow for * properties such as width/height. NOTE: this should not set the format
* negotiation of colorspace, etc. * 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() */ /* the default implementations of start_frame() and end_frame() */
...@@ -206,4 +217,6 @@ AVFilterContext *avfilter_create_by_name(char *name); ...@@ -206,4 +217,6 @@ AVFilterContext *avfilter_create_by_name(char *name);
int avfilter_init_filter(AVFilterContext *filter, const char *args); int avfilter_init_filter(AVFilterContext *filter, const char *args);
void avfilter_destroy(AVFilterContext *filter); void avfilter_destroy(AVFilterContext *filter);
int *avfilter_make_format_list(int len, ...);
#endif /* FFMPEG_AVFILTER_H */ #endif /* FFMPEG_AVFILTER_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment