Merge commit 'ae05b4865514fd71b5e9431e93aa0d03d7ba7751'
authorMichael Niedermayer <michael@niedermayer.cc>
Sun, 12 Jul 2015 20:55:47 +0000 (22:55 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Sun, 12 Jul 2015 20:55:47 +0000 (22:55 +0200)
* commit 'ae05b4865514fd71b5e9431e93aa0d03d7ba7751':
  hevc: eliminate the second call to hls_nal_unit()

Conflicts:
libavcodec/hevc.c

Merged-by: Michael Niedermayer <michael@niedermayer.cc>
1  2 
libavcodec/hevc.c
libavcodec/hevc.h

@@@ -2517,16 -2353,16 +2517,16 @@@ static int hls_nal_unit(HEVCNAL *nal, A
      if (get_bits1(gb) != 0)
          return AVERROR_INVALIDDATA;
  
-     s->nal_unit_type = get_bits(gb, 6);
+     nal->type = get_bits(gb, 6);
  
      nuh_layer_id   = get_bits(gb, 6);
-     s->temporal_id = get_bits(gb, 3) - 1;
-     if (s->temporal_id < 0)
+     nal->temporal_id = get_bits(gb, 3) - 1;
+     if (nal->temporal_id < 0)
          return AVERROR_INVALIDDATA;
  
-     av_log(s->avctx, AV_LOG_DEBUG,
+     av_log(avctx, AV_LOG_DEBUG,
 -           "nal_unit_type: %d, nuh_layer_id: %dtemporal_id: %d\n",
 +           "nal_unit_type: %d, nuh_layer_id: %dtemporal_id: %d\n",
-            s->nal_unit_type, nuh_layer_id, s->temporal_id);
+            nal->type, nuh_layer_id, nal->temporal_id);
  
      return nuh_layer_id == 0;
  }
@@@ -2869,11 -2698,7 +2867,11 @@@ static int decode_nal_units(HEVCContex
              goto fail;
          }
  
-         ret = init_get_bits8(&s->HEVClc->gb, nal->data, nal->size);
 +        s->skipped_bytes_nal[s->nb_nals] = s->skipped_bytes;
 +        s->skipped_bytes_pos_size_nal[s->nb_nals] = s->skipped_bytes_pos_size;
 +        s->skipped_bytes_pos_nal[s->nb_nals++] = s->skipped_bytes_pos;
 +
+         ret = init_get_bits8(&nal->gb, nal->data, nal->size);
          if (ret < 0)
              goto fail;
  
@@@ -754,13 -711,31 +754,18 @@@ typedef struct HEVCNAL 
  
      int raw_size;
      const uint8_t *raw_data;
+     GetBitContext gb;
+     enum NALUnitType type;
+     int temporal_id;
  } HEVCNAL;
  
 -struct HEVCContext;
 -
 -typedef struct HEVCPredContext {
 -    void (*intra_pred[4])(struct HEVCContext *s, int x0, int y0, int c_idx);
 -
 -    void (*pred_planar[4])(uint8_t *src, const uint8_t *top,
 -                           const uint8_t *left, ptrdiff_t stride);
 -    void (*pred_dc)(uint8_t *src, const uint8_t *top, const uint8_t *left,
 -                    ptrdiff_t stride, int log2_size, int c_idx);
 -    void (*pred_angular[4])(uint8_t *src, const uint8_t *top,
 -                            const uint8_t *left, ptrdiff_t stride,
 -                            int c_idx, int mode);
 -} HEVCPredContext;
 -
  typedef struct HEVCLocalContext {
 -    DECLARE_ALIGNED(16, int16_t, mc_buffer[(MAX_PB_SIZE + 7) * MAX_PB_SIZE]);
      uint8_t cabac_state[HEVC_CONTEXTS];
  
 +    uint8_t stat_coeff[4];
 +
      uint8_t first_qp_group;
  
      GetBitContext gb;