From d9d58d172eaa22c85864efd97fdce980616fe6b5 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Mon, 5 Nov 2001 00:45:55 +0000
Subject: [PATCH] yv12 <-> yuy2 in C

Originally committed as revision 2702 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
---
 postproc/rgb2rgb.c          | 27 +++++++++++++++++++++++++++
 postproc/rgb2rgb.h          |  4 ++++
 postproc/rgb2rgb_template.c | 27 +++++++++++++++++++++++++++
 3 files changed, 58 insertions(+)

diff --git a/postproc/rgb2rgb.c b/postproc/rgb2rgb.c
index 7e978fd54f2..9c5c688b78f 100644
--- a/postproc/rgb2rgb.c
+++ b/postproc/rgb2rgb.c
@@ -259,3 +259,30 @@ void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette)
 	for(i=0; i<src_size; i++)
 		((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
 }
+
+void yv12toyuy2(uint8_t *ysrc, uint8_t *usrc, uint8_t *vsrc, uint8_t *dst, int src_size)
+{
+	int i;
+	src_size>>=1;
+	for(i=0; i<src_size; i++)
+	{
+		dst[4*i+0] = ysrc[2*i+0];
+		dst[4*i+1] = usrc[i];
+		dst[4*i+2] = ysrc[2*i+1];
+		dst[4*i+3] = vsrc[i];
+	}
+
+}
+
+void yuy2toyv12(uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int src_size)
+{
+	int i;
+	src_size>>=1;
+	for(i=0; i<src_size; i++)
+	{
+		 ydst[2*i+0] 	= src[4*i+0];
+		 udst[i] 	= src[4*i+1];
+		 ydst[2*i+1] 	= src[4*i+2];
+		 vdst[i] 	= src[4*i+3];
+	}
+}
\ No newline at end of file
diff --git a/postproc/rgb2rgb.h b/postproc/rgb2rgb.h
index 0f7c8141a02..d6f8f4c616c 100644
--- a/postproc/rgb2rgb.h
+++ b/postproc/rgb2rgb.h
@@ -18,4 +18,8 @@ void palette8torgb16(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette)
 void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette);
 void palette8torgb24(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette);
 
+void yv12toyuy2(uint8_t *ysrc, uint8_t *usrc, uint8_t *vsrc, uint8_t *dst, int src_size);
+void yuy2toyv12(uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int src_size);
+
+
 #endif
diff --git a/postproc/rgb2rgb_template.c b/postproc/rgb2rgb_template.c
index 7e978fd54f2..9c5c688b78f 100644
--- a/postproc/rgb2rgb_template.c
+++ b/postproc/rgb2rgb_template.c
@@ -259,3 +259,30 @@ void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette)
 	for(i=0; i<src_size; i++)
 		((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
 }
+
+void yv12toyuy2(uint8_t *ysrc, uint8_t *usrc, uint8_t *vsrc, uint8_t *dst, int src_size)
+{
+	int i;
+	src_size>>=1;
+	for(i=0; i<src_size; i++)
+	{
+		dst[4*i+0] = ysrc[2*i+0];
+		dst[4*i+1] = usrc[i];
+		dst[4*i+2] = ysrc[2*i+1];
+		dst[4*i+3] = vsrc[i];
+	}
+
+}
+
+void yuy2toyv12(uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int src_size)
+{
+	int i;
+	src_size>>=1;
+	for(i=0; i<src_size; i++)
+	{
+		 ydst[2*i+0] 	= src[4*i+0];
+		 udst[i] 	= src[4*i+1];
+		 ydst[2*i+1] 	= src[4*i+2];
+		 vdst[i] 	= src[4*i+3];
+	}
+}
\ No newline at end of file
-- 
GitLab