⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 var.c

📁 h.263+ vc++商业源代码
💻 C
字号:

// DENGZOUPING
typedef  unsigned short word_t;
// replace orig "WORD" by "word_t"
//

void YUV411toRGB555()
//convert YUV411 in YUVBuffer2 to RGB555 in DecodeDest
{

	word_t yPos=0,uvPos=0;

	static int y,u,v,r,g,b;
	int i , j ;
	int DecodeImageH = 144 ;
    int DecodeImageW = 176 ;
	unsigned char * yrec , * urec , * vrec ;
	word_t * DecodeDest ;
	yrec = InternalDecoderOutputYUV ;
    urec = InternalDecoderOutputYUV + lsize;
    vrec = urec  + lsize/4L;
	DecodeDest = ( word_t * ) InternalDecoderOutputRGB ;

    for(int i=0;i<DecodeImageH;i+=2)
	{
      for(int j=0;j<DecodeImageW;j+=2)   //4 pixels every time
	  {
		//1
		yPos = i * 176 + j ;
		uvPos = i * 44 + j/2 ;
		y = yrec[yPos];
		u = urec[uvPos] - 0x7f;
		v = vrec[uvPos] - 0x7f;

		u = (u*1865970)>>20;	//226.0/127.0
		v = (v*1477914)>>20;	//179.0/127.0;
	 
		r = v+y;
		b = u+y;
//g = 1.706*y-0.509*r-0.194*b;
		g = ((y*1788871)>>20) - ((r*533725)>>20) - ((b*203424)>>20);
		if(r<0)	r=0;
		if(r>255)	r=255;
		if(g<0) g=0;
		if(g>255)	g=255;
		if(b<0) b=0;
		if(b>255)	b=255;

		DecodeDest[yPos] = (word_t)((b>>3)+((g>>3)<<5)+((r>>3)<<10));

		//2
		yPos ++ ;
		y = yrec[yPos++];	
		r = v+y;
		b = u+y;
//g = 1.706*y-0.509*r-0.194*b;
		g = ((y*1788871)>>20) - ((r*533725)>>20) - ((b*203424)>>20);
		if(r<0) r=0;
		if(r>255)	r=255;
		if(g<0) g=0;
		if(g>255)	g=255;
		if(b<0) b=0;
		if(b>255)	b=255;

		DecodeDest[yPos] = (word_t)((b>>3)+((g>>3)<<5)+((r>>3)<<10));

		//3
		yPos += 175 ;
		y = yrec[yPos++];	
		r = v+y;
		b = u+y;
//g = 1.706*y-0.509*r-0.194*b;
		g = ((y*1788871)>>20) - ((r*533725)>>20) - ((b*203424)>>20);
		if(r<0) r=0;
		if(r>255)	r=255;
		if(g<0) g=0;
		if(g>255)	g=255;
		if(b<0) b=0;
		if(b>255)	b=255;

		DecodeDest[yPos] = (word_t)((b>>3)+((g>>3)<<5)+((r>>3)<<10));

		//4
		yPos ++ ;
		y = yrec[yPos];	
		r = v+y;
		b = u+y;
//g = 1.706*y-0.509*r-0.194*b;
		g = ((y*1788871)>>20) - ((r*533725)>>20) - ((b*203424)>>20);
		if(r<0) r=0;
		if(r>255)	r=255;
		if(g<0) g=0;
		if(g>255)	g=255;
		if(b<0) b=0;
		if(b>255)	b=255;

		DecodeDest[yPos] = (word_t)((b>>3)+((g>>3)<<5)+((r>>3)<<10));
	  }
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -