[FFmpeg-devel] [PATCH 00/41] Stop including superseded functions for x64
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Fri Jun 10 02:15:23 EEST 2022
x64 requires MMX, MMXEXT, SSE and SSE2; yet there is no shortage
of code like the following:
if (EXTERNAL_MMX(cpu_flags)) {
c->ssd_int8_vs_int16 = ff_ssd_int8_vs_int16_mmx;
}
if (EXTERNAL_SSE2(cpu_flags)) {
c->ssd_int8_vs_int16 = ff_ssd_int8_vs_int16_sse2;
}
Given that SSE2 is always present on x64, the only way
for the mmx version to be chosen in the above example
is if SSE2 has been disabled either at compile-time
or at runtime, i.e. it is never used unless one shoots
oneself in the foot.
This patchset therefore disables such functions for x64
by #if'ing them away; x86 has not been affected. This
saves about 140KB.
(Another way to handle this would be to remove every function
that would be overridden if one had a processor capable of
MMX, MMXEXT, SSE and SSE2. x86 processors not fulfilling
this requirement (which are truely ancient nowadays)
would still work, but would be slower, i.e. they would be treated
as second-class citizens. This would have the advantage of
avoiding #ifs and would lighten x86 binaries of code that is
not used at all by the overwhelming majority of users.
I'll update this patchset if it is preferred to do it that way.)
Andreas Rheinhardt (41):
avcodec/x86/qpeldsp: Remove unused ff_put_no_rnd_pixels16_l2_3dnow
avcodec/x86/hevcdsp_init: Remove unnecessary inclusion of get_bits.h
avcodec/hevcdec: Make ff_hevc_pel_weight static
avcodec/v4l2_m2m: Remove unused ff_v4l2_m2m_codec_full_reinit
avcodec/videodsp: Make ff_emulated_edge_mc_16 static
avcodec/x86/fpel: Remove unused ff_avg_pixels4_mmx
avcodec/x86/rv34dsp: Remove unused ff_rv34_idct_dc_mmxext
avcodec/x86/h264_qpel_8bit: Remove unused function
avcodec/x86/vc1dsp_init: Disable overridden functions on x64
avcodec/x86/ac3dsp_init: Disable overridden functions on x64
avcodec/x86/audiodsp_init: Disable overridden functions on x64
avcodec/x86/diracdsp_init: Disable overridden functions on x64
avcodec/x86/mpegvideoenc: Disable overridden functions on x64
avcodec/x86/fdct: Disable overridden functions on x64
avcodec/x86/hevcdsp_init: Disable overridden functions on x64
avcodec/x86/rv40dsp_init: Disable overridden functions on x64
avcodec/x86/cavsdsp: Disable overridden functions on x64
avcodec/x86/h264_intrapred_init: Disable overridden functions on x64
avfilter/x86/vf_noise: Disable overridden functions on x64
avcodec/x86/me_cmp: Disable overridden functions on x64
avcodec/x86/mpegvideoencdsp: Disable ff_pix_norm1_mmx on x64
avcodec/x86/h264dsp_init: Disable overridden functions on x64
avcodec/x86/sbrdsp_init: Disable overridden functions on x64
avcodec/x86/idctdsp_init: Disable overridden functions on x64
avcodec/x86/blockdsp_init: Disable overridden functions on x64
avcodec/x86/pixblockdsp_init: Disable overridden functions on x64
avcodec/x86/lossless_audiodsp_init: Disable overridden functions on
x64
avcodec/x86/svq1enc_init: Disable overridden functions on x64
avcodec/x86/fmtconvert_init: Disable overridden functions on x64
avcodec/x86/hpeldsp_vp3_init: Disable overridden functions on x64
avcodec/x86/hpeldsp_init: Disable overridden functions on x64
avcodec/x86/h264_qpel: Make functions only used here static
avcodec/x86/h264_qpel: Disable overridden functions on x64
avcodec/x86/h264chroma_init: Disable overridden functions on x64
swresample/x86/audio_convert_init: Disable overridden functions on x64
swresample/x86/rematrix_init: Disable overridden functions on x64
swscale/x86/rgb2rgb: Disable overridden functions on x64
swscale/x86/yuv2rgb: Disable overridden functions on x64
swscale/x86/swscale: Disable overridden functions on x64
avfilter/x86/vf_eq_init: Disable overridden functions on x64
avutil/x86/pixelutils_init: Disable overridden functions on x64
libavcodec/hevcdec.c | 10 +--
libavcodec/tests/x86/dct.c | 4 +-
libavcodec/v4l2_m2m.c | 76 ---------------------
libavcodec/videodsp.c | 4 ++
libavcodec/videodsp.h | 1 -
libavcodec/videodsp_template.c | 1 +
libavcodec/x86/ac3dsp.asm | 5 ++
libavcodec/x86/ac3dsp_init.c | 2 +
libavcodec/x86/audiodsp.asm | 4 ++
libavcodec/x86/audiodsp_init.c | 2 +
libavcodec/x86/blockdsp.asm | 4 ++
libavcodec/x86/blockdsp_init.c | 2 +
libavcodec/x86/cavsdsp.c | 20 ++++--
libavcodec/x86/cavsidct.asm | 2 +
libavcodec/x86/diracdsp_init.c | 4 +-
libavcodec/x86/fdct.c | 12 ++--
libavcodec/x86/fdctdsp_init.c | 2 +
libavcodec/x86/fmtconvert.asm | 4 ++
libavcodec/x86/fmtconvert_init.c | 2 +
libavcodec/x86/fpel.asm | 3 +-
libavcodec/x86/h264_chromamc.asm | 4 +-
libavcodec/x86/h264_deblock.asm | 24 ++-----
libavcodec/x86/h264_idct.asm | 57 ++++------------
libavcodec/x86/h264_intrapred.asm | 26 ++++++++
libavcodec/x86/h264_intrapred_10bit.asm | 16 +++++
libavcodec/x86/h264_intrapred_init.c | 20 ++++--
libavcodec/x86/h264_qpel.c | 88 ++++++++++++++-----------
libavcodec/x86/h264_qpel_8bit.asm | 5 +-
libavcodec/x86/h264_weight.asm | 8 +++
libavcodec/x86/h264chroma_init.c | 2 +
libavcodec/x86/h264dsp_init.c | 21 ++++--
libavcodec/x86/hevc_idct.asm | 2 +
libavcodec/x86/hevcdsp_init.c | 7 +-
libavcodec/x86/hpeldsp.asm | 22 +++++++
libavcodec/x86/hpeldsp_init.c | 40 +++++++----
libavcodec/x86/hpeldsp_vp3.asm | 4 ++
libavcodec/x86/hpeldsp_vp3_init.c | 2 +
libavcodec/x86/idctdsp.asm | 6 ++
libavcodec/x86/idctdsp_init.c | 4 ++
libavcodec/x86/lossless_audiodsp.asm | 2 +
libavcodec/x86/lossless_audiodsp_init.c | 2 +
libavcodec/x86/me_cmp.asm | 6 ++
libavcodec/x86/me_cmp_init.c | 61 ++++++++++-------
libavcodec/x86/mpegvideoenc.c | 8 ++-
libavcodec/x86/mpegvideoencdsp.asm | 2 +
libavcodec/x86/pixblockdsp.asm | 4 ++
libavcodec/x86/pixblockdsp_init.c | 2 +
libavcodec/x86/qpeldsp.asm | 2 -
libavcodec/x86/rnd_template.c | 2 +
libavcodec/x86/rv34dsp.asm | 13 +---
libavcodec/x86/rv40dsp.asm | 2 +
libavcodec/x86/rv40dsp_init.c | 10 +--
libavcodec/x86/sbrdsp.asm | 2 +
libavcodec/x86/sbrdsp_init.c | 2 +
libavcodec/x86/simple_idct.asm | 2 +
libavcodec/x86/svq1enc.asm | 2 +
libavcodec/x86/svq1enc_init.c | 2 +
libavcodec/x86/vc1dsp_init.c | 41 ++++++++----
libavcodec/x86/vc1dsp_loopfilter.asm | 2 +
libavfilter/x86/vf_eq.asm | 2 +
libavfilter/x86/vf_eq_init.c | 4 ++
libavfilter/x86/vf_noise.c | 4 ++
libavutil/x86/pixelutils.asm | 4 ++
libavutil/x86/pixelutils_init.c | 4 ++
libswresample/x86/audio_convert.asm | 2 +
libswresample/x86/audio_convert_init.c | 4 ++
libswresample/x86/rematrix.asm | 2 +
libswresample/x86/rematrix_init.c | 2 +
libswscale/x86/rgb2rgb.c | 6 ++
libswscale/x86/rgb2rgb_template.c | 10 +--
libswscale/x86/swscale.c | 6 +-
libswscale/x86/yuv2rgb.c | 13 ++--
libswscale/x86/yuv2rgb_template.c | 5 +-
libswscale/x86/yuv_2_rgb.asm | 5 ++
74 files changed, 472 insertions(+), 292 deletions(-)
--
2.34.1
More information about the ffmpeg-devel
mailing list