[FFmpeg-devel] [PATCH 0/4] Fix FFmpeg compilation without DCE

L. E. Segovia amy at amyspark.me
Tue Nov 1 23:59:32 EET 2022


Hi all,

This is a patch to fix building FFmpeg without having DCE enabled.
This was previously attempted by Andreas Rheinhardt in commit 
40e6575aa3eed64cd32bf28c00ae57edc5acb25a. However, this is not remotely
enough for MSVC; one can quickly check for this by configuring the build
without any optimizations, and then overriding OPTFLAGS with /Od:

  ../configure --disable-asm --disable-optimizations --optflags=-Od --enable-shared --disable-static --toolchain=msvc

Issuing make should yield the first of many LNK2019 errors:

  LD      libavformat/avformat-59.dll
    Creating library libavformat/avformat.lib and object libavformat/avformat.exp
  rtmpproto.o : error LNK2019: unresolved external symbol ff_rtmpe_gen_pub_key referenced in function rtmp_handshake
  rtmpproto.o : error LNK2019: unresolved external symbol ff_rtmpe_compute_secret_key referenced in function rtmp_handshake
  rtmpproto.o : error LNK2019: unresolved external symbol ff_rtmpe_encrypt_sig referenced in function rtmp_handshake
  rtmpproto.o : error LNK2019: unresolved external symbol ff_rtmpe_update_keystream referenced in function rtmp_handshake
  libavformat\avformat-59.dll : fatal error LNK1120: 4 unresolved externals
  make: *** [/c/Users/Amalia/Desktop/ffmpeg/ffbuild/library.mak:119: libavformat/avformat-59.dll] Error 96

The proposed patchset comprehensively converts all instances of ARCH_FOO, 
CONFIG_FOO, INLINE_FOO and EXTERNAL_FOO to the equivalent preprocessor
guards.

