[Ffmpeg-devel] Re: sse sigsegv and libavcodec/wmadec.c

Franz Bakan fbakan
Thu Dec 7 21:38:28 CET 2006


Benjamin Larsson wrote:

...
 >> wmadec.c line 720 and 1110 :
 >>  DECLARE_ALIGNED_16()
 >> does not work for stack-variables inside functions.
 >> (at least not for GCC 331 on OS/2) but IIRC this is a
 >> cross-platform-restriction.
 >> If I move the two declarations to the top of the file
 >> I get rid of these nasty SIGSEGVs on my PIII computer.
...
 >> ------------------------------------------------------------------------
 >>
 >> --- wmadec.c    2006-12-01 22:26:06.000000000 +0100
 >> +++ o:wmadec.c    2006-12-01 22:36:06.000000000 +0100
 >> @@ -67,6 +67,9 @@
 >>  #define HGAINVLCBITS 9
 >>  #define HGAINMAX ((13+HGAINVLCBITS-1)/HGAINVLCBITS)
 >>
 >> +DECLARE_ALIGNED_16(FFTSample, output[BLOCK_MAX_SIZE * 2]);
 >> +DECLARE_ALIGNED_16(float, window[BLOCK_MAX_SIZE * 2]);
 >>
 >
 > Hi, can you move these 2 buffers to the WMADecodeContext and see if 
that fixes the problem ?

You mean I add the buffers to the WMADecodeContext struct definition
and replace output with s->output and window with s->window ?

I tried this and the resulting executable works.

So perhaps this is a better workaround for the real problem.

Franz





More information about the ffmpeg-devel mailing list