Mercurial > mplayer.hg
changeset 30892:e052716dcb5b
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
author | cehoyos |
---|---|
date | Thu, 18 Mar 2010 23:02:32 +0000 |
parents | fdcf76890a16 |
children | 82e3adea8476 |
files | libswscale/swscale.c libswscale/utils.c |
diffstat | 2 files changed, 24 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libswscale/swscale.c Thu Mar 18 21:53:53 2010 +0000 +++ b/libswscale/swscale.c Thu Mar 18 23:02:32 2010 +0000 @@ -39,7 +39,7 @@ /* tested special converters (most are tested actually, but I did not write it down ...) - YV12 -> BGR16 + YV12 -> BGR12/BGR16 YV12 -> YV12 BGR15 -> BGR16 BGR16 -> BGR16 @@ -805,6 +805,23 @@ }\ }\ 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_BGR8:\ {\
--- a/libswscale/utils.c Thu Mar 18 21:53:53 2010 +0000 +++ b/libswscale/utils.c Thu Mar 18 23:02:32 2010 +0000 @@ -1115,7 +1115,9 @@ av_log(c, AV_LOG_INFO, "from %s to %s%s ", sws_format_name(srcFormat), #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 "", #endif @@ -1184,6 +1186,9 @@ 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) 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_DEBUG, "lum srcW=%d srcH=%d dstW=%d dstH=%d xInc=%d yInc=%d\n",