[FFmpeg-cvslog] r27587 - in trunk/libswscale: swscale.c swscale_template.c

michael subversion
Fri Sep 12 18:46:39 CEST 2008


Author: michael
Date: Fri Sep 12 18:46:38 2008
New Revision: 27587

Log:
Support mono as input format.


Modified:
   trunk/libswscale/swscale.c
   trunk/libswscale/swscale_template.c

Modified: trunk/libswscale/swscale.c
==============================================================================
--- trunk/libswscale/swscale.c	(original)
+++ trunk/libswscale/swscale.c	Fri Sep 12 18:46:38 2008
@@ -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     \

Modified: trunk/libswscale/swscale_template.c
==============================================================================
--- trunk/libswscale/swscale_template.c	(original)
+++ trunk/libswscale/swscale_template.c	Fri Sep 12 18:46:38 2008
@@ -2143,6 +2143,16 @@ static inline void RENAME(palToUV)(uint8
     }
 }
 
+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)(SwsCo
         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)(SwsCo
         src1= formatConvBuffer;
         src2= formatConvBuffer+VOFW;
     }
-    else if (isGray(srcFormat))
+    else if (isGray(srcFormat) || srcFormat==PIX_FMT_MONOBLACK || PIX_FMT_MONOWHITE)
     {
         return;
     }




More information about the ffmpeg-cvslog mailing list