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

James Almer jamrial at gmail.com
Fri Sep 8 00:26:50 EEST 2017


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.

CCing Vittorio as he's the author of the filter.


More information about the ffmpeg-devel mailing list