diff options
author | Aurelien Jacobs <aurel@gnuage.org> | 2010-10-02 01:29:37 +0400 |
---|---|---|
committer | Aurelien Jacobs <aurel@gnuage.org> | 2010-10-02 01:29:37 +0400 |
commit | dba249abeea40ee07edcec5508e872f767dc8c0f (patch) | |
tree | 4a865bfec6fff843859013c41c88468804b576a0 /ffmpeg.c | |
parent | 333771210eca752a9a36d96b2fb8a3d31d30f91e (diff) |
ffmpeg: add a grow_array() helper function
Originally committed as revision 25297 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'ffmpeg.c')
-rw-r--r-- | ffmpeg.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -647,6 +647,26 @@ static int ffmpeg_exit(int ret) return ret; } +/* similar to ff_dynarray_add() and av_fast_realloc() */ +static void *grow_array(void *array, int elem_size, int *size, int new_size) +{ + if (new_size >= INT_MAX / elem_size) { + fprintf(stderr, "Array too big.\n"); + ffmpeg_exit(1); + } + if (*size < new_size) { + uint8_t *tmp = av_realloc(array, new_size*elem_size); + if (!tmp) { + fprintf(stderr, "Could not alloc buffer.\n"); + ffmpeg_exit(1); + } + memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size); + *size = new_size; + return tmp; + } + return array; +} + static void choose_sample_fmt(AVStream *st, AVCodec *codec) { if(codec && codec->sample_fmts){ |