X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmem.c;h=c5ca166d337d4ae324557c7e407a7d5470d13554;hb=d5a21172283572af587b3d939eba0091484d3263;hp=5799c07744ea5bb671283165894e155fab52110e;hpb=8f2b21a80f80eb76b93be5bb96eb2ff113ae3c49;p=ffmpeg diff --git a/libavcodec/mem.c b/libavcodec/mem.c index 5799c07744e..c5ca166d337 100644 --- a/libavcodec/mem.c +++ b/libavcodec/mem.c @@ -16,7 +16,19 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +/** + * @file mem.c + * default memory allocator for libavcodec. + */ + #include "avcodec.h" + +/* here we can use OS dependant allocation functions */ +#undef malloc +#undef free +#undef realloc + #ifdef HAVE_MALLOC_H #include #endif @@ -25,10 +37,15 @@ memory allocator. You do not need to suppress this file because the linker will do it automatically */ -/* memory alloc */ -void *av_malloc(int size) +/** + * Memory allocation of size byte with alignment suitable for all + * memory accesses (including vectors if available on the + * CPU). av_malloc(0) must return a non NULL pointer. + */ +void *av_malloc(unsigned int size) { void *ptr; + #if defined (HAVE_MEMALIGN) ptr = memalign(16,size); /* Why 64? @@ -60,14 +77,19 @@ void *av_malloc(int size) #else ptr = malloc(size); #endif - if (!ptr) - return NULL; -//fprintf(stderr, "%X %d\n", (int)ptr, size); - /* NOTE: this memset should not be present */ - memset(ptr, 0, size); return ptr; } +/** + * av_realloc semantics (same as glibc): if ptr is NULL and size > 0, + * identical to malloc(size). If size is zero, it is identical to + * free(ptr) and NULL is returned. + */ +void *av_realloc(void *ptr, unsigned int size) +{ + return realloc(ptr, size); +} + /* NOTE: ptr = NULL is explicetly allowed */ void av_free(void *ptr) {