[FFmpeg-trac] #8986(swscale:closed): Compilation fails on x86 when only mmx optimizations are enabled

FFmpeg trac at avcodec.org
Sat Nov 14 16:42:03 EET 2020


#8986: Compilation fails on x86 when only mmx optimizations are enabled
------------------------------------+-----------------------------------
             Reporter:  maikenakka  |                    Owner:
                 Type:  defect      |                   Status:  closed
             Priority:  normal      |                Component:  swscale
              Version:  git-master  |               Resolution:  fixed
             Keywords:  regression  |               Blocked By:
             Blocking:              |  Reproduced by developer:  1
Analyzed by developer:  0           |
------------------------------------+-----------------------------------
Changes (by cehoyos):

 * keywords:   => regression
 * status:  new => closed
 * resolution:   => fixed
 * reproduced:  0 => 1


Old description:

> I ran configure with every cpu optimization disabled except for mmx. This
> results in the following errors with GCC 9.3.0:
>
> CC      libswscale/x86/yuv2rgb.o
> libswscale/x86/yuv2rgb.c: In function "ff_yuv2rgb_init_x86":
> libswscale/x86/yuv2rgb.c:91:24: error: "yuva420_rgb32_ssse3" undeclared
> (first use in this function); did you mean "yuva420_rgb32_mmx"?
>    91 |                 return yuva420_rgb32_ssse3;
>       |                        ^~~~~~~~~~~~~~~~~~~
>       |                        yuva420_rgb32_mmx
> libswscale/x86/yuv2rgb.c:91:24: note: each undeclared identifier is
> reported only once for each function it appears in
> libswscale/x86/yuv2rgb.c:95:24: error: "yuv420_rgb32_ssse3" undeclared
> (first use in this function); did you mean "yuv420_rgb32_mmx"?
>    95 |                 return yuv420_rgb32_ssse3;
>       |                        ^~~~~~~~~~~~~~~~~~
>       |                        yuv420_rgb32_mmx
> libswscale/x86/yuv2rgb.c:99:24: error: "yuva420_bgr32_ssse3" undeclared
> (first use in this function); did you mean "yuva420_bgr32_mmx"?
>    99 |                 return yuva420_bgr32_ssse3;
>       |                        ^~~~~~~~~~~~~~~~~~~
>       |                        yuva420_bgr32_mmx
> libswscale/x86/yuv2rgb.c:103:24: error: "yuv420_bgr32_ssse3" undeclared
> (first use in this function); did you mean "yuv420_bgr32_mmx"?
>   103 |                 return yuv420_bgr32_ssse3;
>       |                        ^~~~~~~~~~~~~~~~~~
>       |                        yuv420_bgr32_mmx
> libswscale/x86/yuv2rgb.c:105:20: error: "yuv420_rgb24_ssse3" undeclared
> (first use in this function); did you mean "yuv420_rgb24_mmx"?
>   105 |             return yuv420_rgb24_ssse3;
>       |                    ^~~~~~~~~~~~~~~~~~
>       |                    yuv420_rgb24_mmx
> libswscale/x86/yuv2rgb.c:107:20: error: "yuv420_bgr24_ssse3" undeclared
> (first use in this function); did you mean "yuv420_bgr24_mmx"?
>   107 |             return yuv420_bgr24_ssse3;
>       |                    ^~~~~~~~~~~~~~~~~~
>       |                    yuv420_bgr24_mmx
> libswscale/x86/yuv2rgb.c:109:20: error: "yuv420_rgb16_ssse3" undeclared
> (first use in this function); did you mean "yuv420_rgb16_mmx"?
>   109 |             return yuv420_rgb16_ssse3;
>       |                    ^~~~~~~~~~~~~~~~~~
>       |                    yuv420_rgb16_mmx
> libswscale/x86/yuv2rgb.c:111:20: error: "yuv420_rgb15_ssse3" undeclared
> (first use in this function); did you mean "yuv420_rgb15_mmx"?
>   111 |             return yuv420_rgb15_ssse3;
>       |                    ^~~~~~~~~~~~~~~~~~
>       |                    yuv420_rgb15_mmx
> libswscale/x86/yuv2rgb.c:118:20: error: "yuv420_rgb24_mmxext" undeclared
> (first use in this function); did you mean "yuv420_rgb24_mmx"?
>   118 |             return yuv420_rgb24_mmxext;
>       |                    ^~~~~~~~~~~~~~~~~~~
>       |                    yuv420_rgb24_mmx
> libswscale/x86/yuv2rgb.c:120:20: error: "yuv420_bgr24_mmxext" undeclared
> (first use in this function); did you mean "yuv420_bgr24_mmx"?
>   120 |             return yuv420_bgr24_mmxext;
>       |                    ^~~~~~~~~~~~~~~~~~~
>       |                    yuv420_bgr24_mmx
> make: *** [ffbuild/common.mak:67: libswscale/x86/yuv2rgb.o] Error 1
>
> These are my configure options:
> ./configure --prefix=/usr --libdir=/usr/lib --shlibdir=/usr/lib
> --docdir=/usr/share/doc/ffmpeg-4.3.1/html --mandir=/usr/share/man
> --enable-shared --cc=i686-pc-linux-gnu-gcc --cxx=i686-pc-linux-gnu-g++
> --ar=i686-pc-linux-gnu-ar --nm=i686-pc-linux-gnu-nm --ranlib=i686-pc-
> linux-gnu-ranlib --pkg-config=i686-pc-linux-gnu-pkg-config
> --optflags='-O2 -march=native -pipe -fomit-frame-pointer' --disable-
> static --enable-avfilter --enable-avresample --disable-stripping
> --disable-optimizations --disable-libcelt --disable-indev=v4l2 --disable-
> outdev=v4l2 --disable-indev=oss --disable-indev=jack --disable-outdev=oss
> --enable-bzlib --disable-runtime-cpudetect --disable-debug --disable-
> gcrypt --enable-gnutls --disable-gmp --enable-gpl --disable-hardcoded-
> tables --enable-iconv --disable-libtls --disable-libxml2 --disable-lzma
> --enable-network --disable-opencl --disable-openssl --enable-postproc
> --disable-libsmbclient --disable-ffplay --disable-sdl2 --disable-vaapi
> --disable-vdpau --disable-vulkan --disable-xlib --disable-libxcb
> --disable-libxcb-shm --disable-libxcb-xfixes --enable-zlib --enable-
> libcdio --disable-libiec61883 --disable-libdc1394 --enable-libcaca
> --disable-openal --disable-opengl --disable-libv4l2 --disable-libpulse
> --disable-libdrm --disable-libjack --disable-libopencore-amrwb --disable-
> libopencore-amrnb --disable-libcodec2 --enable-libdav1d --disable-libfdk-
> aac --disable-libopenjpeg --disable-libbluray --disable-libgme --disable-
> libgsm --disable-libaribb24 --disable-mmal --disable-libmodplug
> --disable-libopus --disable-libilbc --disable-librtmp --disable-libssh
> --disable-libspeex --disable-libsrt --disable-librsvg --disable-ffnvcodec
> --enable-libvorbis --disable-libvpx --disable-libzvbi --disable-appkit
> --disable-libbs2b --disable-chromaprint --disable-cuda-llvm --disable-
> libflite --disable-frei0r --disable-libfribidi --disable-fontconfig
> --disable-ladspa --disable-libass --disable-libtesseract --disable-lv2
> --disable-libfreetype --disable-libvidstab --disable-librubberband
> --disable-libzmq --disable-libzimg --disable-libsoxr --enable-pthreads
> --disable-libvo-amrwbenc --enable-libmp3lame --disable-libkvazaar
> --disable-libaom --disable-libopenh264 --disable-librav1e --disable-
> libsnappy --disable-libtheora --disable-libtwolame --disable-libwebp
> --disable-libx264 --disable-libx265 --disable-libxvid --disable-armv5te
> --disable-armv6 --disable-armv6t2 --disable-neon --disable-vfp --disable-
> vfpv3 --disable-armv8 --disable-mipsdsp --disable-mipsdspr2 --disable-
> mipsfpu --disable-altivec --disable-vsx --disable-power8 --disable-
> amd3dnow --disable-amd3dnowext --disable-aesni --disable-avx --disable-
> avx2 --disable-fma3 --disable-fma4 --disable-mmxext --disable-sse
> --disable-sse2 --disable-sse3 --disable-ssse3 --disable-sse4 --disable-
> sse42 --disable-xop --cpu=host --disable-doc --disable-htmlpages
> --enable-manpages
>

