PR #21007 opened by Amyspark (amyspark)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21007
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21007.patch

Hi all,

This MR comes from the GStreamer Meson port of FFmpeg.

The files gated here are empty on all platforms but x86_64; these cause Nasm to 
panic when generating debug information, and MSVC < 2022 17.6 to hang when 
attempting to link them. See e.g.

- https://bugzilla.nasm.us/show_bug.cgi?id=3392738

- 
https://developercommunity.visualstudio.com/t/MSVC-Hangs-when-compiling-ffmpeg-When-l/10233953

The original 262e7439c6 only addressed simple_idct*.asm on avcodec, on 
GStreamer we found a few more that were looked over.

All feedback is really appreciated.


>From a03c7a560a8c33977ac93022ad64901c7427ce7e Mon Sep 17 00:00:00 2001
From: "L. E. Segovia" <[email protected]>
Date: Mon, 24 Nov 2025 17:58:08 +0000
Subject: [PATCH 1/2] avcodec/Makefile: Finish gating empty X86ASM-OBJS files
 for Nasm

The files gated here are empty on all platforms but x86_64; these cause
Nasm to panic when generating debug information, and MSVC < 2022 17.6
to hang when attempting to link them. See e.g.

- https://bugzilla.nasm.us/show_bug.cgi?id=3392738

- 
https://developercommunity.visualstudio.com/t/MSVC-Hangs-when-compiling-ffmpeg-When-l/10233953

The original 262e7439c6d58564d21ffffb05ade84bac4482ef only addressed
simple_idct*.asm, on GStreamer we found a few more that were looked
over.
---
 libavcodec/x86/Makefile      | 16 ++++++++++++----
 libavcodec/x86/hevc/Makefile |  6 ++++--
 libavcodec/x86/vvc/Makefile  |  2 ++
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile
index 1c1e14b4b8..80f1e72ce1 100644
--- a/libavcodec/x86/Makefile
+++ b/libavcodec/x86/Makefile
@@ -150,9 +150,13 @@ X86ASM-OBJS-$(CONFIG_ADPCM_G722_DECODER) += x86/g722dsp.o
 X86ASM-OBJS-$(CONFIG_ADPCM_G722_ENCODER) += x86/g722dsp.o
 X86ASM-OBJS-$(CONFIG_ALAC_DECODER)     += x86/alacdsp.o
 X86ASM-OBJS-$(CONFIG_APNG_DECODER)     += x86/pngdsp.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_APV_DECODER)      += x86/apv_dsp.o
+endif
 X86ASM-OBJS-$(CONFIG_CAVS_DECODER)     += x86/cavsidct.o x86/cavs_qpel.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_CFHD_ENCODER)     += x86/cfhdencdsp.o
+endif
 X86ASM-OBJS-$(CONFIG_CFHD_DECODER)     += x86/cfhddsp.o
 X86ASM-OBJS-$(CONFIG_DCA_DECODER)      += x86/dcadsp.o x86/synth_filter.o
 X86ASM-OBJS-$(CONFIG_DIRAC_DECODER)    += x86/diracdsp.o                \
@@ -165,16 +169,19 @@ X86ASM-OBJS-$(CONFIG_FLAC_ENCODER)     += 
x86/flac_dsp_gpl.o
 endif
 X86ASM-OBJS-$(CONFIG_JPEG2000_DECODER) += x86/jpeg2000dsp.o
 X86ASM-OBJS-$(CONFIG_LSCR_DECODER)     += x86/pngdsp.o
-X86ASM-OBJS-$(CONFIG_MLP_DECODER)      += x86/mlpdsp.o
 X86ASM-OBJS-$(CONFIG_MPEG4_DECODER)    += x86/xvididct.o
 X86ASM-OBJS-$(CONFIG_PNG_DECODER)      += x86/pngdsp.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_PRORES_DECODER)   += x86/proresdsp.o
 X86ASM-OBJS-$(CONFIG_PRORES_RAW_DECODER) += x86/proresdsp.o
