OSDN Git Service

unscaled BGR24 -> YV12
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 10 Feb 2002 00:43:31 +0000 (00:43 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 10 Feb 2002 00:43:31 +0000 (00:43 +0000)
Originally committed as revision 4624 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc

postproc/swscale.c

index 5610b65..bfe39af 100644 (file)
@@ -42,6 +42,7 @@ untested special converters
   YUY2/BGR15/BGR16/BGR24/BGR32/RGB24/RGB32 -> same format
   BGR24 -> BGR32 & RGB24 -> RGB32
   BGR32 -> BGR24 & RGB32 -> RGB24
+  BGR24 -> YV12
 */
 
 #include <inttypes.h>
@@ -1227,6 +1228,18 @@ static void bgr15to16Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int
        }     
 }
 
+static void bgr24toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+             int srcSliceH, uint8_t* dst[], int dstStride[]){
+
+       rgb24toyv12(
+               src[0], 
+               dst[0]+ srcSliceY    *dstStride[0], 
+               dst[1]+(srcSliceY>>1)*dstStride[1], 
+               dst[2]+(srcSliceY>>1)*dstStride[2],
+               c->srcW, srcSliceH, 
+               dstStride[0], dstStride[1], srcStride[0]);
+}
+
 
 /* unscaled copy like stuff (assumes nearly identical formats) */
 static void simpleCopy(SwsContext *c, uint8_t* srcParam[], int srcStrideParam[], int srcSliceY,
@@ -1449,6 +1462,17 @@ SwsContext *getSwsContext(int srcW, int srcH, int srcFormat, int dstW, int dstH,
                                        vo_format_name(srcFormat), vo_format_name(dstFormat));
                        return c;
                }
+
+               /* bgr24toYV12 */
+               if(srcFormat==IMGFMT_BGR24 && dstFormat==IMGFMT_YV12)
+               {
+                       c->swScale= bgr24toyv12Wrapper;
+
+                       if(flags&SWS_PRINT_INFO)
+                               printf("SwScaler: using unscaled %s -> %s special converter\n", 
+                                       vo_format_name(srcFormat), vo_format_name(dstFormat));
+                       return c;
+               }
        }
 
        if(cpuCaps.hasMMX2)