diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 94ab6163de..33aeaedf6b 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -3212,6 +3212,7 @@ static int decode_slice_header(H264Context *h, H264Context *h0) int last_pic_structure, last_pic_droppable; int must_reinit; int needs_reinit = 0; + int field_pic_flag, bottom_field_flag; h->me.qpel_put = h->h264qpel.put_h264_qpel_pixels_tab; h->me.qpel_avg = h->h264qpel.avg_h264_qpel_pixels_tab; @@ -3404,8 +3405,10 @@ static int decode_slice_header(H264Context *h, H264Context *h0) av_log(h->avctx, AV_LOG_ERROR, "This stream was generated by a broken encoder, invalid 8x8 inference\n"); return -1; } - if (get_bits1(&h->gb)) { // field_pic_flag - h->picture_structure = PICT_TOP_FIELD + get_bits1(&h->gb); // bottom_field_flag + field_pic_flag = get_bits1(&h->gb); + if (field_pic_flag) { + bottom_field_flag = get_bits1(&h->gb); + h->picture_structure = PICT_TOP_FIELD + bottom_field_flag; } else { h->picture_structure = PICT_FRAME; h->mb_aff_frame = h->sps.mb_aff;