diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index 060c6758bb..7867cd09fd 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -395,6 +395,19 @@ void avfilter_set_common_formats(AVFilterContext *ctx, AVFilterFormats *formats) /** Default handler for query_formats() */ int avfilter_default_query_formats(AVFilterContext *ctx); +/** start_frame() handler for filters which simply pass video along */ +void avfilter_null_start_frame(AVFilterLink *link, AVFilterPicRef *picref); + +/** draw_slice() handler for filters which simply pass video along */ +void avfilter_null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir); + +/** end_frame() handler for filters which simply pass video along */ +void avfilter_null_end_frame(AVFilterLink *link); + +/** get_video_buffer() handler for filters which simply pass video along */ +AVFilterPicRef *avfilter_null_get_video_buffer(AVFilterLink *link, + int perms, int w, int h); + /** * Filter definition. This defines the pads a filter contains, and all the * callback functions used to interact with the filter. diff --git a/libavfilter/defaults.c b/libavfilter/defaults.c index 3f5f6e1976..afa0f669b9 100644 --- a/libavfilter/defaults.c +++ b/libavfilter/defaults.c @@ -165,3 +165,23 @@ int avfilter_default_query_formats(AVFilterContext *ctx) return 0; } +void avfilter_null_start_frame(AVFilterLink *link, AVFilterPicRef *picref) +{ + avfilter_start_frame(link->dst->outputs[0], picref); +} + +void avfilter_null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) +{ + avfilter_draw_slice(link->dst->outputs[0], y, h, slice_dir); +} + +void avfilter_null_end_frame(AVFilterLink *link) +{ + avfilter_end_frame(link->dst->outputs[0]); +} + +AVFilterPicRef *avfilter_null_get_video_buffer(AVFilterLink *link, int perms, int w, int h) +{ + return avfilter_get_video_buffer(link->dst->outputs[0], perms, w, h); +} +