From 33e00731294e304ef7935fdb6dd7214bc4df391f Mon Sep 17 00:00:00 2001 From: Jeff Downs Date: Fri, 14 Dec 2007 05:37:23 +0000 Subject: [PATCH] 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. Originally committed as revision 11214 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h264.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index a093b0806a..822a20f6ce 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -3911,6 +3911,11 @@ static int decode_slice_header(H264Context *h, H264Context *h0){ 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){