# HG changeset patch # User michael # Date 1221237998 0 # Node ID bf2638aa89b482fe5e47144774b87f251eb73008 # Parent 021a1889cc260fdf020e98bd11e063c1e8dba386 Support mono as input format. diff -r 021a1889cc26 -r bf2638aa89b4 libswscale/swscale.c --- a/libswscale/swscale.c Fri Sep 12 16:01:17 2008 +0000 +++ b/libswscale/swscale.c Fri Sep 12 16:46:38 2008 +0000 @@ -127,6 +127,8 @@ || (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 -r 021a1889cc26 -r bf2638aa89b4 libswscale/swscale_template.c --- a/libswscale/swscale_template.c Fri Sep 12 16:01:17 2008 +0000 +++ b/libswscale/swscale_template.c Fri Sep 12 16:46:38 2008 +0000 @@ -2143,6 +2143,16 @@ } } +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 @@ 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 @@ src1= formatConvBuffer; src2= formatConvBuffer+VOFW; } - else if (isGray(srcFormat)) + else if (isGray(srcFormat) || srcFormat==PIX_FMT_MONOBLACK || PIX_FMT_MONOWHITE) { return; }