diff h264.c @ 6016:5455f4e43948 libavcodec

Make h264 decoder conform to requirements of mpegvideo's MPV_frame_start. Namely, that it should not be called if you are starting to decode a B frame without any reference pictures. Prevents an endless allocation cycle in MPV_frame_start that will end in picture buffer overflow and abort. Fixes roundup issue 216.
author heydowns
date Fri, 14 Dec 2007 05:37:23 +0000
parents 33b0514769b2
children e1404acccac3
line wrap: on
line diff
--- a/h264.c	Thu Dec 13 19:00:53 2007 +0000
+++ b/h264.c	Fri Dec 14 05:37:23 2007 +0000
@@ -3911,6 +3911,11 @@
     h->slice_type= slice_type;
 
     s->pict_type= h->slice_type; // to make a few old func happy, it's wrong though
+    if (s->pict_type == B_TYPE && s->last_picture_ptr == NULL) {
+        av_log(h->s.avctx, AV_LOG_ERROR,
+               "B picture before any references, skipping\n");
+        return -1;
+    }
 
     pps_id= get_ue_golomb(&s->gb);
     if(pps_id>=MAX_PPS_COUNT){