aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/mpegvideo_enc.c
diff options
context:
space:
mode:
authorPavel Pavlov <pavel@summit-tech.ca>2010-03-23 17:58:39 +0000
committerCarl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at>2010-03-23 17:58:39 +0000
commitbe548816dc05c7e7a07659d499f1005fc0bc1d55 (patch)
treeec919bd403c92b477254f4808436b1e1727ffc74 /libavcodec/mpegvideo_enc.c
parent6f2c72c126abee225c4ab60f38a929384a080c5f (diff)
downloadffmpeg-be548816dc05c7e7a07659d499f1005fc0bc1d55.tar.gz
Always check if ff_alloc_picture() succeeds.
Patch by Pavel Pavlov, pavel summit-tech ca Originally committed as revision 22648 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpegvideo_enc.c')
-rw-r--r--libavcodec/mpegvideo_enc.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index aa68becc27..8b28062e9e 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -851,14 +851,18 @@ static int load_input_picture(MpegEncContext *s, AVFrame *pic_arg){
pic->data[i]= pic_arg->data[i];
pic->linesize[i]= pic_arg->linesize[i];
}
- ff_alloc_picture(s, (Picture*)pic, 1);
+ if(ff_alloc_picture(s, (Picture*)pic, 1) < 0){
+ return -1;
+ }
}else{
i= ff_find_unused_picture(s, 0);
pic= (AVFrame*)&s->picture[i];
pic->reference= 3;
- ff_alloc_picture(s, (Picture*)pic, 0);
+ if(ff_alloc_picture(s, (Picture*)pic, 0) < 0){
+ return -1;
+ }
if( pic->data[0] + INPLACE_OFFSET == pic_arg->data[0]
&& pic->data[1] + INPLACE_OFFSET == pic_arg->data[1]
@@ -1048,7 +1052,7 @@ static int estimate_best_b_count(MpegEncContext *s){
return best_b_count;
}
-static void select_input_picture(MpegEncContext *s){
+static int select_input_picture(MpegEncContext *s){
int i;
for(i=1; i<MAX_PICTURE_COUNT; i++)
@@ -1184,7 +1188,9 @@ no_output_pic:
Picture *pic= &s->picture[i];
pic->reference = s->reordered_input_picture[0]->reference;
- ff_alloc_picture(s, pic, 0);
+ if(ff_alloc_picture(s, pic, 0) < 0){
+ return -1;
+ }
/* mark us unused / free shared pic */
if(s->reordered_input_picture[0]->type == FF_BUFFER_TYPE_INTERNAL)
@@ -1214,6 +1220,7 @@ no_output_pic:
}else{
memset(&s->new_picture, 0, sizeof(Picture));
}
+ return 0;
}
int MPV_encode_picture(AVCodecContext *avctx,
@@ -1238,7 +1245,9 @@ int MPV_encode_picture(AVCodecContext *avctx,
if(load_input_picture(s, pic_arg) < 0)
return -1;
- select_input_picture(s);
+ if(select_input_picture(s) < 0){
+ return -1;
+ }
/* output? */
if(s->new_picture.data[0]){