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

Vittorio Giovara vittorio.giovara at gmail.com
Fri Sep 8 15:39:28 EEST 2017


On Thu, Sep 7, 2017 at 11:26 PM, James Almer <jamrial at gmail.com> 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.
>

Another option, although not ideal, could be to make this filter dependent
on vf_zscale, which suffers from the same bug but is disabled on those
architecture because zimg is not installed.
-- 
Vittorio


More information about the ffmpeg-devel mailing list