aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2013-05-14 17:41:50 +0000
committerPaul B Mahol <onemda@gmail.com>2013-05-14 17:41:50 +0000
commitb24530019f28fa53528fda695fce50a438668f4b (patch)
tree225f1bb60339d528edffbab45673c80bc5f7c0d4 /libavfilter
parente751481cd82d610cf93c6104a41396bd6338d073 (diff)
downloadffmpeg-b24530019f28fa53528fda695fce50a438668f4b.tar.gz
lavfi/blend: timeline support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/vf_blend.c16
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,
};