diff options
author | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2009-01-11 22:05:48 +0000 |
---|---|---|
committer | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2009-01-11 22:05:48 +0000 |
commit | b9609848f359d2cfc6a483d0557421427a878039 (patch) | |
tree | 36fedab38b6d1da335ef792c5cf2ce04ceb8d288 | |
parent | b507ebd1792da5e44088ddcab315b41cc500695b (diff) | |
download | ffmpeg-b9609848f359d2cfc6a483d0557421427a878039.tar.gz |
Implement the avfilter_default_draw_slice() handler and use it in
avfilter_draw_slice() when the draw_slice callback is not defined in
the input pad.
Originally committed as revision 16554 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavfilter/avfilter.c | 6 | ||||
-rw-r--r-- | libavfilter/avfilter.h | 4 | ||||
-rw-r--r-- | libavfilter/defaults.c | 11 |
3 files changed, 18 insertions, 3 deletions
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 218a83bfb3..283fd0aa4a 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -250,6 +250,7 @@ void avfilter_draw_slice(AVFilterLink *link, int y, int h) { uint8_t *src[4], *dst[4]; int i, j, hsub, vsub; + void (*draw_slice)(AVFilterLink *, int, int); /* copy the slice if needed for permission reasons */ if(link->srcpic) { @@ -279,8 +280,9 @@ void avfilter_draw_slice(AVFilterLink *link, int y, int h) } } - if(link_dpad(link).draw_slice) - link_dpad(link).draw_slice(link, y, h); + if(!(draw_slice = link_dpad(link).draw_slice)) + draw_slice = avfilter_default_draw_slice; + draw_slice(link, y, h); } AVFilter *avfilter_get_by_name(const char *name) diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index 302b119142..f0d221c56b 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -23,7 +23,7 @@ #define AVFILTER_AVFILTER_H #define LIBAVFILTER_VERSION_MAJOR 0 -#define LIBAVFILTER_VERSION_MINOR 1 +#define LIBAVFILTER_VERSION_MINOR 2 #define LIBAVFILTER_VERSION_MICRO 0 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ @@ -349,6 +349,8 @@ struct AVFilterPad /** default handler for start_frame() for video inputs */ void avfilter_default_start_frame(AVFilterLink *link, AVFilterPicRef *picref); +/** default handler for draw_slice() for video inputs */ +void avfilter_default_draw_slice(AVFilterLink *link, int y, int h); /** default handler for end_frame() for video inputs */ void avfilter_default_end_frame(AVFilterLink *link); /** default handler for config_props() for video outputs */ diff --git a/libavfilter/defaults.c b/libavfilter/defaults.c index da635456c7..9d2064410e 100644 --- a/libavfilter/defaults.c +++ b/libavfilter/defaults.c @@ -82,6 +82,17 @@ void avfilter_default_start_frame(AVFilterLink *link, AVFilterPicRef *picref) } } +void avfilter_default_draw_slice(AVFilterLink *link, int y, int h) +{ + AVFilterLink *out = NULL; + + if(link->dst->output_count) + out = link->dst->outputs[0]; + + if(out) + avfilter_draw_slice(out, y, h); +} + void avfilter_default_end_frame(AVFilterLink *link) { AVFilterLink *out = NULL; |