# HG changeset patch # User michael # Date 1212181953 0 # Node ID da73a98945ea7f06e9ecc911aec19cfb3f76d198 # Parent 778ecab25dd83e04564b563f2b2972ceb848c578 Move *_static to bitstream.c which is the only file left which needs them. diff -r 778ecab25dd8 -r da73a98945ea avcodec.h --- a/avcodec.h Fri May 30 21:08:41 2008 +0000 +++ b/avcodec.h Fri May 30 21:12:33 2008 +0000 @@ -2918,31 +2918,6 @@ */ 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 -r 778ecab25dd8 -r da73a98945ea bitstream.c --- a/bitstream.c Fri May 30 21:08:41 2008 +0000 +++ b/bitstream.c Fri May 30 21:12:33 2008 +0000 @@ -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 -r 778ecab25dd8 -r da73a98945ea utils.c --- a/utils.c Fri May 30 21:08:41 2008 +0000 +++ b/utils.c Fri May 30 21:12:33 2008 +0000 @@ -73,60 +73,6 @@ 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;