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
This commit is contained in:
Michael Niedermayer
2008-05-30 21:12:33 +00:00
parent ceaaf78bb7
commit 09dafaeba1
3 changed files with 55 additions and 80 deletions

View File

@ -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)
{