diff options
author | Anton Khirnov <[email protected]> | 2012-07-08 17:01:17 +0200 |
---|---|---|
committer | Reinhard Tartler <[email protected]> | 2013-01-04 07:43:38 +0100 |
commit | 8168a7cec951b34947c55bb14a1ba2f987ab13a3 (patch) | |
tree | 0722e7e0dd355c2a28f769b020084d3a6442408f | |
parent | 562d6fd5b577aeab7218ce5d1cb8547aa1f4b66c (diff) |
vf_pad: don't give up its own reference to the output buffer.
Conflicts:
libavfilter/vf_pad.c
Fixes Bug 245
Signed-off-by: Anton Khirnov <[email protected]>
-rw-r--r-- | libavfilter/vf_pad.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libavfilter/vf_pad.c b/libavfilter/vf_pad.c index d4d2b205d3..ef7cc88625 100644 --- a/libavfilter/vf_pad.c +++ b/libavfilter/vf_pad.c @@ -299,6 +299,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) { PadContext *pad = inlink->dst->priv; AVFilterBufferRef *outpicref = avfilter_ref_buffer(inpicref, ~0); + AVFilterBufferRef *for_next_filter; int plane; for (plane = 0; plane < 4 && outpicref->data[plane]; plane++) { @@ -335,12 +336,14 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) outpicref->video->w = pad->w; outpicref->video->h = pad->h; - avfilter_start_frame(inlink->dst->outputs[0], outpicref); + for_next_filter = avfilter_ref_buffer(outpicref, ~0); + avfilter_start_frame(inlink->dst->outputs[0], for_next_filter); } static void end_frame(AVFilterLink *link) { avfilter_end_frame(link->dst->outputs[0]); + avfilter_unref_buffer(link->dst->outputs[0]->out_buf); avfilter_unref_buffer(link->cur_buf); } |