uyvy->uv12 added
authorArpi <arpi@thot.banki.hu>
Sat, 10 Nov 2001 23:28:10 +0000 (23:28 +0000)
committerArpi <arpi@thot.banki.hu>
Sat, 10 Nov 2001 23:28:10 +0000 (23:28 +0000)
Originally committed as revision 2802 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc

postproc/rgb2rgb.c
postproc/rgb2rgb_template.c

index 67f33de..2157de9 100644 (file)
@@ -813,3 +813,41 @@ asm(    EMMS" \n\t"
         :::"memory");
 #endif
 }
+
+/**
+ *
+ * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
+ * problem for anyone then tell me, and ill fix it)
+ */
+void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
+       unsigned int width, unsigned int height,
+       unsigned int lumStride, unsigned int chromStride, unsigned int srcStride)
+{
+       int y;
+       const int chromWidth= width>>1;
+       for(y=0; y<height; y+=2)
+       {
+               int i;
+               for(i=0; i<chromWidth; i++)
+               {
+                       udst[i]         = src[4*i+0];
+                       ydst[2*i+0]     = src[4*i+1];
+                       vdst[i]         = src[4*i+2];
+                       ydst[2*i+1]     = src[4*i+3];
+               }
+               ydst += lumStride;
+               src  += srcStride;
+
+               for(i=0; i<chromWidth; i++)
+               {
+                       ydst[2*i+0]     = src[4*i+1];
+                       ydst[2*i+1]     = src[4*i+3];
+               }
+               udst += chromStride;
+               vdst += chromStride;
+               ydst += lumStride;
+               src  += srcStride;
+       }
+}
+
+
index 67f33de..2157de9 100644 (file)
@@ -813,3 +813,41 @@ asm(    EMMS" \n\t"
         :::"memory");
 #endif
 }
+
+/**
+ *
+ * height should be a multiple of 2 and width should be a multiple of 16 (if this is a
+ * problem for anyone then tell me, and ill fix it)
+ */
+void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
+       unsigned int width, unsigned int height,
+       unsigned int lumStride, unsigned int chromStride, unsigned int srcStride)
+{
+       int y;
+       const int chromWidth= width>>1;
+       for(y=0; y<height; y+=2)
+       {
+               int i;
+               for(i=0; i<chromWidth; i++)
+               {
+                       udst[i]         = src[4*i+0];
+                       ydst[2*i+0]     = src[4*i+1];
+                       vdst[i]         = src[4*i+2];
+                       ydst[2*i+1]     = src[4*i+3];
+               }
+               ydst += lumStride;
+               src  += srcStride;
+
+               for(i=0; i<chromWidth; i++)
+               {
+                       ydst[2*i+0]     = src[4*i+1];
+                       ydst[2*i+1]     = src[4*i+3];
+               }
+               udst += chromStride;
+               vdst += chromStride;
+               ydst += lumStride;
+               src  += srcStride;
+       }
+}
+
+