@ -3305,31 +3305,36 @@ static int decode_ref_pic_list_reordering(H264Context *h){
elsepred+=abs_diff_pic_num;
pred&=h->max_pic_num-1;
for(i=h->ref_count[list]-1;i>=0;i--){
if(h->ref_list[list][i].data[0]!=NULL&&h->ref_list[list][i].pic_id==pred&&h->ref_list[list][i].long_ref==0)// ignore non existing pictures by testing data[0] pointer
for(i=h->short_ref_count-1;i>=0;i--){
ref=h->short_ref[i];
assert(ref->reference==3);
assert(!ref->long_ref);
if(ref->data[0]!=NULL&&ref->frame_num==pred&&ref->long_ref==0)// ignore non existing pictures by testing data[0] pointer
break;
}
if(i>=0)
ref->pic_id=ref->frame_num;
}else{
pic_id=get_ue_golomb(&s->gb);//long_term_pic_idx
for(i=h->ref_count[list]-1;i>=0;i--){
if(h->ref_list[list][i].pic_id==pic_id&&h->ref_list[list][i].long_ref==1)// no need to ignore non existing pictures as non existing pictures have long_ref==0
break;
}
ref=h->long_ref[pic_id];
ref->pic_id=pic_id;
assert(ref->reference==3);
assert(ref->long_ref);
i=0;
}
if(i<0){
av_log(h->s.avctx,AV_LOG_ERROR,"reference picture missing during reorder\n");