# HG changeset patch # User michael # Date 1171661661 0 # Node ID c296efb7575e1884b04a4ce17b40e6bbe29e43b4 # Parent 8a5a3dd253906920df598252f4a1f2ea9588e11f fix 2nd ref_count check add list_count diff -r 8a5a3dd25390 -r c296efb7575e h264.c --- a/h264.c Fri Feb 16 21:29:15 2007 +0000 +++ b/h264.c Fri Feb 16 21:34:21 2007 +0000 @@ -326,6 +326,7 @@ * num_ref_idx_l0/1_active_minus1 + 1 */ unsigned int ref_count[2]; ///< counts frames or fields, depending on current mb mode + unsigned int list_count; Picture *short_ref[32]; Picture *long_ref[32]; Picture default_ref_list[2][32]; @@ -4706,13 +4707,18 @@ if(h->slice_type==B_TYPE) h->ref_count[1]= get_ue_golomb(&s->gb) + 1; - if(h->ref_count[0] > 32 || h->ref_count[1] > 32){ + if(h->ref_count[0]-1 > 32-1 || h->ref_count[1]-1 > 32-1){ av_log(h->s.avctx, AV_LOG_ERROR, "reference overflow\n"); h->ref_count[0]= h->ref_count[1]= 1; return -1; } } - } + if(h->slice_type == B_TYPE) + h->list_count= 2; + else + h->list_count= 1; + }else + h->list_count= 0; if(!default_ref_list_done){ fill_default_ref_list(h);