[FFmpeg-devel] [PATCH v2 07/13] avfilter/x86/f_ebur128: add x86 AVX implementation
Niklas Haas
ffmpeg at haasn.xyz
Mon Jun 16 14:19:12 EEST 2025
On Sat, 14 Jun 2025 03:12:22 +0200 Michael Niedermayer <michael at niedermayer.cc> wrote:
> Hi Niklas
>
> On Fri, Jun 13, 2025 at 06:37:50PM +0200, Niklas Haas wrote:
> > From: Niklas Haas <git at haasn.dev>
> >
> > Processes two channels in parallel, using 128-bit XMM registers.
> >
> > In theory, we could go up to YMM registers to process 4 channels, but this is
> > not a gain except for relatively high channel counts (e.g. 7.1), and also
> > complicates the sample load/store operations considerably.
> >
> > I decided to only add an AVX variant, since the C code is not substantially
> > slower enough to justify a separate function just for ancient CPUs.
> > ---
> > libavfilter/f_ebur128.c | 15 ++--
> > libavfilter/f_ebur128.h | 16 ++++
> > libavfilter/x86/Makefile | 2 +
> > libavfilter/x86/f_ebur128.asm | 142 +++++++++++++++++++++++++++++++
> > libavfilter/x86/f_ebur128_init.c | 35 ++++++++
> > 5 files changed, 205 insertions(+), 5 deletions(-)
> > create mode 100644 libavfilter/x86/f_ebur128.asm
> > create mode 100644 libavfilter/x86/f_ebur128_init.c
>
> breaks x86-32
Fixed by enabling this only on 64 bit x86.
>
> src/libavfilter/x86/f_ebur128.asm:116: error: symbol `m8' undefined
> src/libavfilter/x86/f_ebur128.asm:118: error: symbol `m9' undefined
> src/libavfilter/x86/f_ebur128.asm:119: error: symbol `m10' undefined
> src/libavfilter/x86/f_ebur128.asm:120: error: symbol `m11' undefined
> src/libavfilter/x86/f_ebur128.asm:121: error: symbol `m12' undefined
> src/libavfilter/x86/f_ebur128.asm:122: error: symbol `m13' undefined
> src/libavfilter/x86/f_ebur128.asm:124: error: symbol `r7q' undefined
> src/libavfilter/x86/f_ebur128.asm:125: error: symbol `r8q' undefined
> src/libavfilter/x86/f_ebur128.asm:132: error: symbol `r7q' undefined
> src/libavfilter/x86/f_ebur128.asm:91: ... from macro `filter_channels' defined here
> src/libavfilter/x86/f_ebur128.asm:57: ... from macro `FILTER' defined here
> src//libavutil/x86/x86inc.asm:1654: ... from macro `movsd' defined here
> src//libavutil/x86/x86inc.asm:1501: ... from macro `RUN_AVX_INSTR' defined here
> src/libavfilter/x86/f_ebur128.asm:132: error: symbol `r7q' undefined
> src/libavfilter/x86/f_ebur128.asm:91: ... from macro `filter_channels' defined here
> src/libavfilter/x86/f_ebur128.asm:58: ... from macro `FILTER' defined here
> src//libavutil/x86/x86inc.asm:1654: ... from macro `movsd' defined here
> src//libavutil/x86/x86inc.asm:1501: ... from macro `RUN_AVX_INSTR' defined here
> src/libavfilter/x86/f_ebur128.asm:132: error: symbol `r7q' undefined
> ...
>
> [...]
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Concerning the gods, I have no means of knowing whether they exist or not
> or of what sort they may be, because of the obscurity of the subject, and
> the brevity of human life -- Protagoras
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list