@@ -1543,6 +1543,19 @@ int ff_filter_activate(AVFilterContext *filter)
return ret;
}
+int ff_link_acknowledge_status(AVFilterLink *link)
+{
+ if (ff_framequeue_queued_frames(&link->fifo))
+ return 0;
+ if (link->status_out)
+ return link->status_out;
+ if (!link->status_in)
+ return 0;
+ link->status_out = link->status_in;
+ ff_update_link_current_pts(link, link->status_in_pts);
+ return 1;
+}
+
const AVClass *avfilter_get_class(void)
{
return &avfilter_class;
@@ -613,4 +613,10 @@ static inline int ff_norm_qscale(int qscale, int type)
*/
int ff_filter_get_nb_threads(AVFilterContext *ctx);
+/**
+ * Test and acknowledge the change of status on the link.
+ * @return >0 if status changed, 0 otherwise, <0 if status already acked
+ */
+int ff_link_acknowledge_status(AVFilterLink *link);
+
#endif /* AVFILTER_INTERNAL_H */
Signed-off-by: Nicolas George <george@nsup.org> --- libavfilter/avfilter.c | 13 +++++++++++++ libavfilter/internal.h | 6 ++++++ 2 files changed, 19 insertions(+)