[FFmpeg-devel] [PATCH 3/6] lavc: replace av_fast_realloc() with av_realloc_reuse()

Anton Khirnov anton at khirnov.net
Wed Sep 28 13:48:51 EEST 2022


---
 libavcodec/4xm.c               |  6 +++---
 libavcodec/audio_frame_queue.c |  3 ++-
 libavcodec/audio_frame_queue.h |  2 +-
 libavcodec/av1_parse.c         |  2 +-
 libavcodec/av1_parse.h         |  2 +-
 libavcodec/dirac_parser.c      | 10 +++++-----
 libavcodec/dxva2_av1.c         |  6 +++---
 libavcodec/flac_parser.c       |  6 +++---
 libavcodec/h2645_parse.c       |  2 +-
 libavcodec/h2645_parse.h       |  2 +-
 libavcodec/libaomenc.c         | 10 +++++-----
 libavcodec/librav1e.c          |  5 +++--
 libavcodec/libtheoraenc.c      |  5 +++--
 libavcodec/libvpxenc.c         | 10 +++++-----
 libavcodec/libx264.c           |  5 +++--
 libavcodec/libx265.c           |  8 ++++----
 libavcodec/movtextenc.c        |  8 ++++----
 libavcodec/nvdec.c             |  4 ++--
 libavcodec/nvdec.h             |  4 ++--
 libavcodec/nvdec_av1.c         |  8 ++++----
 libavcodec/nvdec_h264.c        |  8 ++++----
 libavcodec/nvdec_hevc.c        |  8 ++++----
 libavcodec/nvenc.c             | 18 +++++++++---------
 libavcodec/nvenc.h             |  2 +-
 libavcodec/parser.c            | 12 ++++++------
 libavcodec/parser.h            |  2 +-
 libavcodec/shorten.c           | 10 +++++-----
 libavcodec/vdpau.c             |  4 ++--
 libavcodec/vdpau_internal.h    |  2 +-
 libavcodec/videotoolbox.c      | 12 ++++++------
 libavcodec/vt_internal.h       |  2 +-
 31 files changed, 96 insertions(+), 92 deletions(-)

diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c
index 5636fdef2d..e523a6ea96 100644
--- a/libavcodec/4xm.c
+++ b/libavcodec/4xm.c
@@ -129,7 +129,7 @@ static VLC block_type_vlc[2][4];
 
 
 typedef struct CFrameBuffer {
-    unsigned int allocated_size;
+    size_t allocated_size;
     unsigned int size;
     int id;
     uint8_t *data;
@@ -895,8 +895,8 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *picture,
         if (data_size > UINT_MAX -  cfrm->size - AV_INPUT_BUFFER_PADDING_SIZE)
             return AVERROR_INVALIDDATA;
 
-        cfrm->data = av_fast_realloc(cfrm->data, &cfrm->allocated_size,
-                                     cfrm->size + data_size + AV_INPUT_BUFFER_PADDING_SIZE);
+        cfrm->data = av_realloc_reuse(cfrm->data, &cfrm->allocated_size,
+                                      cfrm->size + data_size + AV_INPUT_BUFFER_PADDING_SIZE);
         // explicit check needed as memcpy below might not catch a NULL
         if (!cfrm->data) {
             av_log(f->avctx, AV_LOG_ERROR, "realloc failure\n");
diff --git a/libavcodec/audio_frame_queue.c b/libavcodec/audio_frame_queue.c
index 08b4b368c7..bd92fe23c0 100644
--- a/libavcodec/audio_frame_queue.c
+++ b/libavcodec/audio_frame_queue.c
@@ -43,7 +43,8 @@ void ff_af_queue_close(AudioFrameQueue *afq)
 
 int ff_af_queue_add(AudioFrameQueue *afq, const AVFrame *f)
 {
-    AudioFrame *new = av_fast_realloc(afq->frames, &afq->frame_alloc, sizeof(*afq->frames)*(afq->frame_count+1));
+    AudioFrame *new = av_realloc_reuse(afq->frames, &afq->frame_alloc,
+                                       sizeof(*afq->frames)*(afq->frame_count+1));
     if(!new)
         return AVERROR(ENOMEM);
     afq->frames = new;
diff --git a/libavcodec/audio_frame_queue.h b/libavcodec/audio_frame_queue.h
index d8076eae54..8aa82ba5cf 100644
--- a/libavcodec/audio_frame_queue.h
+++ b/libavcodec/audio_frame_queue.h
@@ -35,7 +35,7 @@ typedef struct AudioFrameQueue {
     int remaining_samples;
     AudioFrame *frames;
     unsigned frame_count;
-    unsigned frame_alloc;
+    size_t frame_alloc;
 } AudioFrameQueue;
 
 /**
diff --git a/libavcodec/av1_parse.c b/libavcodec/av1_parse.c
index 59ea0bc6e7..baab46016b 100644
--- a/libavcodec/av1_parse.c
+++ b/libavcodec/av1_parse.c
@@ -70,7 +70,7 @@ int ff_av1_packet_split(AV1Packet *pkt, const uint8_t *buf, int length, void *lo
 
             if (new_size >= INT_MAX / sizeof(*tmp))
                 return AVERROR(ENOMEM);
-            tmp = av_fast_realloc(pkt->obus, &pkt->obus_allocated_size, new_size * sizeof(*tmp));
+            tmp = av_realloc_reuse(pkt->obus, &pkt->obus_allocated_size, new_size * sizeof(*tmp));
             if (!tmp)
                 return AVERROR(ENOMEM);
 
diff --git a/libavcodec/av1_parse.h b/libavcodec/av1_parse.h
index f4a5d2830e..20ce94105d 100644
--- a/libavcodec/av1_parse.h
+++ b/libavcodec/av1_parse.h
@@ -63,7 +63,7 @@ typedef struct AV1Packet {
     AV1OBU *obus;
     int nb_obus;
     int obus_allocated;
-    unsigned obus_allocated_size;
+    size_t obus_allocated_size;
 } AV1Packet;
 
 /**
diff --git a/libavcodec/dirac_parser.c b/libavcodec/dirac_parser.c
index 912f594243..1de08e43db 100644
--- a/libavcodec/dirac_parser.c
+++ b/libavcodec/dirac_parser.c
@@ -46,7 +46,7 @@ typedef struct DiracParseContext {
     int sync_offset;
     int header_bytes_needed;
     int overread_index;
-    int buffer_size;
+    size_t buffer_size;
     int index;
     uint8_t *buffer;
     int dirac_unit_size;
@@ -156,8 +156,8 @@ static int dirac_combine_frame(AVCodecParserContext *s, AVCodecContext *avctx,
     if (next == -1) {
         /* Found a possible frame start but not a frame end */
         void *new_buffer =
-            av_fast_realloc(pc->buffer, &pc->buffer_size,
-                            pc->index + (*buf_size - pc->sync_offset));
+            av_realloc_reuse(pc->buffer, &pc->buffer_size,
+                             pc->index + (*buf_size - pc->sync_offset));
         if (!new_buffer)
             return AVERROR(ENOMEM);
         pc->buffer = new_buffer;
@@ -168,8 +168,8 @@ static int dirac_combine_frame(AVCodecParserContext *s, AVCodecContext *avctx,
     } else {
         /* Found a possible frame start and a  possible frame end */
         DiracParseUnit pu1, pu;
-        void *new_buffer = av_fast_realloc(pc->buffer, &pc->buffer_size,
-                                           pc->index + next);
+        void *new_buffer = av_realloc_reuse(pc->buffer, &pc->buffer_size,
+                                            pc->index + next);
         if (!new_buffer)
             return AVERROR(ENOMEM);
         pc->buffer = new_buffer;
diff --git a/libavcodec/dxva2_av1.c b/libavcodec/dxva2_av1.c
index 228f72ba18..6520f82c9f 100644
--- a/libavcodec/dxva2_av1.c
+++ b/libavcodec/dxva2_av1.c
@@ -33,7 +33,7 @@
 struct AV1DXVAContext {
     FFDXVASharedContext shared;
 
-    unsigned int bitstream_allocated;
+    size_t bitstream_allocated;
     uint8_t *bitstream_cache;
 };
 
@@ -321,8 +321,8 @@ static int dxva2_av1_decode_slice(AVCodecContext *avctx,
     }
 
     /* allocate an internal buffer */
-    tmp = av_fast_realloc(ctx->bitstream_cache, &ctx->bitstream_allocated,
-                          ctx_pic->bitstream_size + size);
+    tmp = av_realloc_reuse(ctx->bitstream_cache, &ctx->bitstream_allocated,
+                           ctx_pic->bitstream_size + size);
     if (!tmp) {
         return AVERROR(ENOMEM);
     }
diff --git a/libavcodec/flac_parser.c b/libavcodec/flac_parser.c
index bd91cc1a05..c1a6529d3d 100644
--- a/libavcodec/flac_parser.c
+++ b/libavcodec/flac_parser.c
@@ -95,7 +95,7 @@ typedef struct FLACParseContext {
                                         can be verified                       */
     int end_padded;                /**< specifies if fifo_buf's end is padded */
     uint8_t *wrap_buf;             /**< general fifo read buffer when wrapped */
-    int wrap_buf_allocated_size;   /**< actual allocated size of the buffer   */
+    size_t wrap_buf_allocated_size;/**< actual allocated size of the buffer   */
     FLACFrameInfo last_fi;         /**< last decoded frame header info        */
     int last_fi_valid;             /**< set if last_fi is valid               */
 } FLACParseContext;
@@ -160,7 +160,7 @@ static size_t flac_fifo_space(const FifoBuffer *f)
  * about a memory barrier for SMP.
  */
 static uint8_t *flac_fifo_read_wrap(FLACParseContext *fpc, int offset, int len,
-                                    uint8_t **wrap_buf, int *allocated_size)
+                                    uint8_t **wrap_buf, size_t *allocated_size)
 {
     FifoBuffer   *f   = &fpc->fifo_buf;
     uint8_t *start    = f->rptr + offset;
@@ -171,7 +171,7 @@ static uint8_t *flac_fifo_read_wrap(FLACParseContext *fpc, int offset, int len,
     if (f->end - start >= len)
         return start;
 
-    tmp_buf = av_fast_realloc(*wrap_buf, allocated_size, len);
+    tmp_buf = av_realloc_reuse(*wrap_buf, allocated_size, len);
 
     if (!tmp_buf) {
         av_log(fpc->avctx, AV_LOG_ERROR,
diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c
index 90944177c7..4fe71ec587 100644
--- a/libavcodec/h2645_parse.c
+++ b/libavcodec/h2645_parse.c
@@ -463,7 +463,7 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length,
             if (new_size >= INT_MAX / sizeof(*pkt->nals))
                 return AVERROR(ENOMEM);
 
-            tmp = av_fast_realloc(pkt->nals, &pkt->nal_buffer_size, new_size * sizeof(*pkt->nals));
+            tmp = av_realloc_reuse(pkt->nals, &pkt->nal_buffer_size, new_size * sizeof(*pkt->nals));
             if (!tmp)
                 return AVERROR(ENOMEM);
 
diff --git a/libavcodec/h2645_parse.h b/libavcodec/h2645_parse.h
index 787ce971ee..ae5e298fe8 100644
--- a/libavcodec/h2645_parse.h
+++ b/libavcodec/h2645_parse.h
@@ -84,7 +84,7 @@ typedef struct H2645Packet {
     H2645RBSP rbsp;
     int nb_nals;
     int nals_allocated;
-    unsigned nal_buffer_size;
+    size_t nal_buffer_size;
 } H2645Packet;
 
 /**
diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
index bd576fdd3a..10c1b4001e 100644
--- a/libavcodec/libaomenc.c
+++ b/libavcodec/libaomenc.c
@@ -70,7 +70,7 @@ typedef struct AOMEncoderContext {
     struct aom_codec_ctx encoder;
     struct aom_image rawimg;
     struct aom_fixed_buf twopass_stats;
-    unsigned twopass_stats_size;
+    size_t twopass_stats_size;
     struct FrameListData *coded_frame_list;
     int cpu_used;
     int auto_alt_ref;
@@ -1201,10 +1201,10 @@ static int queue_frames(AVCodecContext *avctx, AVPacket *pkt_out)
         case AOM_CODEC_STATS_PKT:
         {
             struct aom_fixed_buf *stats = &ctx->twopass_stats;
-            uint8_t *tmp = av_fast_realloc(stats->buf,
-                                           &ctx->twopass_stats_size,
-                                           stats->sz +
-                                           pkt->data.twopass_stats.sz);
+            uint8_t *tmp = av_realloc_reuse(stats->buf,
+                                            &ctx->twopass_stats_size,
+                                            stats->sz +
+                                            pkt->data.twopass_stats.sz);
             if (!tmp) {
                 av_freep(&stats->buf);
                 stats->sz = 0;
diff --git a/libavcodec/librav1e.c b/libavcodec/librav1e.c
index 0601efed2c..6ce08a6fbb 100644
--- a/libavcodec/librav1e.c
+++ b/libavcodec/librav1e.c
@@ -45,6 +45,7 @@ typedef struct librav1eContext {
 
     uint8_t *pass_data;
     size_t pass_pos;
+    size_t pass_size_allocated;
     int pass_size;
 
     AVDictionary *rav1e_opts;
@@ -116,8 +117,8 @@ static int get_stats(AVCodecContext *avctx, int eos)
         return 0;
 
     if (!eos) {
-        uint8_t *tmp = av_fast_realloc(ctx->pass_data, &ctx->pass_size,
-                                      ctx->pass_pos + buf->len);
+        uint8_t *tmp = av_realloc_reuse(ctx->pass_data, &ctx->pass_size_allocated,
+                                        ctx->pass_pos + buf->len);
         if (!tmp) {
             rav1e_data_unref(buf);
             return AVERROR(ENOMEM);
diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c
index da16c6372e..bdaa03cbe6 100644
--- a/libavcodec/libtheoraenc.c
+++ b/libavcodec/libtheoraenc.c
@@ -46,6 +46,7 @@
 typedef struct TheoraContext {
     th_enc_ctx *t_state;
     uint8_t    *stats;
+    size_t      stats_size_allocated;
     int         stats_size;
     int         stats_offset;
     int         uv_hshift;
@@ -100,8 +101,8 @@ static int get_stats(AVCodecContext *avctx, int eos)
         return AVERROR_EXTERNAL;
     }
     if (!eos) {
-        void *tmp = av_fast_realloc(h->stats, &h->stats_size,
-                                   h->stats_offset + bytes);
+        void *tmp = av_realloc_reuse(h->stats, &h->stats_size_allocated,
+                                     h->stats_offset + bytes);
         if (!tmp)
             return AVERROR(ENOMEM);
         h->stats = tmp;
diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
index 667cffc200..2d99b65ab0 100644
--- a/libavcodec/libvpxenc.c
+++ b/libavcodec/libvpxenc.c
@@ -80,7 +80,7 @@ typedef struct VPxEncoderContext {
     struct vpx_image rawimg_alpha;
     uint8_t is_alpha;
     struct vpx_fixed_buf twopass_stats;
-    unsigned twopass_stats_size;
+    size_t twopass_stats_size;
     int deadline; //i.e., RT/GOOD/BEST
     uint64_t sse[4];
     int have_sse; /**< true if we have pending sse[] */
@@ -1368,10 +1368,10 @@ static int queue_frames(AVCodecContext *avctx, struct vpx_codec_ctx *encoder,
             uint8_t *tmp;
             if (!pkt_out)
                 break;
-            tmp = av_fast_realloc(stats->buf,
-                                  &ctx->twopass_stats_size,
-                                  stats->sz +
-                                  pkt->data.twopass_stats.sz);
+            tmp = av_realloc_reuse(stats->buf,
+                                   &ctx->twopass_stats_size,
+                                   stats->sz +
+                                   pkt->data.twopass_stats.sz);
             if (!tmp) {
                 av_freep(&stats->buf);
                 stats->sz = 0;
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index ca0b5a145b..bbb013a698 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -359,7 +359,7 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame,
 
     if (frame) {
         x264_sei_t *sei = &x4->pic.extra_sei;
-        unsigned int sei_data_size = 0;
+        size_t sei_data_size = 0;
 
         for (i = 0; i < x4->pic.img.i_plane; i++) {
             x4->pic.img.plane[i]    = frame->data[i];
@@ -494,7 +494,8 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame,
                 x264_sei_payload_t *sei_payload;
                 if (side_data->type != AV_FRAME_DATA_SEI_UNREGISTERED)
                     continue;
-                tmp = av_fast_realloc(sei->payloads, &sei_data_size, (sei->num_payloads + 1) * sizeof(*sei_payload));
+                tmp = av_realloc_reuse(sei->payloads, &sei_data_size,
+                                       (sei->num_payloads + 1) * sizeof(*sei_payload));
                 if (!tmp) {
                     free_picture(ctx);
                     return AVERROR(ENOMEM);
diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c
index 4aa96e1f2d..fa54db25bd 100644
--- a/libavcodec/libx265.c
+++ b/libavcodec/libx265.c
@@ -54,7 +54,7 @@ typedef struct libx265Context {
     AVDictionary *x265_opts;
 
     void *sei_data;
-    int sei_data_size;
+    size_t sei_data_size;
     int udu_sei;
 
     /**
@@ -555,9 +555,9 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
                 if (side_data->type != AV_FRAME_DATA_SEI_UNREGISTERED)
                     continue;
 
-                tmp = av_fast_realloc(ctx->sei_data,
-                        &ctx->sei_data_size,
-                        (sei->numPayloads + 1) * sizeof(*sei_payload));
+                tmp = av_realloc_reuse(ctx->sei_data,
+                                       &ctx->sei_data_size,
+                                       (sei->numPayloads + 1) * sizeof(*sei_payload));
                 if (!tmp) {
                     av_freep(&x265pic.userData);
                     av_freep(&x265pic.quantOffsets);
diff --git a/libavcodec/movtextenc.c b/libavcodec/movtextenc.c
index 7aa74d7c9d..caeeba57e3 100644
--- a/libavcodec/movtextenc.c
+++ b/libavcodec/movtextenc.c
@@ -76,7 +76,7 @@ typedef struct {
     ASSStyle *ass_dialog_style;
     StyleBox *style_attributes;
     unsigned  count;
-    unsigned  style_attributes_bytes_allocated;
+    size_t  style_attributes_bytes_allocated;
     StyleBox  style_attributes_temp;
     AVBPrint buffer;
     HighlightBox hlit;
@@ -354,9 +354,9 @@ static int mov_text_style_start(MovTextContext *s)
 
         // last style != defaults, end the style entry and start a new one
         if (s->count + 1 > FFMIN(SIZE_MAX / sizeof(*s->style_attributes), UINT16_MAX) ||
-            !(tmp = av_fast_realloc(s->style_attributes,
-                                    &s->style_attributes_bytes_allocated,
-                                    (s->count + 1) * sizeof(*s->style_attributes)))) {
+            !(tmp = av_realloc_reuse(s->style_attributes,
+                                     &s->style_attributes_bytes_allocated,
+                                     (s->count + 1) * sizeof(*s->style_attributes)))) {
             mov_text_cleanup(s);
             av_bprint_clear(&s->buffer);
             s->box_flags &= ~STYL_BOX;
diff --git a/libavcodec/nvdec.c b/libavcodec/nvdec.c
index fbaedf0b6b..5bfef4d2d6 100644
--- a/libavcodec/nvdec.c
+++ b/libavcodec/nvdec.c
@@ -677,8 +677,8 @@ int ff_nvdec_simple_decode_slice(AVCodecContext *avctx, const uint8_t *buffer,
     NVDECContext *ctx = avctx->internal->hwaccel_priv_data;
     void *tmp;
 
-    tmp = av_fast_realloc(ctx->slice_offsets, &ctx->slice_offsets_allocated,
-                          (ctx->nb_slices + 1) * sizeof(*ctx->slice_offsets));
+    tmp = av_realloc_reuse(ctx->slice_offsets, &ctx->slice_offsets_allocated,
+                           (ctx->nb_slices + 1) * sizeof(*ctx->slice_offsets));
     if (!tmp)
         return AVERROR(ENOMEM);
     ctx->slice_offsets = tmp;
diff --git a/libavcodec/nvdec.h b/libavcodec/nvdec.h
index 66f3ca59e7..ce475702e2 100644
--- a/libavcodec/nvdec.h
+++ b/libavcodec/nvdec.h
@@ -58,12 +58,12 @@ typedef struct NVDECContext {
 
     uint8_t      *bitstream;
     int           bitstream_len;
-    unsigned int  bitstream_allocated;
+    size_t        bitstream_allocated;
     uint8_t      *bitstream_internal;
 
     unsigned     *slice_offsets;
     int           nb_slices;
-    unsigned int  slice_offsets_allocated;
+    size_t        slice_offsets_allocated;
 
     int           supports_444;
 } NVDECContext;
diff --git a/libavcodec/nvdec_av1.c b/libavcodec/nvdec_av1.c
index 3bbcd76123..1409672748 100644
--- a/libavcodec/nvdec_av1.c
+++ b/libavcodec/nvdec_av1.c
@@ -293,8 +293,8 @@ static int nvdec_av1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer,
 
     ctx->nb_slices = frame_header->tile_cols * frame_header->tile_rows;
 
-    tmp = av_fast_realloc(ctx->slice_offsets, &ctx->slice_offsets_allocated,
-                          ctx->nb_slices * 2 * sizeof(*ctx->slice_offsets));
+    tmp = av_realloc_reuse(ctx->slice_offsets, &ctx->slice_offsets_allocated,
+                           ctx->nb_slices * 2 * sizeof(*ctx->slice_offsets));
     if (!tmp) {
         return AVERROR(ENOMEM);
     }
@@ -313,8 +313,8 @@ static int nvdec_av1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer,
         return 0;
     }
 
-    tmp = av_fast_realloc(ctx->bitstream_internal, &ctx->bitstream_allocated,
-                          ctx->bitstream_len + size);
+    tmp = av_realloc_reuse(ctx->bitstream_internal, &ctx->bitstream_allocated,
+                           ctx->bitstream_len + size);
     if (!tmp) {
         return AVERROR(ENOMEM);
     }
diff --git a/libavcodec/nvdec_h264.c b/libavcodec/nvdec_h264.c
index 116bd4fb5d..1f95470ce3 100644
--- a/libavcodec/nvdec_h264.c
+++ b/libavcodec/nvdec_h264.c
@@ -137,14 +137,14 @@ static int nvdec_h264_decode_slice(AVCodecContext *avctx, const uint8_t *buffer,
     const H264SliceContext *sl = &h->slice_ctx[0];
     void *tmp;
 
-    tmp = av_fast_realloc(ctx->bitstream, &ctx->bitstream_allocated,
-                          ctx->bitstream_len + size + 3);
+    tmp = av_realloc_reuse(ctx->bitstream, &ctx->bitstream_allocated,
+                           ctx->bitstream_len + size + 3);
     if (!tmp)
         return AVERROR(ENOMEM);
     ctx->bitstream = tmp;
 
-    tmp = av_fast_realloc(ctx->slice_offsets, &ctx->slice_offsets_allocated,
-                          (ctx->nb_slices + 1) * sizeof(*ctx->slice_offsets));
+    tmp = av_realloc_reuse(ctx->slice_offsets, &ctx->slice_offsets_allocated,
+                           (ctx->nb_slices + 1) * sizeof(*ctx->slice_offsets));
     if (!tmp)
         return AVERROR(ENOMEM);
     ctx->slice_offsets = tmp;
diff --git a/libavcodec/nvdec_hevc.c b/libavcodec/nvdec_hevc.c
index cd549d2ef6..002e8486c9 100644
--- a/libavcodec/nvdec_hevc.c
+++ b/libavcodec/nvdec_hevc.c
@@ -273,14 +273,14 @@ static int nvdec_hevc_decode_slice(AVCodecContext *avctx, const uint8_t *buffer,
     NVDECContext *ctx = avctx->internal->hwaccel_priv_data;
     void *tmp;
 
-    tmp = av_fast_realloc(ctx->bitstream, &ctx->bitstream_allocated,
-                          ctx->bitstream_len + size + 3);
+    tmp = av_realloc_reuse(ctx->bitstream, &ctx->bitstream_allocated,
+                           ctx->bitstream_len + size + 3);
     if (!tmp)
         return AVERROR(ENOMEM);
     ctx->bitstream = tmp;
 
-    tmp = av_fast_realloc(ctx->slice_offsets, &ctx->slice_offsets_allocated,
-                          (ctx->nb_slices + 1) * sizeof(*ctx->slice_offsets));
+    tmp = av_realloc_reuse(ctx->slice_offsets, &ctx->slice_offsets_allocated,
+                           (ctx->nb_slices + 1) * sizeof(*ctx->slice_offsets));
     if (!tmp)
         return AVERROR(ENOMEM);
     ctx->slice_offsets = tmp;
diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
index 11bd21f365..64d130fd5d 100644
--- a/libavcodec/nvenc.c
+++ b/libavcodec/nvenc.c
@@ -2202,9 +2202,9 @@ static int prepare_sei_data_array(AVCodecContext *avctx, const AVFrame *frame)
         }
 
         if (a53_data) {
-            void *tmp = av_fast_realloc(ctx->sei_data,
-                                        &ctx->sei_data_size,
-                                        (sei_count + 1) * sizeof(*ctx->sei_data));
+            void *tmp = av_realloc_reuse(ctx->sei_data,
+                                         &ctx->sei_data_size,
+                                         (sei_count + 1) * sizeof(*ctx->sei_data));
             if (!tmp) {
                 av_free(a53_data);
                 res = AVERROR(ENOMEM);
@@ -2228,9 +2228,9 @@ static int prepare_sei_data_array(AVCodecContext *avctx, const AVFrame *frame)
         }
 
         if (tc_data) {
-            void *tmp = av_fast_realloc(ctx->sei_data,
-                                        &ctx->sei_data_size,
-                                        (sei_count + 1) * sizeof(*ctx->sei_data));
+            void *tmp = av_realloc_reuse(ctx->sei_data,
+                                         &ctx->sei_data_size,
+                                         (sei_count + 1) * sizeof(*ctx->sei_data));
             if (!tmp) {
                 av_free(tc_data);
                 res = AVERROR(ENOMEM);
@@ -2255,9 +2255,9 @@ static int prepare_sei_data_array(AVCodecContext *avctx, const AVFrame *frame)
         if (side_data->type != AV_FRAME_DATA_SEI_UNREGISTERED)
             continue;
 
-        tmp = av_fast_realloc(ctx->sei_data,
-                              &ctx->sei_data_size,
-                              (sei_count + 1) * sizeof(*ctx->sei_data));
+        tmp = av_realloc_reuse(ctx->sei_data,
+                               &ctx->sei_data_size,
+                               (sei_count + 1) * sizeof(*ctx->sei_data));
         if (!tmp) {
             res = AVERROR(ENOMEM);
             goto error;
diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h
index 9eb129952e..17a80e2706 100644
--- a/libavcodec/nvenc.h
+++ b/libavcodec/nvenc.h
@@ -174,7 +174,7 @@ typedef struct NvencContext
     AVFifo *timestamp_list;
 
     NV_ENC_SEI_PAYLOAD *sei_data;
-    int sei_data_size;
+    size_t sei_data_size;
 
     struct {
         void *ptr;
diff --git a/libavcodec/parser.c b/libavcodec/parser.c
index 49de7e6a57..ba9af5daed 100644
--- a/libavcodec/parser.c
+++ b/libavcodec/parser.c
@@ -221,9 +221,9 @@ int ff_combine_frame(ParseContext *pc, int next,
 
     /* copy into buffer end return */
     if (next == END_NOT_FOUND) {
-        void *new_buffer = av_fast_realloc(pc->buffer, &pc->buffer_size,
-                                           *buf_size + pc->index +
-                                           AV_INPUT_BUFFER_PADDING_SIZE);
+        void *new_buffer = av_realloc_reuse(pc->buffer, &pc->buffer_size,
+                                            *buf_size + pc->index +
+                                            AV_INPUT_BUFFER_PADDING_SIZE);
 
         if (!new_buffer) {
             av_log(NULL, AV_LOG_ERROR, "Failed to reallocate parser buffer to %d\n", *buf_size + pc->index + AV_INPUT_BUFFER_PADDING_SIZE);
@@ -243,9 +243,9 @@ int ff_combine_frame(ParseContext *pc, int next,
 
     /* append to buffer */
     if (pc->index) {
-        void *new_buffer = av_fast_realloc(pc->buffer, &pc->buffer_size,
-                                           next + pc->index +
-                                           AV_INPUT_BUFFER_PADDING_SIZE);
+        void *new_buffer = av_realloc_reuse(pc->buffer, &pc->buffer_size,
+                                            next + pc->index +
+                                            AV_INPUT_BUFFER_PADDING_SIZE);
         if (!new_buffer) {
             av_log(NULL, AV_LOG_ERROR, "Failed to reallocate parser buffer to %d\n", next + pc->index + AV_INPUT_BUFFER_PADDING_SIZE);
             pc->overread_index =
diff --git a/libavcodec/parser.h b/libavcodec/parser.h
index 2cee5ae4ff..908800fcce 100644
--- a/libavcodec/parser.h
+++ b/libavcodec/parser.h
@@ -29,7 +29,7 @@ typedef struct ParseContext{
     uint8_t *buffer;
     int index;
     int last_index;
-    unsigned int buffer_size;
+    size_t buffer_size;
     uint32_t state;             ///< contains the last few bytes in MSB order
     int frame_start_found;
     int overread;               ///< the number of bytes which where irreversibly read from the next frame
diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c
index 1b2abd76b1..36b7349be3 100644
--- a/libavcodec/shorten.c
+++ b/libavcodec/shorten.c
@@ -97,7 +97,7 @@ typedef struct ShortenContext {
     uint8_t *bitstream;
     int bitstream_size;
     int bitstream_index;
-    unsigned int allocated_bitstream_size;
+    size_t allocated_bitstream_size;
     int header_size;
     uint8_t header[OUT_BUFFER_SIZE];
     int version;
@@ -535,8 +535,8 @@ static int shorten_decode_frame(AVCodecContext *avctx, AVFrame *frame,
     if (s->max_framesize == 0) {
         void *tmp_ptr;
         s->max_framesize = 8192; // should hopefully be enough for the first header
-        tmp_ptr = av_fast_realloc(s->bitstream, &s->allocated_bitstream_size,
-                                  s->max_framesize + AV_INPUT_BUFFER_PADDING_SIZE);
+        tmp_ptr = av_realloc_reuse(s->bitstream, &s->allocated_bitstream_size,
+                                   s->max_framesize + AV_INPUT_BUFFER_PADDING_SIZE);
         if (!tmp_ptr) {
             s->max_framesize = 0;
             av_log(avctx, AV_LOG_ERROR, "error allocating bitstream buffer\n");
@@ -585,8 +585,8 @@ static int shorten_decode_frame(AVCodecContext *avctx, AVFrame *frame,
             void *tmp_ptr;
 
             max_framesize = FFMAX(s->max_framesize, s->blocksize * s->channels * 8);
-            tmp_ptr = av_fast_realloc(s->bitstream, &s->allocated_bitstream_size,
-                                      max_framesize + AV_INPUT_BUFFER_PADDING_SIZE);
+            tmp_ptr = av_realloc_reuse(s->bitstream, &s->allocated_bitstream_size,
+                                       max_framesize + AV_INPUT_BUFFER_PADDING_SIZE);
             if (!tmp_ptr) {
                 av_log(avctx, AV_LOG_ERROR, "error allocating bitstream buffer\n");
                 return AVERROR(ENOMEM);
diff --git a/libavcodec/vdpau.c b/libavcodec/vdpau.c
index 0bb793c010..a201b3024a 100644
--- a/libavcodec/vdpau.c
+++ b/libavcodec/vdpau.c
@@ -388,8 +388,8 @@ int ff_vdpau_add_buffer(struct vdpau_picture_context *pic_ctx,
 {
     VdpBitstreamBuffer *buffers = pic_ctx->bitstream_buffers;
 
-    buffers = av_fast_realloc(buffers, &pic_ctx->bitstream_buffers_allocated,
-                              (pic_ctx->bitstream_buffers_used + 1) * sizeof(*buffers));
+    buffers = av_realloc_reuse(buffers, &pic_ctx->bitstream_buffers_allocated,
+                               (pic_ctx->bitstream_buffers_used + 1) * sizeof(*buffers));
     if (!buffers)
         return AVERROR(ENOMEM);
 
diff --git a/libavcodec/vdpau_internal.h b/libavcodec/vdpau_internal.h
index 347576e0c3..b0e97c0a6d 100644
--- a/libavcodec/vdpau_internal.h
+++ b/libavcodec/vdpau_internal.h
@@ -104,7 +104,7 @@ struct vdpau_picture_context {
     /**
      * Allocated size of the bitstream_buffers table.
      */
-    int bitstream_buffers_allocated;
+    size_t bitstream_buffers_allocated;
 
     /**
      * Useful bitstream buffers in the bitstream buffers table.
diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c
index 1b1be8ddb4..c8d96f6794 100644
--- a/libavcodec/videotoolbox.c
+++ b/libavcodec/videotoolbox.c
@@ -76,9 +76,9 @@ int ff_videotoolbox_buffer_copy(VTContext *vtctx,
 {
     void *tmp;
 
-    tmp = av_fast_realloc(vtctx->bitstream,
-                         &vtctx->allocated_size,
-                         size);
+    tmp = av_realloc_reuse(vtctx->bitstream,
+                           &vtctx->allocated_size,
+                           size);
 
     if (!tmp)
         return AVERROR(ENOMEM);
@@ -432,9 +432,9 @@ static int videotoolbox_common_decode_slice(AVCodecContext *avctx,
     VTContext *vtctx = avctx->internal->hwaccel_priv_data;
     void *tmp;
 
-    tmp = av_fast_realloc(vtctx->bitstream,
-                          &vtctx->allocated_size,
-                          vtctx->bitstream_size+size+4);
+    tmp = av_realloc_reuse(vtctx->bitstream,
+                           &vtctx->allocated_size,
+                           vtctx->bitstream_size+size+4);
     if (!tmp)
         return AVERROR(ENOMEM);
 
diff --git a/libavcodec/vt_internal.h b/libavcodec/vt_internal.h
index 9502d7c7dc..9cfd4722e5 100644
--- a/libavcodec/vt_internal.h
+++ b/libavcodec/vt_internal.h
@@ -30,7 +30,7 @@ typedef struct VTContext {
     int                         bitstream_size;
 
     // The reference size used for fast reallocation.
-    int                         allocated_size;
+    size_t                      allocated_size;
 
     // The core video buffer
     CVImageBufferRef            frame;
-- 
2.35.1



More information about the ffmpeg-devel mailing list