From 09dafaeba101f0a52ce0f4c501ca885ede1105e6 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 30 May 2008 21:12:33 +0000 Subject: [PATCH] Move *_static to bitstream.c which is the only file left which needs them. Originally committed as revision 13568 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/avcodec.h | 25 ------------------- libavcodec/bitstream.c | 56 +++++++++++++++++++++++++++++++++++++++++- libavcodec/utils.c | 54 ---------------------------------------- 3 files changed, 55 insertions(+), 80 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 6aa71ba01..2cf360fbc 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2918,31 +2918,6 @@ AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f); */ void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size); -/* for static data only */ - -/** - * Frees all static arrays and resets their pointers to 0. - * Call this function to release all statically allocated tables. - * - * @deprecated. Code which uses av_free_static is broken/misdesigned - * and should correctly use static arrays - * - */ -attribute_deprecated void av_free_static(void); - -/** - * Allocation of static arrays. - * - * @warning Do not use for normal allocation. - * - * @param[in] size The amount of memory you need in bytes. - * @return block of memory of the requested size - * @deprecated. Code which uses av_mallocz_static is broken/misdesigned - * and should correctly use static arrays - */ -attribute_deprecated av_malloc_attrib av_alloc_size(1) -void *av_mallocz_static(unsigned int size); - /** * Copy image 'src' to 'dst'. */ diff --git a/libavcodec/bitstream.c b/libavcodec/bitstream.c index 823bf97f4..7c8cca2ab 100644 --- a/libavcodec/bitstream.c +++ b/libavcodec/bitstream.c @@ -40,7 +40,61 @@ * and should correctly use static arrays */ attribute_deprecated av_alloc_size(2) -void *ff_realloc_static(void *ptr, unsigned int size); +static void *ff_realloc_static(void *ptr, unsigned int size); + +static unsigned int last_static = 0; +static unsigned int allocated_static = 0; +static void** array_static = NULL; + +static void *av_mallocz_static(unsigned int size) +{ + void *ptr = av_mallocz(size); + + if(ptr){ + array_static =av_fast_realloc(array_static, &allocated_static, sizeof(void*)*(last_static+1)); + if(!array_static) + return NULL; + array_static[last_static++] = ptr; + } + + return ptr; +} + +static void *ff_realloc_static(void *ptr, unsigned int size) +{ + int i; + if(!ptr) + return av_mallocz_static(size); + /* Look for the old ptr */ + for(i = 0; i < last_static; i++) { + if(array_static[i] == ptr) { + array_static[i] = av_realloc(array_static[i], size); + return array_static[i]; + } + } + return NULL; + +} + +static void av_free_static(void) +{ + while(last_static){ + av_freep(&array_static[--last_static]); + } + av_freep(&array_static); +} + +/** + * Call av_free_static automatically before it's too late + */ + +static void do_free(void) __attribute__ ((destructor)); + +static void do_free(void) +{ + av_free_static(); +} + void align_put_bits(PutBitContext *s) { diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 3fd5eb331..a245b90fc 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -73,60 +73,6 @@ void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size) return ptr; } -static unsigned int last_static = 0; -static unsigned int allocated_static = 0; -static void** array_static = NULL; - -void *av_mallocz_static(unsigned int size) -{ - void *ptr = av_mallocz(size); - - if(ptr){ - array_static =av_fast_realloc(array_static, &allocated_static, sizeof(void*)*(last_static+1)); - if(!array_static) - return NULL; - array_static[last_static++] = ptr; - } - - return ptr; -} - -void *ff_realloc_static(void *ptr, unsigned int size) -{ - int i; - if(!ptr) - return av_mallocz_static(size); - /* Look for the old ptr */ - for(i = 0; i < last_static; i++) { - if(array_static[i] == ptr) { - array_static[i] = av_realloc(array_static[i], size); - return array_static[i]; - } - } - return NULL; - -} - -void av_free_static(void) -{ - while(last_static){ - av_freep(&array_static[--last_static]); - } - av_freep(&array_static); -} - -/** - * Call av_free_static automatically before it's too late - */ - -static void do_free(void) __attribute__ ((destructor)); - -static void do_free(void) -{ - av_free_static(); -} - - /* encoder management */ AVCodec *first_avcodec = NULL; -- 2.34.1