@ -612,10 +612,13 @@ static inline void uyvytoyv12_c(const uint8_t *src, uint8_t *ydst,
* others are ignored in the C version .
* FIXME : Write HQ version .
*/
void rgb24toyv12_c ( const uint8_t * src , uint8_t * ydst , uint8_t * udst ,
void ff_ rgb24toyv12_c( const uint8_t * src , uint8_t * ydst , uint8_t * udst ,
uint8_t * vdst , int width , int height , int lumStride ,
int chromStride , int srcStride )
int chromStride , int srcStride , int32_t * rgb2yuv )
{
int32_t ry = rgb2yuv [ RY_IDX ] , gy = rgb2yuv [ GY_IDX ] , by = rgb2yuv [ BY_IDX ] ;
int32_t ru = rgb2yuv [ RU_IDX ] , gu = rgb2yuv [ GU_IDX ] , bu = rgb2yuv [ BU_IDX ] ;
int32_t rv = rgb2yuv [ RV_IDX ] , gv = rgb2yuv [ GV_IDX ] , bv = rgb2yuv [ BV_IDX ] ;
int y ;
const int chromWidth = width > > 1 ;
@ -626,9 +629,9 @@ void rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst,
unsigned int g = src [ 6 * i + 1 ] ;
unsigned int r = src [ 6 * i + 2 ] ;
unsigned int Y = ( ( RY * r + GY * g + BY * b ) > > RGB2YUV_SHIFT ) + 16 ;
unsigned int V = ( ( RV * r + GV * g + BV * b ) > > RGB2YUV_SHIFT ) + 128 ;
unsigned int U = ( ( RU * r + GU * g + BU * b ) > > RGB2YUV_SHIFT ) + 128 ;
unsigned int Y = ( ( ry * r + gy * g + by * b ) > > RGB2YUV_SHIFT ) + 16 ;
unsigned int V = ( ( rv * r + gv * g + bv * b ) > > RGB2YUV_SHIFT ) + 128 ;
unsigned int U = ( ( ru * r + gu * g + bu * b ) > > RGB2YUV_SHIFT ) + 128 ;
udst [ i ] = U ;
vdst [ i ] = V ;
@ -638,7 +641,7 @@ void rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst,
g = src [ 6 * i + 4 ] ;
r = src [ 6 * i + 5 ] ;
Y = ( ( RY * r + GY * g + BY * b ) > > RGB2YUV_SHIFT ) + 16 ;
Y = ( ( ry * r + gy * g + by * b ) > > RGB2YUV_SHIFT ) + 16 ;
ydst [ 2 * i + 1 ] = Y ;
}
ydst + = lumStride ;
@ -652,7 +655,7 @@ void rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst,
unsigned int g = src [ 6 * i + 1 ] ;
unsigned int r = src [ 6 * i + 2 ] ;
unsigned int Y = ( ( RY * r + GY * g + BY * b ) > > RGB2YUV_SHIFT ) + 16 ;
unsigned int Y = ( ( ry * r + gy * g + by * b ) > > RGB2YUV_SHIFT ) + 16 ;
ydst [ 2 * i ] = Y ;
@ -660,7 +663,7 @@ void rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst,
g = src [ 6 * i + 4 ] ;
r = src [ 6 * i + 5 ] ;
Y = ( ( RY * r + GY * g + BY * b ) > > RGB2YUV_SHIFT ) + 16 ;
Y = ( ( ry * r + gy * g + by * b ) > > RGB2YUV_SHIFT ) + 16 ;
ydst [ 2 * i + 1 ] = Y ;
}
udst + = chromStride ;
@ -915,7 +918,7 @@ static inline void rgb2rgb_init_c(void)
yuv422ptouyvy = yuv422ptouyvy_c ;
yuy2toyv12 = yuy2toyv12_c ;
planar2x = planar2x_c ;
rgb24toyv12 = rgb24toyv12_c ;
ff_ rgb24toyv12 = ff_ rgb24toyv12_c;
interleaveBytes = interleaveBytes_c ;
vu9_to_vu12 = vu9_to_vu12_c ;
yvu9_to_yuy2 = yvu9_to_yuy2_c ;