X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fh264_sei.c;h=12d709b123502983648f254ca36b7ba58f62b9c6;hb=4b8bc6d2b0a94c850f7d807a7da21804f1f9c1c7;hp=a4867290ba2b637c28a03699f98363828cf45054;hpb=44967ab60a9baf62f86bc727b51ff0acb587e676;p=ffmpeg diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index a4867290ba2..12d709b1235 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -226,39 +226,30 @@ static int decode_buffering_period(H264Context *h) static int decode_frame_packing_arrangement(H264Context *h) { - int cancel; - int quincunx = 0; - int content = -1; - int type = -1; - h->sei_fpa.frame_packing_arrangement_id = get_ue_golomb(&h->gb); - cancel = get_bits(&h->gb, 1); - if (cancel == 0) { - type = get_bits(&h->gb, 7); // frame_packing_arrangement_type - quincunx = get_bits1(&h->gb); // quincunx_sampling_flag - content = get_bits(&h->gb, 6); // content_interpretation_type + h->sei_fpa.frame_packing_arrangement_cancel_flag = get_bits1(&h->gb); + h->sei_frame_packing_present = !h->sei_fpa.frame_packing_arrangement_cancel_flag; + + if (h->sei_frame_packing_present) { + h->sei_fpa.frame_packing_arrangement_type = + h->frame_packing_arrangement_type = get_bits(&h->gb, 7); + h->sei_fpa.quincunx_sampling_flag = + h->quincunx_subsampling = get_bits1(&h->gb); + h->sei_fpa.content_interpretation_type = + h->content_interpretation_type = get_bits(&h->gb, 6); // the following skips: spatial_flipping_flag, frame0_flipped_flag, // field_views_flag, current_frame_is_frame0_flag, // frame0_self_contained_flag, frame1_self_contained_flag skip_bits(&h->gb, 6); - if (quincunx == 0 && type != 5) + + if (!h->quincunx_subsampling && h->frame_packing_arrangement_type != 5) skip_bits(&h->gb, 16); // frame[01]_grid_position_[xy] skip_bits(&h->gb, 8); // frame_packing_arrangement_reserved_byte h->sei_fpa.frame_packing_arrangement_repetition_period = get_ue_golomb(&h->gb) /* frame_packing_arrangement_repetition_period */; } skip_bits1(&h->gb); // frame_packing_arrangement_extension_flag - h->sei_frame_packing_present = (cancel == 0); - h->frame_packing_arrangement_type = type; - h->content_interpretation_type = content; - h->quincunx_subsampling = quincunx; - - h->sei_fpa.frame_packing_arrangement_cancel_flag = cancel ; - h->sei_fpa.frame_packing_arrangement_type = type ; - h->sei_fpa.quincunx_sampling_flag = quincunx; - h->sei_fpa.content_interpretation_type = content ; - if (h->avctx->debug & FF_DEBUG_PICT_INFO) av_log(h->avctx, AV_LOG_DEBUG, "SEI FPA %d %d %d %d %d %d\n", h->sei_fpa.frame_packing_arrangement_id,