OSDN Git Service

1000l in av_mallocz_static()
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 22 Mar 2004 11:00:51 +0000 (11:00 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 22 Mar 2004 11:00:51 +0000 (11:00 +0000)
less overallocation in av_fast_realloc() for small arrays

Originally committed as revision 2913 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/utils.c

index df46930..ba4387c 100644 (file)
@@ -60,7 +60,7 @@ void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size)
     if(min_size < *size) 
         return ptr;
     
-    *size= min_size + 10*1024;
+    *size= 17*min_size/16 + 32;
 
     return av_realloc(ptr, *size);
 }
@@ -69,7 +69,6 @@ void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size)
 static unsigned int last_static = 0;
 static unsigned int allocated_static = 0;
 static void** array_static = NULL;
-static const unsigned int grow_static = 64; // ^2
 
 /**
  * allocation of static arrays - do not use for normal allocation.
@@ -79,7 +78,7 @@ void *av_mallocz_static(unsigned int size)
     void *ptr = av_mallocz(size);
 
     if(ptr){ 
-        array_static =av_fast_realloc(array_static, &allocated_static, last_static+1);
+        array_static =av_fast_realloc(array_static, &allocated_static, sizeof(void*)*(last_static+1));
         array_static[last_static++] = ptr;
     }