summaryrefslogtreecommitdiffstats
path: root/libswscale
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-09-12 16:46:38 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-09-12 16:46:38 +0000
commit296ccc70eafbee2821a391fa281927403f707c94 (patch)
tree56b1e5cf013cad61f04429307df5def5660405d8 /libswscale
parentfc855e63d2621f31818fbc72eb278094279570b4 (diff)
downloadmpv-296ccc70eafbee2821a391fa281927403f707c94.tar.bz2
mpv-296ccc70eafbee2821a391fa281927403f707c94.tar.xz
Support mono as input format.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27587 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libswscale')
-rw-r--r--libswscale/swscale.c2
-rw-r--r--libswscale/swscale_template.c17
2 files changed, 18 insertions, 1 deletions
diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 2f9d306757..c938306cad 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 9b3a4dccfa..3ff9c2bbe2 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<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 @@ 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;
}