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]