+endif
 X86ASM-OBJS-$(CONFIG_RV40_DECODER)     += x86/rv40dsp.o
 X86ASM-OBJS-$(CONFIG_SBC_ENCODER)      += x86/sbcdsp.o
 X86ASM-OBJS-$(CONFIG_SVQ1_ENCODER)     += x86/svq1enc.o
 X86ASM-OBJS-$(CONFIG_TAK_DECODER)      += x86/takdsp.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_TRUEHD_DECODER)   += x86/mlpdsp.o
+endif
 X86ASM-OBJS-$(CONFIG_TTA_DECODER)      += x86/ttadsp.o
 X86ASM-OBJS-$(CONFIG_TTA_ENCODER)      += x86/ttaencdsp.o
 X86ASM-OBJS-$(CONFIG_UTVIDEO_DECODER)  += x86/utvideodsp.o
@@ -185,12 +192,13 @@ X86ASM-OBJS-$(CONFIG_VP6_DECODER)      += x86/vp6dsp.o
 X86ASM-OBJS-$(CONFIG_VP9_DECODER)      += x86/vp9intrapred.o            \
                                           x86/vp9intrapred_16bpp.o      \
                                           x86/vp9itxfm.o                \
-                                          x86/vp9itxfm_avx2.o           \
-                                          x86/vp9itxfm_avx512.o         \
                                           x86/vp9itxfm_16bpp.o          \
-                                          x86/vp9itxfm_16bpp_avx512.o   \
                                           x86/vp9lpf.o                  \
                                           x86/vp9lpf_16bpp.o            \
                                           x86/vp9mc.o                   \
                                           x86/vp9mc_16bpp.o
+ifdef ARCH_X86_64
+X86ASM-OBJS-$(CONFIG_VP9_DECODER)      += x86/vp9itxfm_avx512.o         \
+                                          x86/vp9itxfm_16bpp_avx512.o
+endif
 X86ASM-OBJS-$(CONFIG_WEBP_DECODER)     += x86/vp8dsp.o
diff --git a/libavcodec/x86/hevc/Makefile b/libavcodec/x86/hevc/Makefile
index 8f1c88c569..b36715d503 100644
--- a/libavcodec/x86/hevc/Makefile
+++ b/libavcodec/x86/hevc/Makefile
@@ -8,5 +8,7 @@ X86ASM-OBJS-$(CONFIG_HEVC_DECODER)      += x86/hevc/add_res.o   
    \
                                            x86/hevc/idct.o          \
                                            x86/hevc/mc.o            \
                                            x86/hevc/sao.o           \
-                                           x86/hevc/sao_10bit.o     \
-                                           x86/h26x/h2656_inter.o
+                                           x86/hevc/sao_10bit.o
+ifdef ARCH_X86_64
+X86ASM-OBJS-$(CONFIG_HEVC_DECODER)      += x86/h26x/h2656_inter.o
+endif
diff --git a/libavcodec/x86/vvc/Makefile b/libavcodec/x86/vvc/Makefile
index c426b156c1..1fd76b2155 100644
--- a/libavcodec/x86/vvc/Makefile
+++ b/libavcodec/x86/vvc/Makefile
@@ -3,6 +3,7 @@ clean::
 
 OBJS-$(CONFIG_VVC_DECODER)             += x86/vvc/dsp_init.o        \
                                           x86/h26x/h2656dsp.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_VVC_DECODER)      += x86/vvc/alf.o             \
                                           x86/vvc/dmvr.o            \
                                           x86/vvc/mc.o              \
@@ -11,3 +12,4 @@ X86ASM-OBJS-$(CONFIG_VVC_DECODER)      += x86/vvc/alf.o       
      \
                                           x86/vvc/sao.o             \
                                           x86/vvc/sao_10bit.o       \
                                           x86/h26x/h2656_inter.o
+endif
-- 
2.49.1


>From 5fc9eb97a96e8212835df801e59b4c5cfecb38d6 Mon Sep 17 00:00:00 2001
From: "L. E. Segovia" <[email protected]>
Date: Mon, 24 Nov 2025 17:58:08 +0000
Subject: [PATCH 2/2] avfilter/x86/Makefile: Finish gating empty X86ASM-OBJS
 files for Nasm