> It compiles fine if MMX is disabled as well.
> This was on commit 5bb313e72...
> Same error shows up in 4.3.1

New description:

 I ran configure with every cpu optimization disabled except for mmx. This
 results in the following errors with GCC 9.3.0:
 {{{
 CC      libswscale/x86/yuv2rgb.o
 libswscale/x86/yuv2rgb.c: In function "ff_yuv2rgb_init_x86":
 libswscale/x86/yuv2rgb.c:91:24: error: "yuva420_rgb32_ssse3" undeclared
 (first use in this function); did you mean "yuva420_rgb32_mmx"?
    91 |                 return yuva420_rgb32_ssse3;
       |                        ^~~~~~~~~~~~~~~~~~~
       |                        yuva420_rgb32_mmx
 libswscale/x86/yuv2rgb.c:91:24: note: each undeclared identifier is
 reported only once for each function it appears in
 libswscale/x86/yuv2rgb.c:95:24: error: "yuv420_rgb32_ssse3" undeclared
 (first use in this function); did you mean "yuv420_rgb32_mmx"?
    95 |                 return yuv420_rgb32_ssse3;
       |                        ^~~~~~~~~~~~~~~~~~
       |                        yuv420_rgb32_mmx
 libswscale/x86/yuv2rgb.c:99:24: error: "yuva420_bgr32_ssse3" undeclared
 (first use in this function); did you mean "yuva420_bgr32_mmx"?
    99 |                 return yuva420_bgr32_ssse3;
       |                        ^~~~~~~~~~~~~~~~~~~
       |                        yuva420_bgr32_mmx
 libswscale/x86/yuv2rgb.c:103:24: error: "yuv420_bgr32_ssse3" undeclared
 (first use in this function); did you mean "yuv420_bgr32_mmx"?
   103 |                 return yuv420_bgr32_ssse3;
       |                        ^~~~~~~~~~~~~~~~~~
       |                        yuv420_bgr32_mmx
 libswscale/x86/yuv2rgb.c:105:20: error: "yuv420_rgb24_ssse3" undeclared
 (first use in this function); did you mean "yuv420_rgb24_mmx"?
   105 |             return yuv420_rgb24_ssse3;
       |                    ^~~~~~~~~~~~~~~~~~
       |                    yuv420_rgb24_mmx
 libswscale/x86/yuv2rgb.c:107:20: error: "yuv420_bgr24_ssse3" undeclared
 (first use in this function); did you mean "yuv420_bgr24_mmx"?
   107 |             return yuv420_bgr24_ssse3;
       |                    ^~~~~~~~~~~~~~~~~~
       |                    yuv420_bgr24_mmx
 libswscale/x86/yuv2rgb.c:109:20: error: "yuv420_rgb16_ssse3" undeclared
 (first use in this function); did you mean "yuv420_rgb16_mmx"?
   109 |             return yuv420_rgb16_ssse3;
       |                    ^~~~~~~~~~~~~~~~~~
       |                    yuv420_rgb16_mmx
 libswscale/x86/yuv2rgb.c:111:20: error: "yuv420_rgb15_ssse3" undeclared
 (first use in this function); did you mean "yuv420_rgb15_mmx"?
   111 |             return yuv420_rgb15_ssse3;
       |                    ^~~~~~~~~~~~~~~~~~
       |                    yuv420_rgb15_mmx
 libswscale/x86/yuv2rgb.c:118:20: error: "yuv420_rgb24_mmxext" undeclared
 (first use in this function); did you mean "yuv420_rgb24_mmx"?
   118 |             return yuv420_rgb24_mmxext;
       |                    ^~~~~~~~~~~~~~~~~~~
       |                    yuv420_rgb24_mmx
 libswscale/x86/yuv2rgb.c:120:20: error: "yuv420_bgr24_mmxext" undeclared
 (first use in this function); did you mean "yuv420_bgr24_mmx"?
   120 |             return yuv420_bgr24_mmxext;
       |                    ^~~~~~~~~~~~~~~~~~~
       |                    yuv420_bgr24_mmx
 make: *** [ffbuild/common.mak:67: libswscale/x86/yuv2rgb.o] Error 1
 }}}
 These are my configure options:
 ./configure --prefix=/usr --libdir=/usr/lib --shlibdir=/usr/lib
 --docdir=/usr/share/doc/ffmpeg-4.3.1/html --mandir=/usr/share/man
 --enable-shared --cc=i686-pc-linux-gnu-gcc --cxx=i686-pc-linux-gnu-g++
 --ar=i686-pc-linux-gnu-ar --nm=i686-pc-linux-gnu-nm --ranlib=i686-pc-
 linux-gnu-ranlib --pkg-config=i686-pc-linux-gnu-pkg-config --optflags='-O2
 -march=native -pipe -fomit-frame-pointer' --disable-static --enable-
 avfilter --enable-avresample --disable-stripping --disable-optimizations
 --disable-libcelt --disable-indev=v4l2 --disable-outdev=v4l2 --disable-
 indev=oss --disable-indev=jack --disable-outdev=oss --enable-bzlib
 --disable-runtime-cpudetect --disable-debug --disable-gcrypt --enable-
 gnutls --disable-gmp --enable-gpl --disable-hardcoded-tables --enable-
 iconv --disable-libtls --disable-libxml2 --disable-lzma --enable-network
 --disable-opencl --disable-openssl --enable-postproc --disable-
 libsmbclient --disable-ffplay --disable-sdl2 --disable-vaapi --disable-
 vdpau --disable-vulkan --disable-xlib --disable-libxcb --disable-libxcb-
 shm --disable-libxcb-xfixes --enable-zlib --enable-libcdio --disable-
 libiec61883 --disable-libdc1394 --enable-libcaca --disable-openal
 --disable-opengl --disable-libv4l2 --disable-libpulse --disable-libdrm
 --disable-libjack --disable-libopencore-amrwb --disable-libopencore-amrnb
 --disable-libcodec2 --enable-libdav1d --disable-libfdk-aac --disable-
 libopenjpeg --disable-libbluray --disable-libgme --disable-libgsm
 --disable-libaribb24 --disable-mmal --disable-libmodplug --disable-libopus
 --disable-libilbc --disable-librtmp --disable-libssh --disable-libspeex
 --disable-libsrt --disable-librsvg --disable-ffnvcodec --enable-libvorbis
 --disable-libvpx --disable-libzvbi --disable-appkit --disable-libbs2b
 --disable-chromaprint --disable-cuda-llvm --disable-libflite --disable-
 frei0r --disable-libfribidi --disable-fontconfig --disable-ladspa
 --disable-libass --disable-libtesseract --disable-lv2 --disable-
 libfreetype --disable-libvidstab --disable-librubberband --disable-libzmq
 --disable-libzimg --disable-libsoxr --enable-pthreads --disable-libvo-
 amrwbenc --enable-libmp3lame --disable-libkvazaar --disable-libaom
 --disable-libopenh264 --disable-librav1e --disable-libsnappy --disable-
 libtheora --disable-libtwolame --disable-libwebp --disable-libx264
 --disable-libx265 --disable-libxvid --disable-armv5te --disable-armv6
 --disable-armv6t2 --disable-neon --disable-vfp --disable-vfpv3 --disable-
 armv8 --disable-mipsdsp --disable-mipsdspr2 --disable-mipsfpu --disable-
 altivec --disable-vsx --disable-power8 --disable-amd3dnow --disable-
 amd3dnowext --disable-aesni --disable-avx --disable-avx2 --disable-fma3
 --disable-fma4 --disable-mmxext --disable-sse --disable-sse2 --disable-
 sse3 --disable-ssse3 --disable-sse4 --disable-sse42 --disable-xop
 --cpu=host --disable-doc --disable-htmlpages --enable-manpages


 It compiles fine if MMX is disabled as well.
 This was on commit 5bb313e72...
 Same error shows up in 4.3.1

--

Comment:

 Should be fixed in 46e362b76551d6587747e6a41e97b1673df2ada9, thank you for
 the report!

 For future tickets, please try hard to simplify the configure line, in
 this case for example `--disable-mmxext` and `--disable-ssse3`
 And please understand that your configure line looks completely insane,
 are you sure that you know what you are doing?

--
Ticket URL: <https://trac.ffmpeg.org/ticket/8986#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list