MOVFragmentInfo *info;
avio_flush(s->pb);
track->nb_frag_info++;
- track->frag_info = av_realloc(track->frag_info,
- sizeof(*track->frag_info) *
- track->nb_frag_info);
+ if (track->nb_frag_info >= track->frag_info_capacity) {
+ unsigned new_capacity = track->nb_frag_info + MOV_FRAG_INFO_ALLOC_INCREMENT;
+ if (av_reallocp_array(&track->frag_info,
+ new_capacity,
+ sizeof(*track->frag_info)))
+ return AVERROR(ENOMEM);
+ track->frag_info_capacity = new_capacity;
+ }
info = &track->frag_info[track->nb_frag_info - 1];
info->offset = avio_tell(s->pb);
info->time = mov->tracks[i].frag_start;
#include "avformat.h"
+#define MOV_FRAG_INFO_ALLOC_INCREMENT 64
#define MOV_INDEX_CLUSTER_SIZE 1024
#define MOV_TIMESCALE 1000
int nb_frag_info;
MOVFragmentInfo *frag_info;
+ unsigned frag_info_capacity;
struct {
int64_t struct_offset;