From d96cd42969964f2b86949e89c0ba138465646bf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Rullg=C3=A5rd?= Date: Wed, 17 Feb 2010 20:36:12 +0000 Subject: [PATCH] Add LOCAL_ALIGNED() macro for declaring aligned local arrays Originally committed as revision 21864 to svn://svn.ffmpeg.org/ffmpeg/trunk --- configure | 2 ++ libavcodec/dsputil.h | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/configure b/configure index 891b06c433..96890264fc 100755 --- a/configure +++ b/configure @@ -1035,6 +1035,8 @@ HAVE_LIST=" libdc1394_1 libdc1394_2 llrint + local_aligned_16 + local_aligned_8 log2 log2f loongson diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h index 2d8d41af84..af15d9687c 100644 --- a/libavcodec/dsputil.h +++ b/libavcodec/dsputil.h @@ -700,6 +700,22 @@ static inline void emms(void) # define STRIDE_ALIGN 8 #endif +#define LOCAL_ALIGNED(a, t, v, s, ...) \ + uint8_t la_##v[sizeof(t s __VA_ARGS__) + (a)]; \ + t (*v) __VA_ARGS__ = (void *)FFALIGN((uintptr_t)la_##v, a) + +#if HAVE_LOCAL_ALIGNED_8 +# define LOCAL_ALIGNED_8((t, v, s, ...) DECLARE_ALIGNED_8(t, v) s __VA_ARGS__ +#else +# define LOCAL_ALIGNED_8(t, v, s, ...) LOCAL_ALIGNED(8, t, v, s, __VA_ARGS__) +#endif + +#if HAVE_LOCAL_ALIGNED_16 +# define LOCAL_ALIGNED_16((t, v, s, ...) DECLARE_ALIGNED_16(t, v) s __VA_ARGS__ +#else +# define LOCAL_ALIGNED_16(t, v, s, ...) LOCAL_ALIGNED(16, t, v, s, __VA_ARGS__) +#endif + /* PSNR */ void get_psnr(uint8_t *orig_image[3], uint8_t *coded_image[3], int orig_linesize[3], int coded_linesize,