[FFmpeg-devel] [PATCH 08/10] avcodec/x86/fdct: guard usage of undefined functions with preprocessor
Kacper Michajlow
kasper93 at gmail.com
Tue Jul 22 22:27:24 EEST 2025
On Tue, 22 Jul 2025 at 21:16, Kacper Michajłow <kasper93 at gmail.com> wrote:
>
> The asumption is that DCE will remove references to those functions.
> However some compilers with certain instrumentation enabled doesn't DCE
> those at all, resulting in linking failure. Tested with cl.exe -RTCu -RTCs.
>
> Signed-off-by: Kacper Michajłow <kasper93 at gmail.com>
> ---
> libavcodec/x86/fdctdsp_init.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/libavcodec/x86/fdctdsp_init.c b/libavcodec/x86/fdctdsp_init.c
> index 92a842433d..d43e45d220 100644
> --- a/libavcodec/x86/fdctdsp_init.c
> +++ b/libavcodec/x86/fdctdsp_init.c
> @@ -31,8 +31,10 @@ av_cold void ff_fdctdsp_init_x86(FDCTDSPContext *c, AVCodecContext *avctx,
>
> if (!high_bit_depth) {
> if ((dct_algo == FF_DCT_AUTO || dct_algo == FF_DCT_MMX)) {
> +#if HAVE_SSE2_INLINE
> if (INLINE_SSE2(cpu_flags))
> c->fdct = ff_fdct_sse2;
> +#endif
> }
> }
> }
> --
> 2.50.1
>
This likely would trigger an unused variable (cpu_flags) warning, I've
changed locally to put the whole body in #if.
--- a/libavcodec/x86/fdctdsp_init.c
+++ b/libavcodec/x86/fdctdsp_init.c
@@ -26,6 +26,7 @@
av_cold void ff_fdctdsp_init_x86(FDCTDSPContext *c, AVCodecContext *avctx,
unsigned high_bit_depth)
{
+#if HAVE_SSE2_INLINE
int cpu_flags = av_get_cpu_flags();
const int dct_algo = avctx->dct_algo;
@@ -35,4 +36,5 @@ av_cold void ff_fdctdsp_init_x86(FDCTDSPContext *c,
AVCodecContext *avctx,
c->fdct = ff_fdct_sse2;
}
}
+#endif
}
- Kacper
More information about the ffmpeg-devel
mailing list