lavfi/blend: timeline support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
@ -412,14 +412,19 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
|
|||||||
top_buf = ff_bufqueue_get(&b->queue_top);
|
top_buf = ff_bufqueue_get(&b->queue_top);
|
||||||
bottom_buf = ff_bufqueue_get(&b->queue_bottom);
|
bottom_buf = ff_bufqueue_get(&b->queue_bottom);
|
||||||
|
|
||||||
out_buf = ff_get_video_buffer(outlink, outlink->w, outlink->h);
|
if (!ctx->is_disabled) {
|
||||||
if (!out_buf) {
|
out_buf = ff_get_video_buffer(outlink, outlink->w, outlink->h);
|
||||||
return AVERROR(ENOMEM);
|
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;
|
b->frame_requested = 0;
|
||||||
blend_frame(ctx, top_buf, bottom_buf, out_buf);
|
|
||||||
ret = ff_filter_frame(outlink, out_buf);
|
ret = ff_filter_frame(outlink, out_buf);
|
||||||
av_frame_free(&top_buf);
|
av_frame_free(&top_buf);
|
||||||
av_frame_free(&bottom_buf);
|
av_frame_free(&bottom_buf);
|
||||||
@ -460,4 +465,5 @@ AVFilter avfilter_vf_blend = {
|
|||||||
.inputs = blend_inputs,
|
.inputs = blend_inputs,
|
||||||
.outputs = blend_outputs,
|
.outputs = blend_outputs,
|
||||||
.priv_class = &blend_class,
|
.priv_class = &blend_class,
|
||||||
|
.flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user