From 1f91cdce0b95b9395bd8d085146dcc8b06418614 Mon Sep 17 00:00:00 2001 From: Ramiro Polla Date: Wed, 7 Jan 2009 23:36:34 +0000 Subject: [PATCH] Use posix_memalign() if available. Originally committed as revision 16488 to svn://svn.ffmpeg.org/ffmpeg/trunk --- configure | 6 ++++-- libavutil/mem.c | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 2c42b47c70..fe20844a51 100755 --- a/configure +++ b/configure @@ -866,6 +866,7 @@ HAVE_LIST=" memalign mkstemp pld + posix_memalign ppc64 round roundf @@ -1819,6 +1820,7 @@ check_func getrusage check_func inet_aton $network_extralibs check_func memalign check_func mkstemp +check_func posix_memalign check_func_headers windows.h GetProcessTimes check_header conio.h @@ -1833,8 +1835,8 @@ check_header vdpau/vdpau.h check_header vdpau/vdpau_x11.h check_header X11/extensions/XvMClib.h -if ! enabled_any memalign memalign_hack && enabled need_memalign ; then - die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack." +if ! enabled_any memalign memalign_hack posix_memalign && enabled need_memalign ; then + die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack." fi disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib diff --git a/libavutil/mem.c b/libavutil/mem.c index 960074c70f..328bef787c 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -31,6 +31,7 @@ #undef free #undef realloc +#include #ifdef HAVE_MALLOC_H #include #endif @@ -41,7 +42,7 @@ void *av_malloc(unsigned int size) { - void *ptr; + void *ptr = NULL; #ifdef CONFIG_MEMALIGN_HACK long diff; #endif @@ -57,6 +58,8 @@ void *av_malloc(unsigned int size) diff= ((-(long)ptr - 1)&15) + 1; ptr = (char*)ptr + diff; ((char*)ptr)[-1]= diff; +#elif defined (HAVE_POSIX_MEMALIGN) + posix_memalign(&ptr,16,size); #elif defined (HAVE_MEMALIGN) ptr = memalign(16,size); /* Why 64?