Extend the generic path of the yuv2rgb converter with support for rgb444
output format. Patch by Janusz Krzysztofik, jkrzyszt A tis D icnet D pl Originally committed as revision 30934 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
This commit is contained in:
parent
d343d59837
commit
22e8222fd2
@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
tested special converters (most are tested actually, but I did not write it down ...)
|
tested special converters (most are tested actually, but I did not write it down ...)
|
||||||
YV12 -> BGR16
|
YV12 -> BGR12/BGR16
|
||||||
YV12 -> YV12
|
YV12 -> YV12
|
||||||
BGR15 -> BGR16
|
BGR15 -> BGR16
|
||||||
BGR16 -> BGR16
|
BGR16 -> BGR16
|
||||||
@ -805,6 +805,23 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc
|
|||||||
}\
|
}\
|
||||||
}\
|
}\
|
||||||
break;\
|
break;\
|
||||||
|
case PIX_FMT_RGB444BE:\
|
||||||
|
case PIX_FMT_RGB444LE:\
|
||||||
|
case PIX_FMT_BGR444BE:\
|
||||||
|
case PIX_FMT_BGR444LE:\
|
||||||
|
{\
|
||||||
|
const int dr1= dither_4x4_16[y&3 ][0];\
|
||||||
|
const int dg1= dither_4x4_16[y&3 ][1];\
|
||||||
|
const int db1= dither_4x4_16[(y&3)^3][0];\
|
||||||
|
const int dr2= dither_4x4_16[y&3 ][1];\
|
||||||
|
const int dg2= dither_4x4_16[y&3 ][0];\
|
||||||
|
const int db2= dither_4x4_16[(y&3)^3][1];\
|
||||||
|
func(uint16_t,0)\
|
||||||
|
((uint16_t*)dest)[i2+0]= r[Y1+dr1] + g[Y1+dg1] + b[Y1+db1];\
|
||||||
|
((uint16_t*)dest)[i2+1]= r[Y2+dr2] + g[Y2+dg2] + b[Y2+db2];\
|
||||||
|
}\
|
||||||
|
}\
|
||||||
|
break;\
|
||||||
case PIX_FMT_RGB8:\
|
case PIX_FMT_RGB8:\
|
||||||
case PIX_FMT_BGR8:\
|
case PIX_FMT_BGR8:\
|
||||||
{\
|
{\
|
||||||
|
@ -1115,7 +1115,9 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat,
|
|||||||
av_log(c, AV_LOG_INFO, "from %s to %s%s ",
|
av_log(c, AV_LOG_INFO, "from %s to %s%s ",
|
||||||
sws_format_name(srcFormat),
|
sws_format_name(srcFormat),
|
||||||
#ifdef DITHER1XBPP
|
#ifdef DITHER1XBPP
|
||||||
dstFormat == PIX_FMT_BGR555 || dstFormat == PIX_FMT_BGR565 ? "dithered " : "",
|
dstFormat == PIX_FMT_BGR555 || dstFormat == PIX_FMT_BGR565 ||
|
||||||
|
dstFormat == PIX_FMT_RGB444BE || dstFormat == PIX_FMT_RGB444LE ||
|
||||||
|
dstFormat == PIX_FMT_BGR444BE || dstFormat == PIX_FMT_BGR444LE ? "dithered " : "",
|
||||||
#else
|
#else
|
||||||
"",
|
"",
|
||||||
#endif
|
#endif
|
||||||
@ -1184,6 +1186,9 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat,
|
|||||||
av_log(c, AV_LOG_VERBOSE, "using %s YV12->BGR16 converter\n", (flags & SWS_CPU_CAPS_MMX) ? "MMX" : "C");
|
av_log(c, AV_LOG_VERBOSE, "using %s YV12->BGR16 converter\n", (flags & SWS_CPU_CAPS_MMX) ? "MMX" : "C");
|
||||||
else if (dstFormat==PIX_FMT_BGR555)
|
else if (dstFormat==PIX_FMT_BGR555)
|
||||||
av_log(c, AV_LOG_VERBOSE, "using %s YV12->BGR15 converter\n", (flags & SWS_CPU_CAPS_MMX) ? "MMX" : "C");
|
av_log(c, AV_LOG_VERBOSE, "using %s YV12->BGR15 converter\n", (flags & SWS_CPU_CAPS_MMX) ? "MMX" : "C");
|
||||||
|
else if (dstFormat == PIX_FMT_RGB444BE || dstFormat == PIX_FMT_RGB444LE ||
|
||||||
|
dstFormat == PIX_FMT_BGR444BE || dstFormat == PIX_FMT_BGR444LE)
|
||||||
|
av_log(c, AV_LOG_VERBOSE, "using %s YV12->BGR12 converter\n", (flags & SWS_CPU_CAPS_MMX) ? "MMX" : "C");
|
||||||
|
|
||||||
av_log(c, AV_LOG_VERBOSE, "%dx%d -> %dx%d\n", srcW, srcH, dstW, dstH);
|
av_log(c, AV_LOG_VERBOSE, "%dx%d -> %dx%d\n", srcW, srcH, dstW, dstH);
|
||||||
av_log(c, AV_LOG_DEBUG, "lum srcW=%d srcH=%d dstW=%d dstH=%d xInc=%d yInc=%d\n",
|
av_log(c, AV_LOG_DEBUG, "lum srcW=%d srcH=%d dstW=%d dstH=%d xInc=%d yInc=%d\n",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user