Mercurial > mplayer.hg
changeset 27555:bf2638aa89b4
Support mono as input format.
author | michael |
---|---|
date | Fri, 12 Sep 2008 16:46:38 +0000 |
parents | 021a1889cc26 |
children | ff8cabc7f18f |
files | libswscale/swscale.c libswscale/swscale_template.c |
diffstat | 2 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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 \
--- 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<width/8; i++){ + int d= format == PIX_FMT_MONOBLACK ? src[i] : ~src[i]; + for(j=7; j>=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; }