[FFmpeg-devel] [PATCH 1/2] Replace FFMIN/FFMAX by type specific macros
Rémi Denis-Courmont
remi at remlab.net
Sat Jun 28 21:57:36 EEST 2025
Le lauantaina 28. kesäkuuta 2025, 17.35.17 Itä-Euroopan kesäaika Kacper
Michajlow a écrit :
> On Mon, 2 Jun 2025 at 17:06, Rémi Denis-Courmont <remi at remlab.net> wrote:
> > Le 31 mai 2025 20:40:40 GMT+03:00, Marton Balint <cus at passwd.hu> a écrit :
> > >On Sat, 31 May 2025, Michael Niedermayer wrote:
> > >> This allows adjusting them to exactly match whatever is fastest on
> > >> a given CPU for each type.
> > >
> > >Did you use some tool to make this patch, or it was just manual work?
> > >
> > >Can't you use C11 generics to make this somewhat automatic?
> >
> > So I tried to do exactly that, but you need multiple levels of generics.
> > In the end, either the compiler crashed or my entire build system crashed
> > because the compiler consumed too much memory.
> Could you elaborate on the problem?
No, I can't. I had neither the skills nor the time to debug my distro's C
compiler.
> I too think that _Generic is the
> way to go here, instead error-prone manual dispatch of the MIN/MAX
> functions. Also with _Generic we can substitute with an inline
> function to fix double evaluation issues. (and whole patch would be
> few lines instead of changing whole source tree)
This is very difficult because FFMIN/FFMAX are also used for pointer
comparisons. The float evaluations (with fmaxf/fminf and co) are invalid and
will not compile, if the operand types are pointer types. Keep in mind that
even not-selected cases of _Generic must compile.
IIRC, I ended up with 4 levels of nested _Generic macros.
> If you let us help you fix the problem you were facing, I think we can
> arrive at a good solution for the problem here.
Even if you can debug GCC, it'll be a decade or so before we can rely on the
hypothetical future fixed version, so I very much doubt it.
--
ヅニ-クーモン・レミ
Tapiolan uusi kaupunki, Uudenmaan entinen Suomen tasavalta
More information about the ffmpeg-devel
mailing list