|
@@ -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;
|