summaryrefslogtreecommitdiff
path: root/libavfilter/vf_pixdesctest.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-07-08 17:29:42 +0200
committerAnton Khirnov <anton@khirnov.net>2012-07-22 09:14:04 +0200
commitebc8d974817fe456a0afe6867fdeb22c761fb04f (patch)
treed08864445a712ca289ef8a1b2a4fa4d7ff2e81e0 /libavfilter/vf_pixdesctest.c
parent1470ce21cec5ee26e106e2a884c26bbf84e5aaea (diff)
lavfi: add error handling to start_frame().
Diffstat (limited to 'libavfilter/vf_pixdesctest.c')
-rw-r--r--libavfilter/vf_pixdesctest.c21
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)