aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2009-01-11 22:05:48 +0000
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2009-01-11 22:05:48 +0000
commitb9609848f359d2cfc6a483d0557421427a878039 (patch)
tree36fedab38b6d1da335ef792c5cf2ce04ceb8d288
parentb507ebd1792da5e44088ddcab315b41cc500695b (diff)
downloadffmpeg-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.c6
-rw-r--r--libavfilter/avfilter.h4
-rw-r--r--libavfilter/defaults.c11
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;