Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Michael Niedermayer authored on 2015/07/13 07:35:11... | ... |
@@ -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); |