[MPlayer-advusers] mplayer fails to build on non-sse2 x86 cpu

Andrew Savchenko bircoph at gmail.com
Thu Sep 6 15:14:58 CEST 2012


Hello,

mplayer-r35150 fails to link on non-sse2 x86 cpu (Athlon-XP):

ffmpeg/libavcodec/libavcodec.a(ac3dsp_init.o): In function
`ff_ac3dsp_init_x86': ac3dsp_init.c:(.text.unlikely+0x6c): undefined
reference to `ff_ac3_exponent_min_sse2' ac3dsp_init.c:(.text.unlikely
+0x88): undefined reference to `ff_ac3_extract_exponents_sse2'
collect2: ld returned 1 exit status

The same stand-alone version of ffmpeg (as fetched by configure
script in mplayer) builds fine.

The problem is in different definition of 
HAVE_${INSTRUCTION_SET}_EXTERNAL
flags in ffmpeg and mplayer: ffmpeg defines them unconditionally
(for a whole target architecture), while mplayer defines them
conditionally — only in an appropriate instruction set is present in
the target cpu.

For the issue I encountered libavcodec/x86/ac3dsp.asm contains:
%if HAVE_SSE2_EXTERNAL
INIT_XMM
AC3_EXPONENT_MIN sse2
%endif

This code is compiled by ffmpeg, used during linking, but not during
runtime, because of the following check in ac3dsp_init.c:
if (mm_flags & AV_CPU_FLAG_SSE2 && HAVE_SSE)

As a solution mplayer should mimic ffmpeg's behaviour for defining
HAVE_*_EXTERNAL cpu flags.

Best regards,
Andrew Savchenko
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/mplayer-advusers/attachments/20120906/b5b865e2/attachment.asc>


More information about the MPlayer-advusers mailing list