From 535df748c5043bac6b03e598cfa93160ecce8383 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini <stefasab@gmail.com> Date: Tue, 21 Aug 2012 20:51:17 +0200 Subject: examples/decoding_encoding: re-organize frame configuration code Put the relevant code in one chunk, also check for frame allocation failures. --- doc/examples/decoding_encoding.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/doc/examples/decoding_encoding.c b/doc/examples/decoding_encoding.c index 288432f52c..d41f1fd1c5 100644 --- a/doc/examples/decoding_encoding.c +++ b/doc/examples/decoding_encoding.c @@ -332,7 +332,6 @@ static void video_encode_example(const char *filename, int codec_id) } c = avcodec_alloc_context3(codec); - picture= avcodec_alloc_frame(); /* put sample parameters */ c->bit_rate = 400000; @@ -360,6 +359,15 @@ static void video_encode_example(const char *filename, int codec_id) exit(1); } + picture = avcodec_alloc_frame(); + if (!picture) { + fprintf(stderr, "Could not allocate video frame\n"); + exit(1); + } + picture->format = c->pix_fmt; + picture->width = c->width; + picture->height = c->height; + /* the image can be allocated by any means and av_image_alloc() is * just the most convenient way if av_malloc() is to be used */ ret = av_image_alloc(picture->data, picture->linesize, c->width, c->height, @@ -369,10 +377,6 @@ static void video_encode_example(const char *filename, int codec_id) exit(1); } - picture->format = c->pix_fmt; - picture->width = c->width; - picture->height = c->height; - /* encode 1 second of video */ for(i=0;i<25;i++) { av_init_packet(&pkt); @@ -483,8 +487,6 @@ static void video_decode_example(const char *outfilename, const char *filename) } c = avcodec_alloc_context3(codec); - picture= avcodec_alloc_frame(); - if(codec->capabilities&CODEC_CAP_TRUNCATED) c->flags|= CODEC_FLAG_TRUNCATED; /* we do not send complete frames */ @@ -506,6 +508,12 @@ static void video_decode_example(const char *outfilename, const char *filename) exit(1); } + picture = avcodec_alloc_frame(); + if (!picture) { + fprintf(stderr, "Could not allocate video frame\n"); + exit(1); + } + frame = 0; for(;;) { avpkt.size = fread(inbuf, 1, INBUF_SIZE, f); -- cgit v1.2.3