diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c index 70c37c75da..e83a0db640 100644 --- a/libavfilter/vf_blend.c +++ b/libavfilter/vf_blend.c @@ -626,11 +626,17 @@ AVFilter ff_vf_blend = { static int tblend_filter_frame(AVFilterLink *inlink, AVFrame *frame) { - BlendContext *s = inlink->dst->priv; - AVFilterLink *outlink = inlink->dst->outputs[0]; + AVFilterContext *ctx = inlink->dst; + BlendContext *s = ctx->priv; + AVFilterLink *outlink = ctx->outputs[0]; if (s->prev_frame) { - AVFrame *out = blend_frame(inlink->dst, frame, s->prev_frame); + AVFrame *out; + + if (ctx->is_disabled) + out = av_frame_clone(frame); + else + out = blend_frame(ctx, frame, s->prev_frame); av_frame_free(&s->prev_frame); s->prev_frame = frame; return ff_filter_frame(outlink, out); @@ -674,7 +680,7 @@ AVFilter ff_vf_tblend = { .uninit = uninit, .inputs = tblend_inputs, .outputs = tblend_outputs, - .flags = AVFILTER_FLAG_SLICE_THREADS, + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS, }; #endif