avcodec/mpegvideo: Dont incorrectly warn about missing keyframes
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 29 Aug 2013 23:45:11 +0000 (01:45 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 29 Aug 2013 23:45:11 +0000 (01:45 +0200)
Files starting with B frames in presentation order generated the
"no keyframe" warning before this change.

Based on patch by: Robert Kr├╝ger <krueger@lesspain.de>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/mpegvideo.c

index 00ced1f..6ace501 100644 (file)
@@ -1593,7 +1593,10 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
         int h_chroma_shift, v_chroma_shift;
         av_pix_fmt_get_chroma_sub_sample(s->avctx->pix_fmt,
                                          &h_chroma_shift, &v_chroma_shift);
-        if (s->pict_type != AV_PICTURE_TYPE_I)
+        if (s->pict_type == AV_PICTURE_TYPE_B && s->next_picture_ptr && s->next_picture_ptr->f.data[0])
+            av_log(avctx, AV_LOG_INFO,
+                   "allocating dummy last picture for B frame\n");
+        else 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)