summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamiro Polla <ramiro.polla@gmail.com>2009-01-07 23:36:34 +0000
committerRamiro Polla <ramiro.polla@gmail.com>2009-01-07 23:36:34 +0000
commit1f91cdce0b95b9395bd8d085146dcc8b06418614 (patch)
tree05b1995fe1d141182c6a81a543d148432b429b15
parent218a6022e7be21e1f1b78f6f8f06917769e916f4 (diff)
Use posix_memalign() if available.
Originally committed as revision 16488 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rwxr-xr-xconfigure6
-rw-r--r--libavutil/mem.c5
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 <stdlib.h>
#ifdef HAVE_MALLOC_H
#include <malloc.h>
#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?