[MPlayer-dev-eng] altivec_yuv2packedX (again. found the problem)

Michael Niedermayer michaelni at gmx.at
Sat Jul 16 11:07:41 CEST 2005


Hi

On Wednesday 13 July 2005 18:59, Andrea Palmatè wrote:
> Hi dear!
>
> I have another problem with damned altivec. I have configured the
> output video driver to scale the image. Mplayer use an optimized
> altivec scale function. Now. when i use this function i receive a
> great GR in an altivec function with a "alignment" crash type. I'm
> not too expert of altivec and alignment but i have compiled mplayer
> with debug and i have found the line that crash. The function is:
>
> void
> altivec_yuv2packedX (SwsContext *c,
>                         int16_t *lumFilter, int16_t **lumSrc, int
> lumFilterSize,
>                         int16_t *chrFilter, int16_t **chrSrc, int
> chrFilterSize,
>                         uint8_t *dest, int dstW, int dstY)
> {
> [...]snip[...]
>
>      cvtyuvtoRGB (c, Y0,U0,V0,&R0,&G0,&B0);
>      cvtyuvtoRGB (c, Y1,U1,V1,&R1,&G1,&B1);
>
>      R  = vec_packclp (R0,R1);
>      G  = vec_packclp (G0,G1);
>      B  = vec_packclp (B0,B1);
>
>      out_rgba (R,G,B,out);
>      ^^^^^^^^^
> and it crash here. Most probably for the wrong "out" parameter.
>
> the dump is:
> >R:804CC5C0 G:00004140 B:00000018 out:00004190
>
> so it seems that R and out are swapped??

have these been obtained with printf or gdb? i wouldnt trust gdb, not to 
mention R,G and B being altivec vectors not pointers

a few general questions ...
which gcc version
does it happen just with your VO or does it also happen if the same 
conversation is done by vf_scale?
does compiling with -O0 or -O1 help?
ahh and the arrays are aligned correctly right? they need to be ptr%16==0 and 
stride %16==0

[...]
-- 
Michael




More information about the MPlayer-dev-eng mailing list