summaryrefslogtreecommitdiff
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorAurelien Jacobs <aurel@gnuage.org>2010-10-01 21:29:37 +0000
committerAurelien Jacobs <aurel@gnuage.org>2010-10-01 21:29:37 +0000
commitdba249abeea40ee07edcec5508e872f767dc8c0f (patch)
tree4a865bfec6fff843859013c41c88468804b576a0 /ffmpeg.c
parent333771210eca752a9a36d96b2fb8a3d31d30f91e (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.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 88ef7985a3..cfd3cb8c65 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -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){