[FFmpeg-devel] Moving if(constant expression) to preprocessor?
Axel Holzinger
aholzinger
Sat Sep 18 18:00:40 CEST 2010
Hi M?ns and all,
M?ns Rullg?rd wrote:
> "Axel Holzinger" <aholzinger at gmx.de> writes:
>
> > Hi all,
> >
> > if compiling FFmpeg code with zero optimisations (even without
dead
> > code elimination) there are linker errors (undefined references to
> > functions or structs) that come from constructs like i.e. the
> > following in libavcodec/allcodecs.c:
> >
> > if(CONFIG_##X##_HWACCEL) av_register_hwaccel(&x##_hwaccel); }
> >
> > The runtime (lower case) "if" leads to an undefined
> reference, because
> > it is evaluated at runtime and not at compile time.
> >
> > If dead code eliminitation optimisation is on, this isn't an
issue,
> > but with optimisations completely off it is.
>
> Don't do that then.
Hehe, if we all would be so shy, we would still live in caves,
wouldn't we :-)
> > Is there interest in doing this in a way where already the
> > preprocessor is solving this (instead of the optimiser)?
>
> No.
Ah.
> > Then I would try and find a solution based on preprocessor magic.
>
> That is not easily possible.
Says who ;-)
You could leave this up to me or others.
It is possible to write a macro that does the trick and in the end the
above line would for example look like this:
AV_COND_IF(CONFIG_##X##_HWACCEL, (av_register_hwaccel(&x##_hwaccel)),)
; }
Wouldn't that still be fine? And it could be done with a few lines of
generic macro defintions that could go to some generic header.
What would be the disadvantage?
Cheers
Axel
More information about the ffmpeg-devel
mailing list