|
|
|
@ -1769,6 +1769,49 @@ rgb16_32_wrapper(PIX_FMT_BGR555BE, bgr15be, 0, 0, 0, 0, 0x001F, 0x03E0, 0x7 |
|
|
|
|
rgb16_32_wrapper(PIX_FMT_RGB565BE, rgb16be, 0, 0, 0, 0, 0xF800, 0x07E0, 0x001F, 0, 5, 11, RGB2YUV_SHIFT+8); |
|
|
|
|
rgb16_32_wrapper(PIX_FMT_RGB555BE, rgb15be, 0, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, 0, 5, 10, RGB2YUV_SHIFT+7); |
|
|
|
|
|
|
|
|
|
static void gbr24pToY_c(uint16_t *dst, const uint8_t *gsrc, const uint8_t *bsrc, const uint8_t *rsrc, |
|
|
|
|
int width, uint32_t *unused) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
for (i = 0; i < width; i++) { |
|
|
|
|
unsigned int g = gsrc[i]; |
|
|
|
|
unsigned int b = bsrc[i]; |
|
|
|
|
unsigned int r = rsrc[i]; |
|
|
|
|
|
|
|
|
|
dst[i] = (RY*r + GY*g + BY*b + (0x801<<(RGB2YUV_SHIFT-7))) >> (RGB2YUV_SHIFT-6); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void gbr24pToUV_c(uint16_t *dstU, uint16_t *dstV, |
|
|
|
|
const uint8_t *gsrc, const uint8_t *bsrc, const uint8_t *rsrc, |
|
|
|
|
int width, enum PixelFormat origin) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
for (i = 0; i < width; i++) { |
|
|
|
|
unsigned int g = gsrc[i]; |
|
|
|
|
unsigned int b = bsrc[i]; |
|
|
|
|
unsigned int r = rsrc[i]; |
|
|
|
|
|
|
|
|
|
dstU[i] = (RU*r + GU*g + BU*b + (0x4001<<(RGB2YUV_SHIFT-7))) >> (RGB2YUV_SHIFT-6); |
|
|
|
|
dstV[i] = (RV*r + GV*g + BV*b + (0x4001<<(RGB2YUV_SHIFT-7))) >> (RGB2YUV_SHIFT-6); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void gbr24pToUV_half_c(uint16_t *dstU, uint16_t *dstV, |
|
|
|
|
const uint8_t *gsrc, const uint8_t *bsrc, const uint8_t *rsrc, |
|
|
|
|
int width, enum PixelFormat origin) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
for (i = 0; i < width; i++) { |
|
|
|
|
unsigned int g = gsrc[2*i] + gsrc[2*i+1]; |
|
|
|
|
unsigned int b = bsrc[2*i] + bsrc[2*i+1]; |
|
|
|
|
unsigned int r = rsrc[2*i] + rsrc[2*i+1]; |
|
|
|
|
|
|
|
|
|
dstU[i] = (RU*r + GU*g + BU*b + (0x4001<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-6+1); |
|
|
|
|
dstV[i] = (RV*r + GV*g + BV*b + (0x4001<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-6+1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void abgrToA_c(int16_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, int width, uint32_t *unused) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
@ -2838,6 +2881,7 @@ static av_cold void sws_init_swScale_c(SwsContext *c) |
|
|
|
|
case PIX_FMT_RGB565BE: c->chrToYV12 = rgb16beToUV_half_c; break; |
|
|
|
|
case PIX_FMT_RGB555LE: c->chrToYV12 = rgb15leToUV_half_c; break; |
|
|
|
|
case PIX_FMT_RGB555BE: c->chrToYV12 = rgb15beToUV_half_c; break; |
|
|
|
|
case PIX_FMT_GBR24P : c->chrToYV12 = gbr24pToUV_half_c; break; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
switch(srcFormat) { |
|
|
|
@ -2859,6 +2903,7 @@ static av_cold void sws_init_swScale_c(SwsContext *c) |
|
|
|
|
case PIX_FMT_RGB565BE: c->chrToYV12 = rgb16beToUV_c; break; |
|
|
|
|
case PIX_FMT_RGB555LE: c->chrToYV12 = rgb15leToUV_c; break; |
|
|
|
|
case PIX_FMT_RGB555BE: c->chrToYV12 = rgb15beToUV_c; break; |
|
|
|
|
case PIX_FMT_GBR24P : c->chrToYV12 = gbr24pToUV_c; break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2914,6 +2959,7 @@ static av_cold void sws_init_swScale_c(SwsContext *c) |
|
|
|
|
case PIX_FMT_RGB48LE: c->lumToYV12 = rgb48LEToY_c; break; |
|
|
|
|
case PIX_FMT_BGR48BE: c->lumToYV12 = bgr48BEToY_c; break; |
|
|
|
|
case PIX_FMT_BGR48LE: c->lumToYV12 = bgr48LEToY_c; break; |
|
|
|
|
case PIX_FMT_GBR24P : c->lumToYV12 = gbr24pToY_c ; break; |
|
|
|
|
} |
|
|
|
|
if (c->alpPixBuf) { |
|
|
|
|
switch (srcFormat) { |
|
|
|
|