Split simpleCopy into packedCopy and planarCopy. SoC Patch from Keiji Costantini
authorLuca Barbato <lu_zero@gentoo.org>
Sun, 6 Jul 2008 03:26:32 +0000 (03:26 +0000)
committerLuca Barbato <lu_zero@gentoo.org>
Sun, 6 Jul 2008 03:26:32 +0000 (03:26 +0000)
Originally committed as revision 27212 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale

libswscale/swscale.c

index 139bc55..d14e427 100644 (file)
@@ -1731,11 +1731,10 @@ static int yvu9toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int
 }
 
 /* unscaled copy like stuff (assumes nearly identical formats) */
-static int simpleCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+static int packedCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
                       int srcSliceH, uint8_t* dst[], int dstStride[]){
 
-    if (isPacked(c->srcFormat))
-    {
+
         if (dstStride[0]==srcStride[0] && srcStride[0] > 0)
             memcpy(dst[0] + dstStride[0]*srcSliceY, src[0], srcSliceH*dstStride[0]);
         else
@@ -1757,9 +1756,13 @@ static int simpleCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSli
                 dstPtr+= dstStride[0];
             }
         }
-    }
-    else
-    { /* Planar YUV or gray */
+
+    return srcSliceH;
+}
+static int planarCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+                      int srcSliceH, uint8_t* dst[], int dstStride[])
+{
+
         int plane;
         for (plane=0; plane<3; plane++)
         {
@@ -1790,7 +1793,7 @@ static int simpleCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSli
                 }
             }
         }
-    }
+
     return srcSliceH;
 }
 
@@ -2208,7 +2211,10 @@ SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, int dstW, int dstH
             || (isPlanarYUV(srcFormat) && isGray(dstFormat))
             || (isPlanarYUV(dstFormat) && isGray(srcFormat)))
         {
-            c->swScale= simpleCopy;
+            if (isPacked(c->srcFormat))
+                c->swScale= packedCopy;
+            else /* Planar YUV or gray */
+                c->swScale= planarCopy;
         }
 
         /* gray16{le,be} conversions */