L. E. Segovia (4):
  all: Replace if (ARCH_FOO) checks by #if ARCH_FOO, part 2
  all: Replace if (CONFIG_FOO) checks by #if CONFIG_FOO
  all: Guard if (INLINE*) checks with #if HAVE_INLINE_ASM
  all: Guard if (EXTERNAL*) checks with #if HAVE_X86ASM

 fftools/ffprobe.c                          |  22 +-
 fftools/opt_common.c                       |  18 +-
 libavcodec/x86/aacencdsp_init.c            |   2 +
 libavcodec/x86/aacpsdsp_init.c             |   2 +
 libavcodec/x86/ac3dsp_init.c               |   4 +
 libavcodec/x86/audiodsp_init.c             |   2 +
 libavcodec/x86/bswapdsp_init.c             |   2 +
 libavcodec/x86/cavsdsp.c                   |   2 +
 libavcodec/x86/celt_pvq_init.c             |   2 +
 libavcodec/x86/cfhddsp_init.c              |   2 +
 libavcodec/x86/cfhdencdsp_init.c           |   2 +
 libavcodec/x86/dcadsp_init.c               |   4 +
 libavcodec/x86/dct_init.c                  |   2 +
 libavcodec/x86/dnxhdenc_init.c             |   2 +
 libavcodec/x86/exrdsp_init.c               |   2 +
 libavcodec/x86/fdctdsp_init.c              |   2 +
 libavcodec/x86/fft_init.c                  |   2 +
 libavcodec/x86/flacdsp_init.c              |   8 +-
 libavcodec/x86/g722dsp_init.c              |   2 +
 libavcodec/x86/h263dsp_init.c              |   2 +
 libavcodec/x86/h264_intrapred_init.c       |   2 +
 libavcodec/x86/h264chroma_init.c           |   2 +
 libavcodec/x86/hevcdsp_init.c              | 465 +++++++++++----------
 libavcodec/x86/hpeldsp_init.c              |   2 +
 libavcodec/x86/hpeldsp_vp3_init.c          |   2 +
 libavcodec/x86/huffyuvdsp_init.c           |   2 +
 libavcodec/x86/huffyuvencdsp_init.c        |   2 +
 libavcodec/x86/idctdsp_init.c              |  11 +-
 libavcodec/x86/jpeg2000dsp_init.c          |   2 +
 libavcodec/x86/lossless_videodsp_init.c    |   2 +
 libavcodec/x86/lossless_videoencdsp_init.c |   2 +
 libavcodec/x86/mdct15_init.c               |   2 +
 libavcodec/x86/me_cmp_init.c               |   2 +
 libavcodec/x86/mlpdsp_init.c               |   8 +-
 libavcodec/x86/mpegvideoencdsp_init.c      |   2 +
 libavcodec/x86/opusdsp_init.c              |   2 +
 libavcodec/x86/pixblockdsp_init.c          |   2 +
 libavcodec/x86/pngdsp_init.c               |   2 +
 libavcodec/x86/proresdsp_init.c            |   2 +
 libavcodec/x86/rv34dsp_init.c              |   2 +
 libavcodec/x86/sbcdsp_init.c               |   2 +
 libavcodec/x86/sbrdsp_init.c               |   2 +
 libavcodec/x86/svq1enc_init.c              |   2 +
 libavcodec/x86/utvideodsp_init.c           |   2 +
 libavcodec/x86/v210enc_init.c              |   2 +
 libavcodec/x86/vc1dsp_init.c               |   6 +-
 libavcodec/x86/vorbisdsp_init.c            |   2 +
 libavcodec/x86/vp3dsp_init.c               |   2 +
 libavcodec/x86/vp6dsp_init.c               |   2 +
 libavfilter/x86/af_afir_init.c             |   2 +
 libavfilter/x86/af_anlmdn_init.c           |   2 +
 libavfilter/x86/af_volume_init.c           |   2 +
 libavfilter/x86/avf_showcqt_init.c         |   2 +
 libavfilter/x86/colorspacedsp_init.c       |   6 +-
 libavfilter/x86/vf_atadenoise_init.c       |   8 +-
 libavfilter/x86/vf_blend_init.c            |   2 +
 libavfilter/x86/vf_bwdif_init.c            |   2 +
 libavfilter/x86/vf_convolution_init.c      |   2 +
 libavfilter/x86/vf_framerate_init.c        |   2 +
 libavfilter/x86/vf_fspp_init.c             |   2 +
 libavfilter/x86/vf_gblur_init.c            |   2 +
 libavfilter/x86/vf_hflip_init.c            |   2 +
 libavfilter/x86/vf_limiter_init.c          |   2 +
 libavfilter/x86/vf_maskedclamp_init.c      |   2 +
 libavfilter/x86/vf_maskedmerge_init.c      |   2 +
 libavfilter/x86/vf_overlay_init.c          |   2 +
 libavfilter/x86/vf_pp7_init.c              |   2 +
 libavfilter/x86/vf_psnr_init.c             |   2 +
 libavfilter/x86/vf_removegrain_init.c      |   2 +
 libavfilter/x86/vf_ssim_init.c             |   8 +-
 libavfilter/x86/vf_stereo3d_init.c         |   2 +
 libavfilter/x86/vf_threshold_init.c        |   2 +
 libavfilter/x86/vf_tinterlace_init.c       |   2 +
 libavfilter/x86/vf_transpose_init.c        |   2 +
 libavfilter/x86/vf_v360_init.c             |   2 +
 libavfilter/x86/vf_w3fdif_init.c           |   6 +-
 libavfilter/x86/vf_yadif_init.c            |   2 +
 libavformat/rtmpproto.c                    |  24 +-
 libavutil/x86/fixed_dsp_init.c             |   2 +
 libavutil/x86/float_dsp_init.c             |   2 +
 libavutil/x86/imgutils_init.c              |   2 +
 libavutil/x86/lls_init.c                   |   2 +
 libavutil/x86/pixelutils_init.c            |   2 +
 libswresample/x86/audio_convert_init.c     |   2 +
 libswresample/x86/resample_init.c          |   6 +
 libswscale/x86/rgb2rgb.c                   |   2 +
 libswscale/x86/swscale.c                   |   2 +
 87 files changed, 493 insertions(+), 255 deletions(-)

-- 
2.37.1.windows.1



More information about the ffmpeg-devel mailing list