@ -92,6 +92,7 @@ altivec_packIntArrayToCharArray(int *val, uint8_t* dest, int dstW)
}
}
//FIXME remove the usage of scratch buffers.
static void
yuv2yuvX_altivec_real ( SwsContext * c ,
const int16_t * lumFilter , const int16_t * * lumSrc ,
@ -101,17 +102,13 @@ yuv2yuvX_altivec_real(SwsContext *c,
uint8_t * dest [ 4 ] , int dstW , int chrDstW )
{
uint8_t * yDest = dest [ 0 ] , * uDest = dest [ 1 ] , * vDest = dest [ 2 ] ;
const vector signed int vini = { ( 1 < < 18 ) , ( 1 < < 18 ) , ( 1 < < 18 ) , ( 1 < < 18 ) } ;
const uint8_t * lumDither = c - > lumDither8 , * chrDither = c - > chrDither8 ;
register int i , j ;
{
DECLARE_ALIGNED ( 16 , int , val ) [ dstW ] ;
for ( i = 0 ; i < ( dstW - 7 ) ; i + = 4 ) {
vec_st ( vini , i < < 2 , val ) ;
}
for ( ; i < dstW ; i + + ) {
val [ i ] = ( 1 < < 18 ) ;
}
for ( i = 0 ; i < dstW ; i + + )
val [ i ] = lumDither [ i & 7 ] < < 12 ;
for ( j = 0 ; j < lumFilterSize ; j + + ) {
vector signed short l1 , vLumFilter = vec_ld ( j < < 1 , lumFilter ) ;
@ -155,13 +152,9 @@ yuv2yuvX_altivec_real(SwsContext *c,
DECLARE_ALIGNED ( 16 , int , u ) [ chrDstW ] ;
DECLARE_ALIGNED ( 16 , int , v ) [ chrDstW ] ;
for ( i = 0 ; i < ( chrDstW - 7 ) ; i + = 4 ) {
vec_st ( vini , i < < 2 , u ) ;
vec_st ( vini , i < < 2 , v ) ;
}
for ( ; i < chrDstW ; i + + ) {
u [ i ] = ( 1 < < 18 ) ;
v [ i ] = ( 1 < < 18 ) ;
for ( i = 0 ; i < chrDstW ; i + + ) {
u [ i ] = chrDither [ i & 7 ] < < 12 ;
v [ i ] = chrDither [ ( i + 3 ) & 7 ] < < 12 ;
}
for ( j = 0 ; j < chrFilterSize ; j + + ) {