[MPlayer-dev-eng] Compilation problem with fft_sse.c

Xuebin Wu bangbangbear at gmail.com
Thu Aug 9 07:50:17 CEST 2007


Hello.
The recent svn version of MPlayer suffers from a segment fault error when
initializing audio codec ffcook. I comile MPlayer in Windows, using MinGW.
My gcc's version is 3.4.2.

After a deep debug, I fould the problem happens in fft_sse.c, in the
function ff_imdct_calc_sse

void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output,
                       const FFTSample *input, FFTSample *tmp)
{
    long k, n8, n4, n2, n;
    const uint16_t *revtab = s->fft.revtab;
    const FFTSample *tcos = s->tcos;
    const FFTSample *tsin = s->tsin;
    const FFTSample *in1, *in2;
    FFTComplex *z = (FFTComplex *)tmp;
.................

I use objdump to see the compliation result, and I think the above code is
compliled as the following assemble code:
00000140 <_ff_imdct_calc_sse>:
 140: 55                    push   %ebp
 141: b8 01 00 00 00        mov    $0x1,%eax
 146: 57                    push   %edi
 147: 56                    push   %esi
 148: 53                    push   %ebx
 149: 83 ec 2c              sub    $0x2c,%esp
 14c: 66 0f 6e 64 24 40     movd   0x40(%esp),%xmm4
 152: 89 44 24 1c           mov    %eax,0x1c(%esp)
 156: 66 0f 6e 5c 24 48     movd   0x48(%esp),%xmm3
 15c: 66 0f 6e 44 24 4c     movd   0x4c(%esp),%xmm0
 162: 66 0f 7e e7           movd   %xmm4,%edi

I think the mmx registers xmms are employed as the pointer rev_tab, tcos and
other variables. But they are also used in the implementation of fft
algorithms. and so segment fault happens.

My question is, How to solve this problem? I think it should be a problem of
GCC...



More information about the MPlayer-dev-eng mailing list