h264: remove H264Context.pict_type
authorAnton Khirnov <anton@khirnov.net>
Mon, 11 Apr 2016 14:32:02 +0000 (16:32 +0200)
committerAnton Khirnov <anton@khirnov.net>
Sun, 24 Apr 2016 08:06:25 +0000 (10:06 +0200)
It is not used for anything internally, just exported in the output
frames. So remove the indirection and set it directly in frame_start().

libavcodec/h264.c
libavcodec/h264.h
libavcodec/h264_slice.c

index 9cc0a24..c024d7e 100644 (file)
@@ -438,8 +438,6 @@ static void decode_postinit(H264Context *h, int setup_finished)
     int i, pics, out_of_order, out_idx;
     int invalid = 0, cnt = 0;
 
-    h->cur_pic_ptr->f->pict_type = h->pict_type;
-
     if (h->next_output_pic)
         return;
 
index 3dc7d66..daad1be 100644 (file)
@@ -597,8 +597,6 @@ typedef struct H264Context {
      */
     int single_decode_warning;
 
-    enum AVPictureType pict_type;
-
     /** @} */
 
     /**
index ee4b74a..9e08c0b 100644 (file)
@@ -467,6 +467,8 @@ static int h264_frame_start(H264Context *h)
     pic->mmco_reset  = 0;
     pic->recovered   = 0;
 
+    pic->f->pict_type = h->slice_ctx[0].slice_type;
+
     if (CONFIG_ERROR_RESILIENCE && h->enable_er)
         ff_er_frame_start(&h->slice_ctx[0].er);
 
@@ -974,10 +976,6 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl)
         return AVERROR_INVALIDDATA;
     }
 
-    // to make a few old functions happy, it's wrong though
-    if (!h->setup_finished)
-        h->pict_type = sl->slice_type;
-
     pps_id = get_ue_golomb(&sl->gb);
     if (pps_id >= MAX_PPS_COUNT) {
         av_log(h->avctx, AV_LOG_ERROR, "pps_id %u out of range\n", pps_id);