examples/decoding_encoding: re-organize frame configuration code

Put the relevant code in one chunk, also check for frame allocation
failures.
This commit is contained in:
Stefano Sabatini 2012-08-21 20:51:17 +02:00
parent 780bf7595e
commit 535df748c5

View File

@ -332,7 +332,6 @@ static void video_encode_example(const char *filename, int codec_id)
} }
c = avcodec_alloc_context3(codec); c = avcodec_alloc_context3(codec);
picture= avcodec_alloc_frame();
/* put sample parameters */ /* put sample parameters */
c->bit_rate = 400000; c->bit_rate = 400000;
@ -360,6 +359,15 @@ static void video_encode_example(const char *filename, int codec_id)
exit(1); 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 /* 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 */ * just the most convenient way if av_malloc() is to be used */
ret = av_image_alloc(picture->data, picture->linesize, c->width, c->height, 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); exit(1);
} }
picture->format = c->pix_fmt;
picture->width = c->width;
picture->height = c->height;
/* encode 1 second of video */ /* encode 1 second of video */
for(i=0;i<25;i++) { for(i=0;i<25;i++) {
av_init_packet(&pkt); av_init_packet(&pkt);
@ -483,8 +487,6 @@ static void video_decode_example(const char *outfilename, const char *filename)
} }
c = avcodec_alloc_context3(codec); c = avcodec_alloc_context3(codec);
picture= avcodec_alloc_frame();
if(codec->capabilities&CODEC_CAP_TRUNCATED) if(codec->capabilities&CODEC_CAP_TRUNCATED)
c->flags|= CODEC_FLAG_TRUNCATED; /* we do not send complete frames */ 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); exit(1);
} }
picture = avcodec_alloc_frame();
if (!picture) {
fprintf(stderr, "Could not allocate video frame\n");
exit(1);
}
frame = 0; frame = 0;
for(;;) { for(;;) {
avpkt.size = fread(inbuf, 1, INBUF_SIZE, f); avpkt.size = fread(inbuf, 1, INBUF_SIZE, f);