them. Originally committed as revision 13568 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -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'. | |||
| */ | |||
| @@ -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) | |||
| { | |||
| @@ -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; | |||