mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Make LOCAL_ALIGNED macro fully C99 compatible
C99 variadic macros require more arguments than there are named
parameters in the definition. This means we must use an extra
indirection to avoid having two different macros for arrays with
one resp more than one dimension.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 96aad41e81
)
This commit is contained in:
parent
d5ec00ba57
commit
60c99b5510
@ -661,20 +661,24 @@ 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)
|
||||
#define LOCAL_ALIGNED_A(a, t, v, s, o, ...) \
|
||||
uint8_t la_##v[sizeof(t s o) + (a)]; \
|
||||
t (*v) o = (void *)FFALIGN((uintptr_t)la_##v, a)
|
||||
|
||||
#define LOCAL_ALIGNED_D(a, t, v, s, o, ...) DECLARE_ALIGNED(a, t, v) s o
|
||||
|
||||
#define LOCAL_ALIGNED(a, t, v, ...) LOCAL_ALIGNED_A(a, t, v, __VA_ARGS__,,)
|
||||
|
||||
#if HAVE_LOCAL_ALIGNED_8
|
||||
# define LOCAL_ALIGNED_8(t, v, s, ...) DECLARE_ALIGNED(8, t, v) s __VA_ARGS__
|
||||
# define LOCAL_ALIGNED_8(t, v, ...) LOCAL_ALIGNED_D(8, t, v, __VA_ARGS__,,)
|
||||
#else
|
||||
# define LOCAL_ALIGNED_8(t, v, s, ...) LOCAL_ALIGNED(8, t, v, s, __VA_ARGS__)
|
||||
# define LOCAL_ALIGNED_8(t, v, ...) LOCAL_ALIGNED(8, t, v, __VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#if HAVE_LOCAL_ALIGNED_16
|
||||
# define LOCAL_ALIGNED_16(t, v, s, ...) DECLARE_ALIGNED(16, t, v) s __VA_ARGS__
|
||||
# define LOCAL_ALIGNED_16(t, v, ...) LOCAL_ALIGNED_D(16, t, v, __VA_ARGS__,,)
|
||||
#else
|
||||
# define LOCAL_ALIGNED_16(t, v, s, ...) LOCAL_ALIGNED(16, t, v, s, __VA_ARGS__)
|
||||
# define LOCAL_ALIGNED_16(t, v, ...) LOCAL_ALIGNED(16, t, v, __VA_ARGS__)
|
||||
#endif
|
||||
|
||||
/* PSNR */
|
||||
|
Loading…
Reference in New Issue
Block a user