[FFmpeg-devel] [PATCH] avfilter/vf_tonemap: don't use NAN constant as an initializer

Michael Niedermayer michael at niedermayer.cc
Fri Sep 8 01:17:22 EEST 2017


On Thu, Sep 07, 2017 at 06:26:50PM -0300, James Almer wrote:
> On 9/7/2017 6:16 PM, Michael Niedermayer wrote:
> > On Wed, Sep 06, 2017 at 10:59:13PM -0300, James Almer wrote:
> >> Netbsd:
> >> src/libavfilter/vf_tonemap.c:314: error: initializer element is not constant
> >> src/libavfilter/vf_tonemap.c:314: error: (near initialization for 'tonemap_options[8].default_val.dbl')
> >>
> >> DJGPP
> >> src/libavfilter/vf_tonemap.c:314:87: error: initializer element is not constant
> >>      { "param",        "tonemap parameter", OFFSET(param), AV_OPT_TYPE_DOUBLE, {.dbl = NAN}, DBL_MIN, DBL_MAX, FLAGS },
> >>                                                                                        ^
> >> src/libavfilter/vf_tonemap.c:314:87: note: (near initialization for 'tonemap_options[8].default_val.dbl')
> >>
> >> Signed-off-by: James Almer <jamrial at gmail.com>
> >> ---
> >>  libavfilter/vf_tonemap.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/libavfilter/vf_tonemap.c b/libavfilter/vf_tonemap.c
> >> index 10308bdb16..d2c7ffa831 100644
> >> --- a/libavfilter/vf_tonemap.c
> >> +++ b/libavfilter/vf_tonemap.c
> >> @@ -311,7 +311,7 @@ static const AVOption tonemap_options[] = {
> >>      {     "reinhard", 0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_REINHARD},          0, 0, FLAGS, "tonemap" },
> >>      {     "hable",    0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_HABLE},             0, 0, FLAGS, "tonemap" },
> >>      {     "mobius",   0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_MOBIUS},            0, 0, FLAGS, "tonemap" },
> >> -    { "param",        "tonemap parameter", OFFSET(param), AV_OPT_TYPE_DOUBLE, {.dbl = NAN}, DBL_MIN, DBL_MAX, FLAGS },
> >> +    { "param",        "tonemap parameter", OFFSET(param), AV_OPT_TYPE_DOUBLE, {.dbl = nan("")}, DBL_MIN, DBL_MAX, FLAGS },
> > 
> > building shared libs: (seems ok with static)
> > on linux x86-64
> > 
> > src/libavfilter/vf_tonemap.c:314:108: error: initializer element is not a compile-time constant
> >     { "param", "tonemap parameter", __builtin_offsetof(TonemapContext, param), AV_OPT_TYPE_DOUBLE, {.dbl = nan("")}, 2.2250738585072014e-308, 1.7976931348623157e+308, 16 | (1<<16) },
> 
> What can we do, then? NAN and nan("") are sometimes compile-time
> constants and sometimes not, apparently depending on build type and
> target system.

using a finite value instead of NAN would avoid this problem
DBL_MIN or DBL_MAX may be options

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Good people do not need laws to tell them to act responsibly, while bad
people will find a way around the laws. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170908/064ea0e3/attachment.sig>


More information about the ffmpeg-devel mailing list