[FFmpeg-trac] #9859(undetermined:new): Compilation warnings ATOMIC_VAR_INIT

FFmpeg trac at avcodec.org
Wed Aug 3 08:59:53 EEST 2022


#9859: Compilation warnings ATOMIC_VAR_INIT
-------------------------------------+-------------------------------------
             Reporter:  Jozef        |                    Owner:  (none)
  Chutka                             |
                 Type:  enhancement  |                   Status:  new
             Priority:  normal       |                Component:
                                     |  undetermined
              Version:  unspecified  |               Resolution:
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Description changed by Jozef Chutka:

Old description:

> While compiling ffmpeg (commit 1368b5a) with emscripten 3.1.17, there are
> two warnings, I thinks maintainers might want to look into:
>
> {{{
> fftools/ffmpeg.c:339:41: warning: macro 'ATOMIC_VAR_INIT' has been marked
> as deprecated [-Wdeprecated-pragma]
> static atomic_int transcode_init_done = ATOMIC_VAR_INIT(0);
>                                         ^
> /home/XYZ/ffmpeg-
> wasm/modules/emsdk/upstream/lib/clang/15.0.0/include/stdatomic.h:50:41:
> note: macro marked 'deprecated' here
> #pragma clang deprecated(ATOMIC_VAR_INIT)
>                                         ^
> }}}
>
> To my knowledge, this macro was a part of early draft design for C11
> atomic types. It is not needed in C11, and is deprecated in C17 and
> removed in C23.
>
> The other warning is also interesting:
>
> {{{
> fftools/ffmpeg_filter.c:898:35: warning: floating-point comparison is
> always true; constant cannot be represented exactly in type 'float'
> [-Wliteral-range]
>         if (audio_drift_threshold != 0.1)
>             ~~~~~~~~~~~~~~~~~~~~~ ^  ~~~
> }}}
>
> It turns out that 0.1 is one of the numbers that it is impossible to
> encode in binary floating point. And according to the message the
> condition is as good as having `if(true)` in place. Consider using
> epsilon:
>
> {{{
> if (abs(audio_drift_threshold - 0.1) < epsilon)
> }}}
>
> The SO helped me with some information
> https://stackoverflow.com/questions/73203857/ffmpeg-compilation-warnings-
> atomic-var-init

New description:

 While compiling ffmpeg (commit 1368b5a) with emscripten 3.1.17, there are
 two warnings, I thinks maintainers might want to look into:

 {{{
 fftools/ffmpeg.c:339:41: warning: macro 'ATOMIC_VAR_INIT' has been marked
 as deprecated [-Wdeprecated-pragma]
 static atomic_int transcode_init_done = ATOMIC_VAR_INIT(0);
                                         ^
 /home/XYZ/ffmpeg-
 wasm/modules/emsdk/upstream/lib/clang/15.0.0/include/stdatomic.h:50:41:
 note: macro marked 'deprecated' here
 #pragma clang deprecated(ATOMIC_VAR_INIT)
                                         ^
 }}}

 To my knowledge, this macro was a part of early draft design for C11
 atomic types. It is not needed in C11, and is deprecated in C17 and
 removed in C23.

 The other warning is also interesting:

 {{{
 fftools/ffmpeg_filter.c:898:35: warning: floating-point comparison is
 always true; constant cannot be represented exactly in type 'float'
 [-Wliteral-range]
         if (audio_drift_threshold != 0.1)
             ~~~~~~~~~~~~~~~~~~~~~ ^  ~~~
 }}}

 It turns out that 0.1 is one of the numbers that it is impossible to
 encode in binary floating point. And according to the message the
 condition is as good as having `if(true)` in place. Consider using
 epsilon:

 {{{
 if (abs(audio_drift_threshold - 0.1) < epsilon)
 }}}

 SO helped me with understanding the details
 https://stackoverflow.com/questions/73203857/ffmpeg-compilation-warnings-
 atomic-var-init

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/9859#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list