changeset 3633:e81bfc0826b1

rgb24toyv12 bugfix
author michael
date Thu, 20 Dec 2001 17:30:59 +0000
parents 06911836febd
children 9cd4934cd1fc
files postproc/rgb2rgb.h postproc/rgb2rgb_template.c
diffstat 2 files changed, 9 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/postproc/rgb2rgb.h	Thu Dec 20 17:18:48 2001 +0000
+++ b/postproc/rgb2rgb.h	Thu Dec 20 17:30:59 2001 +0000
@@ -30,6 +30,9 @@
 extern void yuy2toyv12(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);
+extern void rgb24toyv12(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);
 
 #define MODE_RGB  0x1
 #define MODE_BGR  0x2
--- a/postproc/rgb2rgb_template.c	Thu Dec 20 17:18:48 2001 +0000
+++ b/postproc/rgb2rgb_template.c	Thu Dec 20 17:30:59 2001 +0000
@@ -916,9 +916,9 @@
 			unsigned int g= src[6*i+1];
 			unsigned int r= src[6*i+2];
 
-			unsigned int Y  =  RY*r + GY*g + BY*b + 16;
-			unsigned int V  =  RV*r + GV*g + BV*b + 128;
-			unsigned int U  =  RU*r + GU*g + BU*b + 128;
+			unsigned int Y  =  ((RY*r + GY*g + BY*b)>>RGB2YUV_SHIFT) + 16;
+			unsigned int V  =  ((RV*r + GV*g + BV*b)>>RGB2YUV_SHIFT) + 128;
+			unsigned int U  =  ((RU*r + GU*g + BU*b)>>RGB2YUV_SHIFT) + 128;
 
 			udst[i] 	= U;
 			vdst[i] 	= V;
@@ -928,7 +928,7 @@
 			g= src[6*i+4];
 			r= src[6*i+5];
 
-			Y  =  RY*r + GY*g + BY*b + 16;
+			Y  =  ((RY*r + GY*g + BY*b)>>RGB2YUV_SHIFT) + 16;
 			ydst[2*i+1] 	= Y;
 		}
 		ydst += lumStride;
@@ -940,7 +940,7 @@
 			unsigned int g= src[6*i+1];
 			unsigned int r= src[6*i+2];
 
-			unsigned int Y  =  RY*r + GY*g + BY*b + 16;
+			unsigned int Y  =  ((RY*r + GY*g + BY*b)>>RGB2YUV_SHIFT) + 16;
 
 			ydst[2*i] 	= Y;
 
@@ -948,7 +948,7 @@
 			g= src[6*i+4];
 			r= src[6*i+5];
 
-			Y  =  RY*r + GY*g + BY*b + 16;
+			Y  =  ((RY*r + GY*g + BY*b)>>RGB2YUV_SHIFT) + 16;
 			ydst[2*i+1] 	= Y;
 		}
 		udst += chromStride;