From: Anatoly Nenashev Date: Sun, 27 Mar 2011 19:41:48 +0000 (+0200) Subject: Fix crash of interlaced MPEG2 decoding X-Git-Tag: v0.7b2~20 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b44c8ad280c221691560ae9625421416e20c483f;p=platform%2Fupstream%2Flibav.git Fix crash of interlaced MPEG2 decoding Problem description, preliminary review discussion at http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/127731 --- diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index f4de8dd..2c0525e 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -998,8 +998,13 @@ int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) s->pict_type, s->dropable);*/ if(s->codec_id != CODEC_ID_H264){ - if((s->last_picture_ptr==NULL || s->last_picture_ptr->data[0]==NULL) && s->pict_type!=AV_PICTURE_TYPE_I){ - av_log(avctx, AV_LOG_ERROR, "warning: first frame is no keyframe\n"); + if((s->last_picture_ptr==NULL || s->last_picture_ptr->data[0]==NULL) && + (s->pict_type!=AV_PICTURE_TYPE_I || s->picture_structure != PICT_FRAME)){ + if (s->pict_type != AV_PICTURE_TYPE_I) + av_log(avctx, AV_LOG_ERROR, "warning: first frame is no keyframe\n"); + else if (s->picture_structure != PICT_FRAME) + av_log(avctx, AV_LOG_INFO, "allocate dummy last picture for field based first keyframe\n"); + /* Allocate a dummy frame */ i= ff_find_unused_picture(s, 0); s->last_picture_ptr= &s->picture[i];