summaryrefslogtreecommitdiff
path: root/libavutil/mem.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-05-01 00:21:56 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-05-01 00:26:05 +0200
commitffb5a0d533498102c31aa131bc91a4cce868b0a8 (patch)
tree1c78494488bab5bafa3bda2ab20295f13860fc2e /libavutil/mem.c
parent1a9f9f81b1244b952126bb65bc741b04d3534f81 (diff)
parent85770f2a2651497861ed938efcd0df3696ff5e45 (diff)
Merge commit '85770f2a2651497861ed938efcd0df3696ff5e45'
* commit '85770f2a2651497861ed938efcd0df3696ff5e45': AVOptions: make default_val a union, as proposed in AVOption2. Move ff_dynarray_add to lavu and make it public. lavf: remove duplicate assignment in avformat_alloc_context. lavf: use designated initializers for AVClasses. options: simplify av_find_opt by using av_next_option. Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavutil/mem.c')
-rw-r--r--libavutil/mem.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/libavutil/mem.c b/libavutil/mem.c
index f0f18d1ce9..965daa93c8 100644
--- a/libavutil/mem.c
+++ b/libavutil/mem.c
@@ -173,3 +173,23 @@ char *av_strdup(const char *s)
return ptr;
}
+/* add one element to a dynamic array */
+void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem)
+{
+ /* see similar ffmpeg.c:grow_array() */
+ int nb, nb_alloc;
+ intptr_t *tab;
+
+ nb = *nb_ptr;
+ tab = *(intptr_t**)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(intptr_t));
+ *(intptr_t**)tab_ptr = tab;
+ }
+ tab[nb++] = (intptr_t)elem;
+ *nb_ptr = nb;
+}