From 3d05e078ee40074a205118f9e48033cfaf390fe7 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 12 Sep 2008 16:46:38 +0000 Subject: [PATCH] Support mono as input format. Originally committed as revision 27587 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale --- libswscale/swscale.c | 2 ++ libswscale/swscale_template.c | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 2f9d306..c938306 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -127,6 +127,8 @@ unsigned swscale_version(void) || (x)==PIX_FMT_BGR4_BYTE \ || (x)==PIX_FMT_RGB4_BYTE \ || (x)==PIX_FMT_YUV440P \ + || (x)==PIX_FMT_MONOWHITE \ + || (x)==PIX_FMT_MONOBLACK \ ) #define isSupportedOut(x) ( \ (x)==PIX_FMT_YUV420P \ diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index 9b3a4dc..3ff9c2b 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -2143,6 +2143,16 @@ static inline void RENAME(palToUV)(uint8_t *dstU, uint8_t *dstV, uint8_t *src1, } } +static inline void RENAME(mono2Y)(uint8_t *dst, uint8_t *src, long width, int format) +{ + int i, j; + for (i=0; i=0; j--) + dst[i]= ((d>>j)&1)*255; + } +} + // bilinear / bicubic scaling static inline void RENAME(hScale)(int16_t *dst, int dstW, uint8_t *src, int srcW, int xInc, int16_t *filter, int16_t *filterPos, long filterSize) @@ -2398,6 +2408,11 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, RENAME(palToY)(formatConvBuffer, src, srcW, (uint32_t*)pal); src= formatConvBuffer; } + else if (srcFormat==PIX_FMT_MONOBLACK ||srcFormat==PIX_FMT_MONOWHITE) + { + RENAME(mono2Y)(formatConvBuffer, src, srcW, srcFormat); + src= formatConvBuffer; + } #ifdef HAVE_MMX // Use the new MMX scaler if the MMX2 one can't be used (it is faster than the x86 ASM one). @@ -2660,7 +2675,7 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, src1= formatConvBuffer; src2= formatConvBuffer+VOFW; } - else if (isGray(srcFormat)) + else if (isGray(srcFormat) || srcFormat==PIX_FMT_MONOBLACK || PIX_FMT_MONOWHITE) { return; } -- 2.7.4