www.pudn.com > UYVY2RGB.rar > YUV2RGB.CPP


void init_yuvtable()  
{  
	int i;  
	for (i=0; i<256; i++)  
	{  
		yuv_rv[i] = 1400*(i-128)/1000;  
		yuv_gu[i] = 340*(i-128)/1000;  
		yuv_gv[i] = 700*(i-128)/1000;  
		yuv_bu[i] = 1700*(i-128)/1000;  
	}  
	yuv_init = 1;  
}  
 
main() 
{  
	 
	if (yuv_init == 0) {  
		init_yuvtable();  
	}  
	 
	w = biSource->biWidth;  
	h = biSource->biHeight;  
	unsigned char* yr = lpSource;  
	unsigned char* ur = lpSource + w*h;  
	unsigned char* vr = lpSource + w*h + (w*h/4);  
	unsigned char* rgb = lpTarget;  
	for (i=0; i255) {  
			r = 255;  
		} else if (r<0) {  
			r = 0;  
		}  
		 
		if (g>255) {  
			g = 255;  
		} else if (g<0) {  
			g = 0;  
		}  
		 
		if (b>255) {  
			b = 255;  
		} else if (b<0) {  
			b = 0;  
		}  
		 
		cache = ((i%w)+(((h-1)-(i/w))*w))*3;  
		rgb[cache] = byte(b);  
		rgb[cache+1] = byte(g);  
		rgb[cache+2] = byte(r);  
	}  
}