Move ff_dynarray_add to lavu and make it public.

pull/2/head
Anton Khirnov 14 years ago
parent 9ac1bf88c0
commit 35ceaa7376
  1. 4
      doc/APIchanges
  2. 21
      libavformat/cutils.c
  3. 6
      libavformat/internal.h
  4. 2
      libavutil/avutil.h
  5. 20
      libavutil/mem.c
  6. 9
      libavutil/mem.h

@ -13,6 +13,10 @@ libavutil: 2011-04-18
API changes, most recent first: API changes, most recent first:
2011-04-xx - xxxxxxx - lavu 51.2.0 - mem.h
Add av_dynarray_add function for adding
an element to a dynamic array.
2011-04-XX - bebe72f - lavu 51.1.0 - avutil.h 2011-04-XX - bebe72f - lavu 51.1.0 - avutil.h
Add AVPictureType enum and av_get_picture_type_char(), deprecate Add AVPictureType enum and av_get_picture_type_char(), deprecate
FF_*_TYPE defines and av_get_pict_type_char() defined in FF_*_TYPE defines and av_get_pict_type_char() defined in

@ -21,27 +21,6 @@
#include "avformat.h" #include "avformat.h"
#include "internal.h" #include "internal.h"
/* add one element to a dynamic array */
void ff_dynarray_add(intptr_t **tab_ptr, int *nb_ptr, intptr_t elem)
{
/* see similar ffmpeg.c:grow_array() */
int nb, nb_alloc;
intptr_t *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(intptr_t));
*tab_ptr = tab;
}
tab[nb++] = elem;
*nb_ptr = nb;
}
#define ISLEAP(y) (((y) % 4 == 0) && (((y) % 100) != 0 || ((y) % 400) == 0)) #define ISLEAP(y) (((y) % 4 == 0) && (((y) % 100) != 0 || ((y) % 400) == 0))
#define LEAPS_COUNT(y) ((y)/4 - (y)/100 + (y)/400) #define LEAPS_COUNT(y) ((y)/4 - (y)/100 + (y)/400)

@ -31,20 +31,18 @@ typedef struct AVCodecTag {
unsigned int tag; unsigned int tag;
} AVCodecTag; } AVCodecTag;
void ff_dynarray_add(intptr_t **tab_ptr, int *nb_ptr, intptr_t elem);
#ifdef __GNUC__ #ifdef __GNUC__
#define dynarray_add(tab, nb_ptr, elem)\ #define dynarray_add(tab, nb_ptr, elem)\
do {\ do {\
__typeof__(tab) _tab = (tab);\ __typeof__(tab) _tab = (tab);\
__typeof__(elem) _elem = (elem);\ __typeof__(elem) _elem = (elem);\
(void)sizeof(**_tab == _elem); /* check that types are compatible */\ (void)sizeof(**_tab == _elem); /* check that types are compatible */\
ff_dynarray_add((intptr_t **)_tab, nb_ptr, (intptr_t)_elem);\ av_dynarray_add(_tab, nb_ptr, _elem);\
} while(0) } while(0)
#else #else
#define dynarray_add(tab, nb_ptr, elem)\ #define dynarray_add(tab, nb_ptr, elem)\
do {\ do {\
ff_dynarray_add((intptr_t **)(tab), nb_ptr, (intptr_t)(elem));\ av_dynarray_add((tab), nb_ptr, (elem));\
} while(0) } while(0)
#endif #endif

@ -40,7 +40,7 @@
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
#define LIBAVUTIL_VERSION_MAJOR 51 #define LIBAVUTIL_VERSION_MAJOR 51
#define LIBAVUTIL_VERSION_MINOR 1 #define LIBAVUTIL_VERSION_MINOR 2
#define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \

@ -171,3 +171,23 @@ char *av_strdup(const char *s)
return ptr; 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;
}

@ -123,4 +123,13 @@ char *av_strdup(const char *s) av_malloc_attrib;
*/ */
void av_freep(void *ptr); void av_freep(void *ptr);
/**
* Add an element to a dynamic array.
*
* @param tab_ptr Pointer to the array.
* @param nb_ptr Pointer to the number of elements in the array.
* @param elem Element to be added.
*/
void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem);
#endif /* AVUTIL_MEM_H */ #endif /* AVUTIL_MEM_H */

Loading…
Cancel
Save