@ -867,7 +867,25 @@ altivec_yuv2packedX (SwsContext *c,
G = vec_packclp ( G0 , G1 ) ;
G = vec_packclp ( G0 , G1 ) ;
B = vec_packclp ( B0 , B1 ) ;
B = vec_packclp ( B0 , B1 ) ;
out_rgba ( R , G , B , out ) ;
switch ( c - > dstFormat ) {
case IMGFMT_ABGR : out_abgr ( R , G , B , out ) ; break ;
case IMGFMT_BGRA : out_bgra ( R , G , B , out ) ; break ;
case IMGFMT_RGBA : out_rgba ( R , G , B , out ) ; break ;
case IMGFMT_ARGB : out_argb ( R , G , B , out ) ; break ;
case IMGFMT_RGB24 : out_rgb24 ( R , G , B , out ) ; break ;
case IMGFMT_BGR24 : out_bgr24 ( R , G , B , out ) ; break ;
default :
{
/* FIXME: either write more out_* macros or punt to yuv2packedXinC */
static int printed_error_message ;
if ( ! printed_error_message ) {
MSG_ERR ( " altivec_yuv2packedX doesn't support %s output \n " ,
vo_format_name ( c - > dstFormat ) ) ;
printed_error_message = 1 ;
}
return ;
}
}
}
}
if ( i < dstW ) {
if ( i < dstW ) {
@ -927,7 +945,19 @@ altivec_yuv2packedX (SwsContext *c,
B = vec_packclp ( B0 , B1 ) ;
B = vec_packclp ( B0 , B1 ) ;
nout = ( vector unsigned char * ) scratch ;
nout = ( vector unsigned char * ) scratch ;
out_rgba ( R , G , B , nout ) ;
switch ( c - > dstFormat ) {
case IMGFMT_ABGR : out_abgr ( R , G , B , nout ) ; break ;
case IMGFMT_BGRA : out_bgra ( R , G , B , nout ) ; break ;
case IMGFMT_RGBA : out_rgba ( R , G , B , nout ) ; break ;
case IMGFMT_ARGB : out_argb ( R , G , B , nout ) ; break ;
case IMGFMT_RGB24 : out_rgb24 ( R , G , B , nout ) ; break ;
case IMGFMT_BGR24 : out_bgr24 ( R , G , B , nout ) ; break ;
default :
/* Unreachable, I think. */
MSG_ERR ( " altivec_yuv2packedX doesn't support %s output \n " ,
vo_format_name ( c - > dstFormat ) ) ;
return ;
}
memcpy ( & ( ( uint32_t * ) dest ) [ i ] , scratch , ( dstW - i ) / 4 ) ;
memcpy ( & ( ( uint32_t * ) dest ) [ i ] , scratch , ( dstW - i ) / 4 ) ;
}
}