From b24530019f28fa53528fda695fce50a438668f4b Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Tue, 14 May 2013 17:41:50 +0000 Subject: [PATCH] lavfi/blend: timeline support Signed-off-by: Paul B Mahol --- libavfilter/vf_blend.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c index a0022cd724..b0987ef3f3 100644 --- a/libavfilter/vf_blend.c +++ b/libavfilter/vf_blend.c @@ -412,14 +412,19 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) top_buf = ff_bufqueue_get(&b->queue_top); bottom_buf = ff_bufqueue_get(&b->queue_bottom); - out_buf = ff_get_video_buffer(outlink, outlink->w, outlink->h); - if (!out_buf) { - return AVERROR(ENOMEM); + if (!ctx->is_disabled) { + out_buf = ff_get_video_buffer(outlink, outlink->w, outlink->h); + if (!out_buf) + return AVERROR(ENOMEM); + av_frame_copy_props(out_buf, top_buf); + blend_frame(ctx, top_buf, bottom_buf, out_buf); + } else { + out_buf = av_frame_clone(top_buf); + if (!out_buf) + return AVERROR(ENOMEM); } - av_frame_copy_props(out_buf, top_buf); b->frame_requested = 0; - blend_frame(ctx, top_buf, bottom_buf, out_buf); ret = ff_filter_frame(outlink, out_buf); av_frame_free(&top_buf); av_frame_free(&bottom_buf); @@ -460,4 +465,5 @@ AVFilter avfilter_vf_blend = { .inputs = blend_inputs, .outputs = blend_outputs, .priv_class = &blend_class, + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, };