[FFmpeg-devel] [PATCH] Make DECLARE_ALIGNED macros take array specifiers as separate argument
Thu Jan 21 19:36:51 CET 2010
Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
> On Wed, Jan 20, 2010 at 10:17:55PM +0000, M?ns Rullg?rd wrote:
>> Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
>> > On Wed, Jan 20, 2010 at 09:08:13PM +0000, Mans Rullgard wrote:
>> >> void dsputil_init_sh4(DSPContext* c, AVCodecContext *avctx);
>> >> void dsputil_init_vis(DSPContext* c, AVCodecContext *avctx);
>> >> -#define DECLARE_ALIGNED_16(t, v) DECLARE_ALIGNED(16, t, v)
>> >> -#define DECLARE_ALIGNED_8(t, v) DECLARE_ALIGNED(8, t, v)
>> >> +#define DECLARE_ALIGNED_16(t, v, ...) DECLARE_ALIGNED(16, t, v, __VA_ARGS__)
>> >> +#define DECLARE_ALIGNED_8(t, v, ...) DECLARE_ALIGNED(8, t, v, __VA_ARGS__)
>> > Sorry for being a pain, but doesn't this kind of macro strictly not
>> > allow you to use DECLARE_ALIGNED_16 with only two arguments?
>> Thanks, you're right. Variadic functions are not like that though, grr.
>> I have a different idea which should work, although it's slightly less
>> flexible. It is possible to define the macros such that a declaration
>> will look like this instead:
>> DECLARE_ALIGNED(16, type, var)[x]
>> Does that look reasonable?
> I don't mind much, but wouldn't be simpler to do a separate
> DECLARE_ALIGNED_ARRAY(16, type, var, dimensions)
> instead of beating the current macro with varargs to handle it?
There are no varargs in this proposal. It's so simple I overlooked it
first time around. ;-)
> I guess your suggestion is nicer if you're somewhat confident
> it won't break with the next compiler you try to add support for :-)
I'm confident enough that I already committed the (backwards
compatible) macro changes.
mans at mansr.com
More information about the ffmpeg-devel