diff options
author | Paul B Mahol <onemda@gmail.com> | 2013-05-14 17:41:50 +0000 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2013-05-14 17:41:50 +0000 |
commit | b24530019f28fa53528fda695fce50a438668f4b (patch) | |
tree | 225f1bb60339d528edffbab45673c80bc5f7c0d4 /libavfilter/vf_blend.c | |
parent | e751481cd82d610cf93c6104a41396bd6338d073 (diff) | |
download | ffmpeg-b24530019f28fa53528fda695fce50a438668f4b.tar.gz |
lavfi/blend: timeline support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavfilter/vf_blend.c')
-rw-r--r-- | libavfilter/vf_blend.c | 16 |
1 files 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, }; |