Call for help: altivec-enabled vlc

Jeffrey W. Baker jwbaker at acm.org
Wed Aug 29 00:19:43 EST 2001


On Tue, 28 Aug 2001, Paul Mackerras wrote:

> Michel Lanners writes:
>
> > However, there's something wrong with the IDCT code; the output is
> > essentially garbage. Makes for some interesting visual effects, but
> > that's about it....
>
> Here is my altivec-enabled IDCT, in assembler.  It does everything
> internally in floating point so there is no need for scaling.  It
> exports two procedures:
>
> void idct_block_copy_altivec(int16_t *dct_block, uint8_t *dest, int stride);
> void idct_block_add_altivec(int16_t *dct_block, uint8_t *dest, int stride);
>
> stride is the offset between successive rows of dest.  It does an IDCT
> of the 8x8 block of 16-bit integers at *dct_block, and either puts the
> result in an 8x8 block at *dest or adds it to the block at *dest.
> dct_block has to be 16-byte aligned.  And no, it hasn't been
> _deliberately_ obfuscated. :)
>
> I use this in mpeg2dec (actually a hacked version that I use to play
> videos off my tivo) and Anton Blanchard hacked this into xine.  I also
> have altivec-enabled motion compensation routines for libmpeg2.
>
> Hope this is useful...

Wow Paul, thanks!  I adapted Apple's AltiVec IDCT from their tech library,
but anything I write using the C extensions is going to suck since
Motorola's GCC/binutils hack is useless.  I never could get it to work (or
even compile).  I'll try your version straight away!

-jwb


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list