Browse code

avcodec/hevc: Move skipped_bytes_pos_size_nal into HAVCNAL

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>

Michael Niedermayer authored on 2015/07/13 07:35:11
Showing 3 changed files
... ...
@@ -2974,7 +2974,6 @@ static av_cold int hevc_decode_free(AVCodecContext *avctx)
2974 2974
     for(i=0; i < s->pkt.nals_allocated; i++) {
2975 2975
         av_freep(&s->skipped_bytes_pos_nal[i]);
2976 2976
     }
2977
-    av_freep(&s->skipped_bytes_pos_size_nal);
2978 2977
     av_freep(&s->skipped_bytes_pos_nal);
2979 2978
 
2980 2979
     av_freep(&s->cabac_state);
... ...
@@ -761,6 +761,7 @@ typedef struct HEVCNAL {
761 761
     int temporal_id;
762 762
 
763 763
     int skipped_bytes;
764
+    int skipped_bytes_pos_size_nal;
764 765
 } HEVCNAL;
765 766
 
766 767
 /* an input packet split into unescaped NAL units */
... ...
@@ -903,7 +904,6 @@ typedef struct HEVCContext {
903 903
     int skipped_bytes_pos_size;
904 904
 
905 905
     int **skipped_bytes_pos_nal;
906
-    int *skipped_bytes_pos_size_nal;
907 906
 
908 907
     const uint8_t *data;
909 908
 
... ...
@@ -218,32 +218,28 @@ int ff_hevc_split_packet(HEVCContext *s, HEVCPacket *pkt, const uint8_t *buf, in
218 218
             memset(pkt->nals + pkt->nals_allocated, 0,
219 219
                    (new_size - pkt->nals_allocated) * sizeof(*pkt->nals));
220 220
 
221
-            tmp = av_realloc_array(s->skipped_bytes_pos_size_nal, new_size, sizeof(*s->skipped_bytes_pos_size_nal));
222
-            if (!tmp)
223
-                return AVERROR(ENOMEM);
224
-            s->skipped_bytes_pos_size_nal = tmp;
225
-
226 221
             tmp = av_realloc_array(s->skipped_bytes_pos_nal, new_size, sizeof(*s->skipped_bytes_pos_nal));
227 222
             if (!tmp)
228 223
                 return AVERROR(ENOMEM);
229 224
             s->skipped_bytes_pos_nal = tmp;
230 225
 
231
-            s->skipped_bytes_pos_size_nal[pkt->nals_allocated] = 1024; // initial buffer size
232
-            s->skipped_bytes_pos_nal[pkt->nals_allocated] = av_malloc_array(s->skipped_bytes_pos_size_nal[pkt->nals_allocated], sizeof(*s->skipped_bytes_pos));
226
+            nal = &pkt->nals[pkt->nb_nals];
227
+            nal->skipped_bytes_pos_size_nal = 1024; // initial buffer size
228
+            s->skipped_bytes_pos_nal[pkt->nals_allocated] = av_malloc_array(nal->skipped_bytes_pos_size_nal, sizeof(*s->skipped_bytes_pos));
233 229
             if (!s->skipped_bytes_pos_nal[pkt->nals_allocated])
234 230
                 return AVERROR(ENOMEM);
235 231
 
236 232
             pkt->nals_allocated = new_size;
237 233
         }
238
-        s->skipped_bytes_pos_size = s->skipped_bytes_pos_size_nal[pkt->nb_nals];
239
-        s->skipped_bytes_pos = s->skipped_bytes_pos_nal[pkt->nb_nals];
240 234
         nal = &pkt->nals[pkt->nb_nals];
235
+        s->skipped_bytes_pos_size = nal->skipped_bytes_pos_size_nal;
236
+        s->skipped_bytes_pos = s->skipped_bytes_pos_nal[pkt->nb_nals];
241 237
 
242 238
         consumed = ff_hevc_extract_rbsp(s, buf, extract_length, nal);
243 239
         if (consumed < 0)
244 240
             return consumed;
245 241
 
246
-        s->skipped_bytes_pos_size_nal[pkt->nb_nals] = s->skipped_bytes_pos_size;
242
+        nal->skipped_bytes_pos_size_nal = s->skipped_bytes_pos_size;
247 243
         s->skipped_bytes_pos_nal[pkt->nb_nals++] = s->skipped_bytes_pos;
248 244
 
249 245
         ret = init_get_bits8(&nal->gb, nal->data, nal->size);