OSDN Git Service

Merge commit '3d9fc21e593aa89b5877bd739268499b079052f2'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 17 Dec 2013 18:30:57 +0000 (19:30 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 17 Dec 2013 18:30:57 +0000 (19:30 +0100)
* commit '3d9fc21e593aa89b5877bd739268499b079052f2':
  h264: Refactor decode_frame_packing_arrangement

Conflicts:
libavcodec/h264_sei.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/h264_sei.c

@@@ -226,48 -178,26 +226,39 @@@ static int decode_buffering_period(H264
  
  static int decode_frame_packing_arrangement(H264Context *h)
  {
-     int cancel;
-     int quincunx =  0;
-     int content  = -1;
-     int type     = -1;
 -    get_ue_golomb(&h->gb);              // frame_packing_arrangement_id
 -    h->sei_frame_packing_present = !get_bits1(&h->gb);
 +    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
 -        get_ue_golomb(&h->gb);          // frame_packing_arrangement_repetition_period
 +        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,
 +                                       h->sei_fpa.frame_packing_arrangement_cancel_flag,
 +                                       h->sei_fpa.frame_packing_arrangement_type,
 +                                       h->sei_fpa.quincunx_sampling_flag,
 +                                       h->sei_fpa.content_interpretation_type,
 +                                       h->sei_fpa.frame_packing_arrangement_repetition_period);
 +
      return 0;
  }