Commit 3ff01fed authored by Nicolas George's avatar Nicolas George

lavfi: add AVFilter.activate.

parent db4a71c0
...@@ -1480,8 +1480,12 @@ int ff_filter_activate(AVFilterContext *filter) ...@@ -1480,8 +1480,12 @@ int ff_filter_activate(AVFilterContext *filter)
{ {
int ret; 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; 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) if (ret == FFERROR_NOT_READY)
ret = 0; ret = 0;
return ret; return ret;
......
...@@ -294,6 +294,20 @@ typedef struct AVFilter { ...@@ -294,6 +294,20 @@ typedef struct AVFilter {
* used for providing binary data. * used for providing binary data.
*/ */
int (*init_opaque)(AVFilterContext *ctx, void *opaque); 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; } AVFilter;
/** /**
......
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