The files gated here are empty on all platforms but x86_64; these cause
Nasm to panic when generating debug information, and MSVC < 2022 17.6
to hang when attempting to link them. See e.g.

- https://bugzilla.nasm.us/show_bug.cgi?id=3392738

- 
https://developercommunity.visualstudio.com/t/MSVC-Hangs-when-compiling-ffmpeg-When-l/10233953

The original 262e7439c6d58564d21ffffb05ade84bac4482ef only addressed
simple_idct*.asm on avcodec, on GStreamer we found a few more that
were looked over.
---
 libavfilter/x86/Makefile | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/libavfilter/x86/Makefile b/libavfilter/x86/Makefile
index b485c10fbe..aae0a4305f 100644
--- a/libavfilter/x86/Makefile
+++ b/libavfilter/x86/Makefile
@@ -50,29 +50,41 @@ X86ASM-OBJS-$(CONFIG_SCENE_SAD)              += 
x86/scene_sad.o
 
 X86ASM-OBJS-$(CONFIG_AFIR_FILTER)            += x86/af_afir.o
 X86ASM-OBJS-$(CONFIG_ANLMDN_FILTER)          += x86/af_anlmdn.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_ATADENOISE_FILTER)      += x86/vf_atadenoise.o
 X86ASM-OBJS-$(CONFIG_BLACKDETECT_FILTER)     += x86/vf_blackdetect.o
+endif
 X86ASM-OBJS-$(CONFIG_BLEND_FILTER)           += x86/vf_blend.o
 X86ASM-OBJS-$(CONFIG_BWDIF_FILTER)           += x86/vf_bwdif.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_COLORDETECT_FILTER)     += x86/vf_colordetect.o
+endif
 X86ASM-OBJS-$(CONFIG_COLORSPACE_FILTER)      += x86/colorspacedsp.o
 X86ASM-OBJS-$(CONFIG_CONVOLUTION_FILTER)     += x86/vf_convolution.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_EBUR128_FILTER)         += x86/f_ebur128.o
+endif
 X86ASM-OBJS-$(CONFIG_EQ_FILTER)              += x86/vf_eq.o
 X86ASM-OBJS-$(CONFIG_FRAMERATE_FILTER)       += x86/vf_framerate.o
 X86ASM-OBJS-$(CONFIG_FSPP_FILTER)            += x86/vf_fspp.o
 X86ASM-OBJS-$(CONFIG_GBLUR_FILTER)           += x86/vf_gblur.o
 X86ASM-OBJS-$(CONFIG_GRADFUN_FILTER)         += x86/vf_gradfun.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_HALDCLUT_FILTER)        += x86/vf_lut3d.o
+endif
 X86ASM-OBJS-$(CONFIG_HFLIP_FILTER)           += x86/vf_hflip.o
 X86ASM-OBJS-$(CONFIG_HQDN3D_FILTER)          += x86/vf_hqdn3d.o
 X86ASM-OBJS-$(CONFIG_IDET_FILTER)            += x86/vf_idetdsp.o
 X86ASM-OBJS-$(CONFIG_INTERLACE_FILTER)       += x86/vf_interlace.o
 X86ASM-OBJS-$(CONFIG_LIMITER_FILTER)         += x86/vf_limiter.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_LUT3D_FILTER)           += x86/vf_lut3d.o
+endif
 X86ASM-OBJS-$(CONFIG_MASKEDCLAMP_FILTER)     += x86/vf_maskedclamp.o
 X86ASM-OBJS-$(CONFIG_MASKEDMERGE_FILTER)     += x86/vf_maskedmerge.o
+ifdef ARCH_X86_64
 X86ASM-OBJS-$(CONFIG_NLMEANS_FILTER)         += x86/vf_nlmeans.o
+endif
 X86ASM-OBJS-$(CONFIG_OVERLAY_FILTER)         += x86/vf_overlay.o
 X86ASM-OBJS-$(CONFIG_PP7_FILTER)             += x86/vf_pp7.o
 X86ASM-OBJS-$(CONFIG_PSNR_FILTER)            += x86/vf_psnr.o
-- 
2.49.1

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to