[FFmpeg-cvslog] lavfi: add AVFilter.activate.

Nicolas George git at videolan.org
Thu Jan 12 15:15:33 EET 2017


ffmpeg | branch: master | Nicolas George <george at nsup.org> | Mon Dec 19 08:38:15 2016 +0100| [3ff01feda30a131e877c01619761c2b62e45c9e8] | committer: Nicolas George

lavfi: add AVFilter.activate.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3ff01feda30a131e877c01619761c2b62e45c9e8
---

 libavfilter/avfilter.c |  6 +++++-
 libavfilter/avfilter.h | 14 ++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index b2a6b58..9ae0cb6 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 649bbe6..b56615c 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;
 
 /**



More information about the ffmpeg-cvslog mailing list