diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 9b747b6d09..a0a6fa5a76 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -7782,11 +7782,7 @@ static int decode_frame(AVCodecContext *avctx, /* Sort B-frames into display order */ Picture *cur = s->current_picture_ptr; Picture *prev = h->delayed_output_pic; - int out_idx = 0; - int pics = 0; - int out_of_order; - int cross_idr = 0; - int i; + int i, pics, cross_idr, out_of_order, out_idx; if(h->sps.bitstream_restriction_flag && s->avctx->has_b_frames < h->sps.num_reorder_frames){ @@ -7794,16 +7790,19 @@ static int decode_frame(AVCodecContext *avctx, s->low_delay = 0; } + pics = 0; while(h->delayed_pic[pics]) pics++; h->delayed_pic[pics++] = cur; if(cur->reference == 0) cur->reference = 1; + cross_idr = 0; for(i=0; h->delayed_pic[i]; i++) if(h->delayed_pic[i]->key_frame || h->delayed_pic[i]->poc==0) cross_idr = 1; out = h->delayed_pic[0]; + out_idx = 0; for(i=1; h->delayed_pic[i] && !h->delayed_pic[i]->key_frame; i++) if(h->delayed_pic[i]->poc < out->poc){ out = h->delayed_pic[i];