Commit 7155763b authored by Anton Khirnov's avatar Anton Khirnov

vf_drawtext: don't give up its own reference to the input buffer.

Directly forwarding the input buffer to the next filter means that
drawtext no longer owns any references to it and thus shouldn't refer to
it in any way.
parent d19499c7
...@@ -812,6 +812,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) ...@@ -812,6 +812,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
{ {
AVFilterContext *ctx = inlink->dst; AVFilterContext *ctx = inlink->dst;
DrawTextContext *dtext = ctx->priv; DrawTextContext *dtext = ctx->priv;
AVFilterBufferRef *buf_out;
int fail = 0; int fail = 0;
if (dtext_prepare_text(ctx) < 0) { if (dtext_prepare_text(ctx) < 0) {
...@@ -850,7 +851,8 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) ...@@ -850,7 +851,8 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
(int)dtext->var_values[VAR_N], dtext->var_values[VAR_T], (int)dtext->var_values[VAR_N], dtext->var_values[VAR_T],
dtext->x, dtext->y, dtext->x+dtext->w, dtext->y+dtext->h); dtext->x, dtext->y, dtext->x+dtext->w, dtext->y+dtext->h);
ff_start_frame(inlink->dst->outputs[0], inpicref); buf_out = avfilter_ref_buffer(inpicref, ~0);
ff_start_frame(inlink->dst->outputs[0], buf_out);
} }
static void end_frame(AVFilterLink *inlink) static void end_frame(AVFilterLink *inlink)
...@@ -866,6 +868,7 @@ static void end_frame(AVFilterLink *inlink) ...@@ -866,6 +868,7 @@ static void end_frame(AVFilterLink *inlink)
ff_draw_slice(outlink, 0, picref->video->h, 1); ff_draw_slice(outlink, 0, picref->video->h, 1);
ff_end_frame(outlink); ff_end_frame(outlink);
avfilter_unref_buffer(inlink->cur_buf);
} }
AVFilter avfilter_vf_drawtext = { AVFilter avfilter_vf_drawtext = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment