aboutsummaryrefslogtreecommitdiff
path: root/cmdutils.c
diff options
context:
space:
mode:
authorAnton Khirnov2011-08-29 07:11:57 +0200
committerAnton Khirnov2011-09-04 13:12:00 +0200
commitcac651c83417dde3b64a6620cac32f078c9c399f (patch)
treebf47384e3958b219842eef907dfbeed713ec3ec1 /cmdutils.c
parentdad09ff93f5df1ec987493f404d43cd16991e992 (diff)
cmdutils: move grow_array() from avconv to cmdutils.
Diffstat (limited to 'cmdutils.c')
-rw-r--r--cmdutils.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/cmdutils.c b/cmdutils.c
index a86c55bc6d..9e34e43128 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -931,4 +931,23 @@ int get_filtered_video_frame(AVFilterContext *ctx, AVFrame *frame,
return 1;
}
+void *grow_array(void *array, int elem_size, int *size, int new_size)
+{
+ if (new_size >= INT_MAX / elem_size) {
+ av_log(NULL, AV_LOG_ERROR, "Array too big.\n");
+ exit_program(1);
+ }
+ if (*size < new_size) {
+ uint8_t *tmp = av_realloc(array, new_size*elem_size);
+ if (!tmp) {
+ av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n");
+ exit_program(1);
+ }
+ memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size);
+ *size = new_size;
+ return tmp;
+ }
+ return array;
+}
+
#endif /* CONFIG_AVFILTER */