[FFmpeg-devel] [PATCH 5/6] lavf: replace av_fast_realloc() with av_realloc_reuse()
Anton Khirnov
anton at khirnov.net
Wed Sep 28 13:48:53 EEST 2022
---
libavformat/avc.c | 4 +--
libavformat/avc.h | 2 +-
libavformat/bethsoftvid.c | 6 ++--
libavformat/cafenc.c | 8 ++---
libavformat/concat.c | 4 +--
libavformat/demux.h | 2 +-
libavformat/hls.c | 4 +--
libavformat/imf.h | 2 +-
libavformat/imf_cpl.c | 16 ++++-----
libavformat/imfdec.c | 10 +++---
libavformat/internal.h | 2 +-
libavformat/isom.h | 4 +--
libavformat/matroskadec.c | 8 ++---
libavformat/mms.c | 6 ++--
libavformat/mms.h | 2 +-
libavformat/mov.c | 68 +++++++++++++++++++++------------------
libavformat/mxg.c | 8 ++---
libavformat/seek.c | 10 +++---
libavformat/spdifenc.c | 5 +--
libavformat/subtitles.c | 4 +--
libavformat/subtitles.h | 2 +-
libavformat/wavenc.c | 4 +--
libavformat/wtvdec.c | 2 +-
23 files changed, 94 insertions(+), 89 deletions(-)
diff --git a/libavformat/avc.c b/libavformat/avc.c
index b0ceb1d2d8..cb5357fa4a 100644
--- a/libavformat/avc.c
+++ b/libavformat/avc.c
@@ -92,8 +92,8 @@ static int avc_parse_nal_units(AVIOContext *pb, NALUList *list,
} else if (list->nb_nalus >= nalu_limit) {
return AVERROR(ERANGE);
} else {
- NALU *tmp = av_fast_realloc(list->nalus, &list->nalus_array_size,
- (list->nb_nalus + 1) * sizeof(*list->nalus));
+ NALU *tmp = av_realloc_reuse(list->nalus, &list->nalus_array_size,
+ (list->nb_nalus + 1) * sizeof(*list->nalus));
if (!tmp)
return AVERROR(ENOMEM);
list->nalus = tmp;
diff --git a/libavformat/avc.h b/libavformat/avc.h
index 0ce95c194e..121155e0ba 100644
--- a/libavformat/avc.h
+++ b/libavformat/avc.h
@@ -33,7 +33,7 @@ typedef struct NALU {
typedef struct NALUList {
NALU *nalus;
- unsigned nalus_array_size;
+ size_t nalus_array_size;
unsigned nb_nalus; ///< valid entries in nalus
} NALUList;
diff --git a/libavformat/bethsoftvid.c b/libavformat/bethsoftvid.c
index cfb7d57332..1620fb5eaf 100644
--- a/libavformat/bethsoftvid.c
+++ b/libavformat/bethsoftvid.c
@@ -108,7 +108,7 @@ static int read_frame(BVID_DemuxContext *vid, AVIOContext *pb, AVPacket *pkt,
int code;
int bytes_copied = 0;
int position, duration, npixels;
- unsigned int vidbuf_capacity;
+ size_t vidbuf_capacity;
int ret = 0;
AVStream *st;
@@ -153,8 +153,8 @@ static int read_frame(BVID_DemuxContext *vid, AVIOContext *pb, AVPacket *pkt,
}
do{
- uint8_t *tmp = av_fast_realloc(vidbuf_start, &vidbuf_capacity,
- vidbuf_nbytes + BUFFER_PADDING_SIZE);
+ uint8_t *tmp = av_realloc_reuse(vidbuf_start, &vidbuf_capacity,
+ vidbuf_nbytes + BUFFER_PADDING_SIZE);
if (!tmp) {
ret = AVERROR(ENOMEM);
goto fail;
diff --git a/libavformat/cafenc.c b/libavformat/cafenc.c
index b90811d46f..d8d98fc5aa 100644
--- a/libavformat/cafenc.c
+++ b/libavformat/cafenc.c
@@ -31,7 +31,7 @@
typedef struct {
int64_t data;
- int size_buffer_size;
+ size_t size_buffer_size;
int size_entries_used;
int packets;
} CAFContext;
@@ -226,9 +226,9 @@ static int caf_write_packet(AVFormatContext *s, AVPacket *pkt)
if (alloc_size < 0)
return AVERROR(ERANGE);
- pkt_sizes = av_fast_realloc(st->priv_data,
- &caf->size_buffer_size,
- alloc_size);
+ pkt_sizes = av_realloc_reuse(st->priv_data,
+ &caf->size_buffer_size,
+ alloc_size);
if (!pkt_sizes)
return AVERROR(ENOMEM);
st->priv_data = pkt_sizes;
diff --git a/libavformat/concat.c b/libavformat/concat.c
index dc0985e40c..60c0ae158c 100644
--- a/libavformat/concat.c
+++ b/libavformat/concat.c
@@ -214,7 +214,7 @@ static av_cold int concatf_open(URLContext *h, const char *uri, int flags)
AVIOContext *in = NULL;
const char *cursor;
int64_t total_size = 0;
- unsigned int nodes_size = 0;
+ size_t nodes_size = 0;
size_t i = 0;
int err;
@@ -280,7 +280,7 @@ static av_cold int concatf_open(URLContext *h, const char *uri, int flags)
break;
}
- nodes = av_fast_realloc(data->nodes, &nodes_size, sizeof(*nodes) * len);
+ nodes = av_realloc_reuse(data->nodes, &nodes_size, sizeof(*nodes) * len);
if (!nodes) {
ffurl_close(uc);
err = AVERROR(ENOMEM);
diff --git a/libavformat/demux.h b/libavformat/demux.h
index 1f57e062f6..af461e5ebd 100644
--- a/libavformat/demux.h
+++ b/libavformat/demux.h
@@ -135,7 +135,7 @@ int ff_index_search_timestamp(const AVIndexEntry *entries, int nb_entries,
*/
int ff_add_index_entry(AVIndexEntry **index_entries,
int *nb_index_entries,
- unsigned int *index_entries_allocated_size,
+ size_t *index_entries_allocated_size,
int64_t pos, int64_t timestamp, int size, int distance, int flags);
void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance);
diff --git a/libavformat/hls.c b/libavformat/hls.c
index e622425e80..cb5f0ded7c 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -148,7 +148,7 @@ struct playlist {
int64_t id3_mpegts_timestamp; /* in mpegts tb */
int64_t id3_offset; /* in stream original tb */
uint8_t* id3_buf; /* temp buffer for id3 parsing */
- unsigned int id3_buf_size;
+ size_t id3_buf_size;
AVDictionary *id3_initial; /* data from first id3 tag */
int id3_found; /* ID3 tag found at some point */
int id3_changed; /* ID3 tag data has changed at some point */
@@ -1225,7 +1225,7 @@ static void intercept_id3(struct playlist *pls, uint8_t *buf,
* both of those cases together with the possibility for multiple
* tags would make the handling a bit complex.
*/
- pls->id3_buf = av_fast_realloc(pls->id3_buf, &pls->id3_buf_size, id3_buf_pos + taglen);
+ pls->id3_buf = av_realloc_reuse(pls->id3_buf, &pls->id3_buf_size, id3_buf_pos + taglen);
if (!pls->id3_buf)
break;
memcpy(pls->id3_buf + id3_buf_pos, buf, tag_got_bytes);
diff --git a/libavformat/imf.h b/libavformat/imf.h
index 4271cd9582..a599e42d58 100644
--- a/libavformat/imf.h
+++ b/libavformat/imf.h
@@ -111,7 +111,7 @@ typedef struct FFIMFTrackFileVirtualTrack {
FFIMFBaseVirtualTrack base;
uint32_t resource_count; /**< Number of Resource elements present in the Virtual Track */
FFIMFTrackFileResource *resources; /**< Resource elements of the Virtual Track */
- unsigned int resources_alloc_sz; /**< Size of the resources buffer */
+ size_t resources_alloc_sz; /**< Size of the resources buffer */
} FFIMFTrackFileVirtualTrack;
/**
diff --git a/libavformat/imf_cpl.c b/libavformat/imf_cpl.c
index 474db6b7f5..7ce82b485e 100644
--- a/libavformat/imf_cpl.c
+++ b/libavformat/imf_cpl.c
@@ -495,10 +495,10 @@ static int push_main_audio_sequence(xmlNodePtr audio_sequence_elem, FFIMFCPL *cp
if (resource_elem_count > UINT32_MAX
|| vt->resource_count > UINT32_MAX - resource_elem_count)
return AVERROR(ENOMEM);
- tmp = av_fast_realloc(vt->resources,
- &vt->resources_alloc_sz,
- (vt->resource_count + resource_elem_count)
- * sizeof(FFIMFTrackFileResource));
+ tmp = av_realloc_reuse(vt->resources,
+ &vt->resources_alloc_sz,
+ (vt->resource_count + resource_elem_count)
+ * sizeof(FFIMFTrackFileResource));
if (!tmp) {
av_log(NULL, AV_LOG_ERROR, "Cannot allocate Main Audio Resources\n");
return AVERROR(ENOMEM);
@@ -577,10 +577,10 @@ static int push_main_image_2d_sequence(xmlNodePtr image_sequence_elem, FFIMFCPL
|| (cpl->main_image_2d_track->resource_count + resource_elem_count)
> INT_MAX / sizeof(FFIMFTrackFileResource))
return AVERROR(ENOMEM);
- tmp = av_fast_realloc(cpl->main_image_2d_track->resources,
- &cpl->main_image_2d_track->resources_alloc_sz,
- (cpl->main_image_2d_track->resource_count + resource_elem_count)
- * sizeof(FFIMFTrackFileResource));
+ tmp = av_realloc_reuse(cpl->main_image_2d_track->resources,
+ &cpl->main_image_2d_track->resources_alloc_sz,
+ (cpl->main_image_2d_track->resource_count + resource_elem_count)
+ * sizeof(FFIMFTrackFileResource));
if (!tmp) {
av_log(NULL, AV_LOG_ERROR, "Cannot allocate Main Image Resources\n");
return AVERROR(ENOMEM);
diff --git a/libavformat/imfdec.c b/libavformat/imfdec.c
index 4e60dcc4ba..38e5aa8a56 100644
--- a/libavformat/imfdec.c
+++ b/libavformat/imfdec.c
@@ -109,7 +109,7 @@ typedef struct IMFVirtualTrackPlaybackCtx {
AVRational current_timestamp; /**< Current temporal position */
AVRational duration; /**< Overall duration */
uint32_t resource_count; /**< Number of resources (<= INT32_MAX) */
- unsigned int resources_alloc_sz; /**< Size of the buffer holding the resource */
+ size_t resources_alloc_sz; /**< Size of the buffer holding the resource */
IMFVirtualTrackResourcePlaybackCtx *resources; /**< Buffer holding the resources */
int32_t current_resource_index; /**< Index of the current resource in resources,
or < 0 if a current resource has yet to be selected */
@@ -473,10 +473,10 @@ static int open_track_file_resource(AVFormatContext *s,
|| (track->resource_count + track_file_resource->base.repeat_count)
> INT_MAX / sizeof(IMFVirtualTrackResourcePlaybackCtx))
return AVERROR(ENOMEM);
- tmp = av_fast_realloc(track->resources,
- &track->resources_alloc_sz,
- (track->resource_count + track_file_resource->base.repeat_count)
- * sizeof(IMFVirtualTrackResourcePlaybackCtx));
+ tmp = av_realloc_reuse(track->resources,
+ &track->resources_alloc_sz,
+ (track->resource_count + track_file_resource->base.repeat_count)
+ * sizeof(IMFVirtualTrackResourcePlaybackCtx));
if (!tmp)
return AVERROR(ENOMEM);
track->resources = tmp;
diff --git a/libavformat/internal.h b/libavformat/internal.h
index ce837fefc7..0be3517ba1 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -251,7 +251,7 @@ typedef struct FFStream {
AVIndexEntry *index_entries; /**< Only used if the format does not
support seeking natively. */
int nb_index_entries;
- unsigned int index_entries_allocated_size;
+ size_t index_entries_allocated_size;
int64_t interleaver_chunk_size;
int64_t interleaver_chunk_duration;
diff --git a/libavformat/isom.h b/libavformat/isom.h
index 64fb7065d5..c150c29143 100644
--- a/libavformat/isom.h
+++ b/libavformat/isom.h
@@ -151,7 +151,7 @@ typedef struct MOVFragmentIndexItem {
} MOVFragmentIndexItem;
typedef struct MOVFragmentIndex {
- int allocated_size;
+ size_t allocated_size;
int complete;
int current;
int nb_items;
@@ -175,7 +175,7 @@ typedef struct MOVStreamContext {
unsigned int sdtp_count;
uint8_t *sdtp_data;
unsigned int ctts_count;
- unsigned int ctts_allocated_size;
+ size_t ctts_allocated_size;
MOVCtts *ctts_data;
unsigned int stsc_count;
MOVStsc *stsc_data;
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index d582f566a2..53311294f2 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -129,7 +129,7 @@ typedef const struct EbmlSyntax {
typedef struct EbmlList {
int nb_elem;
- unsigned int alloc_elem_size;
+ size_t alloc_elem_size;
void *elem;
} EbmlList;
@@ -1315,9 +1315,9 @@ static int ebml_parse(MatroskaDemuxContext *matroska,
if ((unsigned)list->nb_elem + 1 >= UINT_MAX / syntax->list_elem_size)
return AVERROR(ENOMEM);
- newelem = av_fast_realloc(list->elem,
- &list->alloc_elem_size,
- (list->nb_elem + 1) * syntax->list_elem_size);
+ newelem = av_realloc_reuse(list->elem,
+ &list->alloc_elem_size,
+ (list->nb_elem + 1) * syntax->list_elem_size);
if (!newelem)
return AVERROR(ENOMEM);
list->elem = newelem;
diff --git a/libavformat/mms.c b/libavformat/mms.c
index 16babc0954..8850d80a2f 100644
--- a/libavformat/mms.c
+++ b/libavformat/mms.c
@@ -102,9 +102,9 @@ int ff_mms_asf_header_parser(MMSContext *mms)
//Please see function send_stream_selection_request().
if (mms->stream_num < MMS_MAX_STREAMS &&
46 + mms->stream_num * 6 < sizeof(mms->out_buffer)) {
- mms->streams = av_fast_realloc(mms->streams,
- &mms->nb_streams_allocated,
- (mms->stream_num + 1) * sizeof(MMSStream));
+ mms->streams = av_realloc_reuse(mms->streams,
+ &mms->nb_streams_allocated,
+ (mms->stream_num + 1) * sizeof(MMSStream));
if (!mms->streams)
return AVERROR(ENOMEM);
mms->streams[mms->stream_num].id = stream_id;
diff --git a/libavformat/mms.h b/libavformat/mms.h
index 57e3d7e18a..c53b63e54f 100644
--- a/libavformat/mms.h
+++ b/libavformat/mms.h
@@ -54,7 +54,7 @@ typedef struct MMSContext {
/*@}*/
int stream_num; ///< stream numbers.
- unsigned int nb_streams_allocated; ///< allocated size of streams
+ size_t nb_streams_allocated; ///< allocated size of streams
} MMSContext;
int ff_mms_asf_header_parser(MMSContext * mms);
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 1f436e21d6..5c69fec4b2 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -81,7 +81,7 @@ typedef struct MOVParseTableEntry {
static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom);
static int mov_read_mfra(MOVContext *c, AVIOContext *f);
-static int64_t add_ctts_entry(MOVCtts** ctts_data, unsigned int* ctts_count, unsigned int* allocated_size,
+static int64_t add_ctts_entry(MOVCtts** ctts_data, unsigned int* ctts_count, size_t* allocated_size,
int count, int duration);
static int mov_metadata_track_or_disc_number(MOVContext *c, AVIOContext *pb,
@@ -1347,10 +1347,10 @@ static int update_frag_index(MOVContext *c, int64_t offset)
// offset is not yet in frag index.
// Insert new item at index (sorted by moof offset)
- item = av_fast_realloc(c->frag_index.item,
- &c->frag_index.allocated_size,
- (c->frag_index.nb_items + 1) *
- sizeof(*c->frag_index.item));
+ item = av_realloc_reuse(c->frag_index.item,
+ &c->frag_index.allocated_size,
+ (c->frag_index.nb_items + 1) *
+ sizeof(*c->frag_index.item));
if (!item)
return -1;
c->frag_index.item = item;
@@ -2975,7 +2975,8 @@ static int mov_read_stts(MOVContext *c, AVIOContext *pb, MOVAtom atom)
{
AVStream *st;
MOVStreamContext *sc;
- unsigned int i, entries, alloc_size = 0;
+ unsigned int i, entries;
+ size_t alloc_size = 0;
int64_t duration = 0;
int64_t total_sample_count = 0;
int64_t current_dts = 0;
@@ -3004,8 +3005,8 @@ static int mov_read_stts(MOVContext *c, AVIOContext *pb, MOVAtom atom)
unsigned int sample_duration;
unsigned int sample_count;
unsigned int min_entries = FFMIN(FFMAX(i + 1, 1024 * 1024), entries);
- MOVStts *stts_data = av_fast_realloc(sc->stts_data, &alloc_size,
- min_entries * sizeof(*sc->stts_data));
+ MOVStts *stts_data = av_realloc_reuse(sc->stts_data, &alloc_size,
+ min_entries * sizeof(*sc->stts_data));
if (!stts_data) {
av_freep(&sc->stts_data);
sc->stts_count = 0;
@@ -3153,7 +3154,7 @@ static int mov_read_ctts(MOVContext *c, AVIOContext *pb, MOVAtom atom)
if (entries >= UINT_MAX / sizeof(*sc->ctts_data))
return AVERROR_INVALIDDATA;
av_freep(&sc->ctts_data);
- sc->ctts_data = av_fast_realloc(NULL, &sc->ctts_allocated_size, entries * sizeof(*sc->ctts_data));
+ sc->ctts_data = av_realloc_reuse(NULL, &sc->ctts_allocated_size, entries * sizeof(*sc->ctts_data));
if (!sc->ctts_data)
return AVERROR(ENOMEM);
@@ -3471,9 +3472,9 @@ static int64_t add_index_entry(AVStream *st, int64_t pos, int64_t timestamp,
if (sti->nb_index_entries + 1U >= UINT_MAX / sizeof(AVIndexEntry))
return -1;
- entries = av_fast_realloc(sti->index_entries,
- &sti->index_entries_allocated_size,
- requested_size);
+ entries = av_realloc_reuse(sti->index_entries,
+ &sti->index_entries_allocated_size,
+ requested_size);
if (!entries)
return -1;
@@ -3510,7 +3511,7 @@ static void fix_index_entry_timestamps(AVStream* st, int end_index, int64_t end_
* Append a new ctts entry to ctts_data.
* Returns the new ctts_count if successful, else returns -1.
*/
-static int64_t add_ctts_entry(MOVCtts** ctts_data, unsigned int* ctts_count, unsigned int* allocated_size,
+static int64_t add_ctts_entry(MOVCtts** ctts_data, unsigned int* ctts_count, size_t* allocated_size,
int count, int duration)
{
MOVCtts *ctts_buf_new;
@@ -3523,7 +3524,7 @@ static int64_t add_ctts_entry(MOVCtts** ctts_data, unsigned int* ctts_count, uns
if ((unsigned)(*ctts_count) >= UINT_MAX / sizeof(MOVCtts) - 1)
return -1;
- ctts_buf_new = av_fast_realloc(*ctts_data, allocated_size, requested_size);
+ ctts_buf_new = av_realloc_reuse(*ctts_data, allocated_size, requested_size);
if (!ctts_buf_new)
return -1;
@@ -4114,8 +4115,8 @@ static void mov_build_index(MOVContext *mov, AVStream *st)
return;
sc->ctts_count = 0;
sc->ctts_allocated_size = 0;
- sc->ctts_data = av_fast_realloc(NULL, &sc->ctts_allocated_size,
- sc->sample_count * sizeof(*sc->ctts_data));
+ sc->ctts_data = av_realloc_reuse(NULL, &sc->ctts_allocated_size,
+ sc->sample_count * sizeof(*sc->ctts_data));
if (!sc->ctts_data) {
av_free(ctts_data_old);
return;
@@ -5177,7 +5178,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
return 0;
requested_size = (sti->nb_index_entries + entries) * sizeof(AVIndexEntry);
- new_entries = av_fast_realloc(sti->index_entries,
+ new_entries = av_realloc_reuse(sti->index_entries,
&sti->index_entries_allocated_size,
requested_size);
if (!new_entries)
@@ -5186,8 +5187,8 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
requested_size = (sti->nb_index_entries + entries) * sizeof(*sc->ctts_data);
old_ctts_allocated_size = sc->ctts_allocated_size;
- ctts_data = av_fast_realloc(sc->ctts_data, &sc->ctts_allocated_size,
- requested_size);
+ ctts_data = av_realloc_reuse(sc->ctts_data, &sc->ctts_allocated_size,
+ requested_size);
if (!ctts_data)
return AVERROR(ENOMEM);
sc->ctts_data = ctts_data;
@@ -6368,7 +6369,8 @@ static int mov_read_senc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
MOVEncryptionIndex *encryption_index;
MOVStreamContext *sc;
int use_subsamples, ret;
- unsigned int sample_count, i, alloc_size = 0;
+ unsigned int sample_count, i;
+ size_t alloc_size = 0;
ret = get_current_encryption_info(c, &encryption_index, &sc);
if (ret != 1)
@@ -6389,8 +6391,8 @@ static int mov_read_senc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
for (i = 0; i < sample_count; i++) {
unsigned int min_samples = FFMIN(FFMAX(i + 1, 1024 * 1024), sample_count);
- encrypted_samples = av_fast_realloc(encryption_index->encrypted_samples, &alloc_size,
- min_samples * sizeof(*encrypted_samples));
+ encrypted_samples = av_realloc_reuse(encryption_index->encrypted_samples, &alloc_size,
+ min_samples * sizeof(*encrypted_samples));
if (encrypted_samples) {
encryption_index->encrypted_samples = encrypted_samples;
@@ -6424,7 +6426,7 @@ static int mov_parse_auxiliary_info(MOVContext *c, MOVStreamContext *sc, AVIOCon
int64_t prev_pos;
size_t sample_count, sample_info_size, i;
int ret = 0;
- unsigned int alloc_size = 0;
+ size_t alloc_size = 0;
if (encryption_index->nb_encrypted_samples)
return 0;
@@ -6445,8 +6447,8 @@ static int mov_parse_auxiliary_info(MOVContext *c, MOVStreamContext *sc, AVIOCon
for (i = 0; i < sample_count && !pb->eof_reached; i++) {
unsigned int min_samples = FFMIN(FFMAX(i + 1, 1024 * 1024), sample_count);
- encrypted_samples = av_fast_realloc(encryption_index->encrypted_samples, &alloc_size,
- min_samples * sizeof(*encrypted_samples));
+ encrypted_samples = av_realloc_reuse(encryption_index->encrypted_samples, &alloc_size,
+ min_samples * sizeof(*encrypted_samples));
if (!encrypted_samples) {
ret = AVERROR(ENOMEM);
goto finish;
@@ -6489,11 +6491,12 @@ static int mov_try_read_block(AVIOContext *pb, size_t size, uint8_t **data)
{
const unsigned int block_size = 1024 * 1024;
uint8_t *buffer = NULL;
- unsigned int alloc_size = 0, offset = 0;
+ size_t alloc_size = 0;
+ unsigned int offset = 0;
while (offset < size) {
unsigned int new_size =
alloc_size >= INT_MAX - block_size ? INT_MAX : alloc_size + block_size;
- uint8_t *new_buffer = av_fast_realloc(buffer, &alloc_size, new_size);
+ uint8_t *new_buffer = av_realloc_reuse(buffer, &alloc_size, new_size);
unsigned int to_read = FFMIN(size, alloc_size) - offset;
if (!new_buffer) {
av_free(buffer);
@@ -6591,7 +6594,7 @@ static int mov_read_saio(MOVContext *c, AVIOContext *pb, MOVAtom atom)
MOVStreamContext *sc;
int i, ret;
unsigned int version, entry_count, aux_info_type, aux_info_param;
- unsigned int alloc_size = 0;
+ size_t alloc_size = 0;
ret = get_current_encryption_info(c, &encryption_index, &sc);
if (ret != 1)
@@ -6645,7 +6648,7 @@ static int mov_read_saio(MOVContext *c, AVIOContext *pb, MOVAtom atom)
for (i = 0; i < entry_count && !pb->eof_reached; i++) {
unsigned int min_offsets = FFMIN(FFMAX(i + 1, 1024), entry_count);
- auxiliary_offsets = av_fast_realloc(
+ auxiliary_offsets = av_realloc_reuse(
encryption_index->auxiliary_offsets, &alloc_size,
min_offsets * sizeof(*auxiliary_offsets));
if (!auxiliary_offsets) {
@@ -6687,7 +6690,8 @@ static int mov_read_pssh(MOVContext *c, AVIOContext *pb, MOVAtom atom)
uint8_t *side_data, *extra_data, *old_side_data;
size_t side_data_size, old_side_data_size;
int ret = 0;
- unsigned int version, kid_count, extra_data_size, alloc_size = 0;
+ unsigned int version, kid_count, extra_data_size;
+ size_t alloc_size = 0;
if (c->fc->nb_streams < 1)
return 0;
@@ -6715,8 +6719,8 @@ static int mov_read_pssh(MOVContext *c, AVIOContext *pb, MOVAtom atom)
for (unsigned int i = 0; i < kid_count && !pb->eof_reached; i++) {
unsigned int min_kid_count = FFMIN(FFMAX(i + 1, 1024), kid_count);
- key_ids = av_fast_realloc(info->key_ids, &alloc_size,
- min_kid_count * sizeof(*key_ids));
+ key_ids = av_realloc_reuse(info->key_ids, &alloc_size,
+ min_kid_count * sizeof(*key_ids));
if (!key_ids) {
ret = AVERROR(ENOMEM);
goto finish;
diff --git a/libavformat/mxg.c b/libavformat/mxg.c
index b160ccb9f9..bf0732d5fc 100644
--- a/libavformat/mxg.c
+++ b/libavformat/mxg.c
@@ -34,7 +34,7 @@ typedef struct MXGContext {
uint8_t *buffer;
uint8_t *buffer_ptr;
uint8_t *soi_ptr;
- unsigned int buffer_size;
+ size_t buffer_size;
int64_t dts;
unsigned int cache_size;
} MXGContext;
@@ -108,9 +108,9 @@ static int mxg_update_cache(AVFormatContext *s, unsigned int cache_size)
if (current_pos > current_pos + cache_size)
return AVERROR(ENOMEM);
soi_pos = mxg->soi_ptr - mxg->buffer;
- buffer = av_fast_realloc(mxg->buffer, &mxg->buffer_size,
- current_pos + cache_size +
- AV_INPUT_BUFFER_PADDING_SIZE);
+ buffer = av_realloc_reuse(mxg->buffer, &mxg->buffer_size,
+ current_pos + cache_size +
+ AV_INPUT_BUFFER_PADDING_SIZE);
if (!buffer)
return AVERROR(ENOMEM);
mxg->buffer = buffer;
diff --git a/libavformat/seek.c b/libavformat/seek.c
index a236e285c0..f4dd44d3ed 100644
--- a/libavformat/seek.c
+++ b/libavformat/seek.c
@@ -61,7 +61,7 @@ void ff_reduce_index(AVFormatContext *s, int stream_index)
int ff_add_index_entry(AVIndexEntry **index_entries,
int *nb_index_entries,
- unsigned int *index_entries_allocated_size,
+ size_t *index_entries_allocated_size,
int64_t pos, int64_t timestamp,
int size, int distance, int flags)
{
@@ -80,10 +80,10 @@ int ff_add_index_entry(AVIndexEntry **index_entries,
if (is_relative(timestamp)) //FIXME this maintains previous behavior but we should shift by the correct offset once known
timestamp -= RELATIVE_TS_BASE;
- entries = av_fast_realloc(*index_entries,
- index_entries_allocated_size,
- (*nb_index_entries + 1) *
- sizeof(AVIndexEntry));
+ entries = av_realloc_reuse(*index_entries,
+ index_entries_allocated_size,
+ (*nb_index_entries + 1) *
+ sizeof(AVIndexEntry));
if (!entries)
return -1;
diff --git a/libavformat/spdifenc.c b/libavformat/spdifenc.c
index 2861f828b4..7fb2d3b417 100644
--- a/libavformat/spdifenc.c
+++ b/libavformat/spdifenc.c
@@ -70,7 +70,8 @@ typedef struct IEC61937Context {
int extra_bswap; ///< extra bswap for payload (for LE DTS => standard BE DTS)
uint8_t *hd_buf[2]; ///< allocated buffers to concatenate hd audio frames
- int hd_buf_size; ///< size of the hd audio buffer (eac3, dts4)
+ size_t hd_buf_size_s; ///< size of the hd audio buffer (eac3)
+ int hd_buf_size; ///< size of the hd audio buffer (dts4)
int hd_buf_count; ///< number of frames in the hd audio buffer (eac3)
int hd_buf_filled; ///< amount of bytes in the hd audio buffer (eac3, truehd)
int hd_buf_idx; ///< active hd buffer index (truehd)
@@ -128,7 +129,7 @@ static int spdif_header_eac3(AVFormatContext *s, AVPacket *pkt)
if (bsid > 10 && (pkt->data[4] & 0xc0) != 0xc0) /* fscod */
repeat = eac3_repeat[(pkt->data[4] & 0x30) >> 4]; /* numblkscod */
- tmp = av_fast_realloc(ctx->hd_buf[0], &ctx->hd_buf_size, ctx->hd_buf_filled + pkt->size);
+ tmp = av_realloc_reuse(ctx->hd_buf[0], &ctx->hd_buf_size_s, ctx->hd_buf_filled + pkt->size);
if (!tmp)
return AVERROR(ENOMEM);
ctx->hd_buf[0] = tmp;
diff --git a/libavformat/subtitles.c b/libavformat/subtitles.c
index 3ba5e2b217..0ab2fbe582 100644
--- a/libavformat/subtitles.c
+++ b/libavformat/subtitles.c
@@ -125,8 +125,8 @@ AVPacket *ff_subtitles_queue_insert(FFDemuxSubtitlesQueue *q,
if (q->nb_subs >= INT_MAX/sizeof(*q->subs) - 1)
return NULL;
- subs = av_fast_realloc(q->subs, &q->allocated_size,
- (q->nb_subs + 1) * sizeof(*q->subs));
+ subs = av_realloc_reuse(q->subs, &q->allocated_size,
+ (q->nb_subs + 1) * sizeof(*q->subs));
if (!subs)
return NULL;
q->subs = subs;
diff --git a/libavformat/subtitles.h b/libavformat/subtitles.h
index 4460efacf3..7a1f7fc339 100644
--- a/libavformat/subtitles.h
+++ b/libavformat/subtitles.h
@@ -102,8 +102,8 @@ void ff_text_read(FFTextReader *r, char *buf, size_t size);
typedef struct {
AVPacket **subs; ///< array of subtitles packets
+ size_t allocated_size; ///< allocated size for subs
int nb_subs; ///< number of subtitles packets
- int allocated_size; ///< allocated size for subs
int current_sub_idx; ///< current position for the read packet callback
enum sub_sort sort; ///< sort method to use when finalizing subtitles
int keep_duplicates; ///< set to 1 to keep duplicated subtitle events
diff --git a/libavformat/wavenc.c b/libavformat/wavenc.c
index b08f862cf9..92372e7ccf 100644
--- a/libavformat/wavenc.c
+++ b/libavformat/wavenc.c
@@ -72,7 +72,7 @@ typedef struct WAVMuxContext {
int64_t maxpts;
int16_t *peak_maxpos, *peak_maxneg;
uint32_t peak_num_frames;
- unsigned peak_outbuf_size;
+ size_t peak_outbuf_size;
uint32_t peak_outbuf_bytes;
unsigned size_increment;
uint8_t *peak_output;
@@ -200,7 +200,7 @@ static int peak_write_frame(AVFormatContext *s)
wav->write_peak = PEAK_OFF;
return AVERROR(ERANGE);
}
- tmp = av_fast_realloc(wav->peak_output, &wav->peak_outbuf_size, new_size);
+ tmp = av_realloc_reuse(wav->peak_output, &wav->peak_outbuf_size, new_size);
if (!tmp) {
wav->write_peak = PEAK_OFF;
return AVERROR(ENOMEM);
diff --git a/libavformat/wtvdec.c b/libavformat/wtvdec.c
index 98128b7201..3f17715385 100644
--- a/libavformat/wtvdec.c
+++ b/libavformat/wtvdec.c
@@ -331,7 +331,7 @@ typedef struct WtvContext {
start of the 'timeline' file, not the file system (AVFormatContext->pb) */
AVIndexEntry *index_entries;
int nb_index_entries;
- unsigned int index_entries_allocated_size;
+ size_t index_entries_allocated_size;
} WtvContext;
/* WTV GUIDs */
--
2.35.1
More information about the ffmpeg-devel
mailing list