aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter
diff options
context:
space:
mode:
authorNicolas George <george@nsup.org>2016-12-19 08:38:15 +0100
committerNicolas George <george@nsup.org>2017-01-12 14:06:16 +0100
commit3ff01feda30a131e877c01619761c2b62e45c9e8 (patch)
tree7ff3551705d58adfbc9f71c031269d65d92be477 /libavfilter
parentdb4a71c0ff4a925d1c2d0b5bde6e2760ec55b2d0 (diff)
downloadffmpeg-3ff01feda30a131e877c01619761c2b62e45c9e8.tar.gz
lavfi: add AVFilter.activate.
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/avfilter.c6
-rw-r--r--libavfilter/avfilter.h14
2 files changed, 19 insertions, 1 deletions
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index b2a6b58cea..9ae0cb67e0 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -1480,8 +1480,12 @@ int ff_filter_activate(AVFilterContext *filter)
{
int ret;
+ /* Generic timeline support is not yet implemented but should be easy */
+ av_assert1(!(filter->filter->flags & AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC &&
+ filter->filter->activate));
filter->ready = 0;
- ret = ff_filter_activate_default(filter);
+ ret = filter->filter->activate ? filter->filter->activate(filter) :
+ ff_filter_activate_default(filter);
if (ret == FFERROR_NOT_READY)
ret = 0;
return ret;
diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 649bbe6522..b56615c98e 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -294,6 +294,20 @@ typedef struct AVFilter {
* used for providing binary data.
*/
int (*init_opaque)(AVFilterContext *ctx, void *opaque);
+
+ /**
+ * Filter activation function.
+ *
+ * Called when any processing is needed from the filter, instead of any
+ * filter_frame and request_frame on pads.
+ *
+ * The function must examine inlinks and outlinks and perform a single
+ * step of processing. If there is nothing to do, the function must do
+ * nothing and not return an error. If more steps are or may be
+ * possible, it must use ff_filter_set_ready() to schedule another
+ * activation.
+ */
+ int (*activate)(AVFilterContext *ctx);
} AVFilter;
/**