diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-07-08 19:29:42 +0400 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-07-22 11:14:04 +0400 |
commit | ebc8d974817fe456a0afe6867fdeb22c761fb04f (patch) | |
tree | d08864445a712ca289ef8a1b2a4fa4d7ff2e81e0 /libavfilter/vf_pixdesctest.c | |
parent | 1470ce21cec5ee26e106e2a884c26bbf84e5aaea (diff) |
lavfi: add error handling to start_frame().
Diffstat (limited to 'libavfilter/vf_pixdesctest.c')
-rw-r--r-- | libavfilter/vf_pixdesctest.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/libavfilter/vf_pixdesctest.c b/libavfilter/vf_pixdesctest.c index c873105dfb..ae0a5063d2 100644 --- a/libavfilter/vf_pixdesctest.c +++ b/libavfilter/vf_pixdesctest.c @@ -51,16 +51,18 @@ static int config_props(AVFilterLink *inlink) return 0; } -static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) +static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) { PixdescTestContext *priv = inlink->dst->priv; AVFilterLink *outlink = inlink->dst->outputs[0]; AVFilterBufferRef *outpicref; - int i; + int i, ret = 0; + + outpicref = ff_get_video_buffer(outlink, AV_PERM_WRITE, + outlink->w, outlink->h); + if (!outpicref) + return AVERROR(ENOMEM); - outlink->out_buf = ff_get_video_buffer(outlink, AV_PERM_WRITE, - outlink->w, outlink->h); - outpicref = outlink->out_buf; avfilter_copy_buffer_ref_props(outpicref, picref); for (i = 0; i < 4; i++) { @@ -78,7 +80,14 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) priv->pix_desc->flags & PIX_FMT_PSEUDOPAL) memcpy(outpicref->data[1], outpicref->data[1], 256*4); - ff_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); + ret = ff_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); + if (ret < 0) { + avfilter_unref_bufferp(&outpicref); + return ret; + } + + outlink->out_buf = outpicref; + return 0; } static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) |