summaryrefslogtreecommitdiff
path: root/libavformat/cutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat/cutils.c')
-rw-r--r--libavformat/cutils.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/libavformat/cutils.c b/libavformat/cutils.c
index 3e46533c6b..28f40b0e2f 100644
--- a/libavformat/cutils.c
+++ b/libavformat/cutils.c
@@ -108,3 +108,24 @@ char *pstrcat(char *buf, int buf_size, const char *s)
}
#endif
+
+/* add one element to a dynamic array */
+void __dynarray_add(unsigned long **tab_ptr, int *nb_ptr, unsigned long elem)
+{
+ int nb, nb_alloc;
+ unsigned long *tab;
+
+ nb = *nb_ptr;
+ tab = *tab_ptr;
+ if ((nb & (nb - 1)) == 0) {
+ if (nb == 0)
+ nb_alloc = 1;
+ else
+ nb_alloc = nb * 2;
+ tab = av_realloc(tab, nb_alloc * sizeof(unsigned long));
+ *tab_ptr = tab;
+ }
+ tab[nb++] = elem;
+ *nb_ptr = nb;
+}
+