All pastes #440701 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-04-15 06:42 UTC
rendered paste body
static inline void yuv420toARGB(vector unsigned char *Y,vector unsigned char *U, vector unsigned char *V,vector unsigned char *ARGB, int width,int maxwidth)
{

		vector unsigned char *ARGBp;

		vector float Yf0,Yf1,Yf2,Yf3,Yf4,Yf5,Yf6,Yf7;
		vector float Uf0,Uf1,Uf2,Uf3;
		vector float Vf0,Vf1,Vf2,Vf3;
		vector float R0,G0,B0;

		for (int i =0;i < width/16;i++)
		{
			Yf0=unpackhh(Y[i]);//line 1
			Yf1=unpacklh(Y[i]);
			Yf2=unpackhl(Y[i]);
			Yf3=unpackll(Y[i]);
			Yf4=unpackhh(Y[i+width/16]);//line 2
			Yf5=unpacklh(Y[i+width/16]);
			Yf6=unpackhl(Y[i+width/16]);
			Yf7=unpackll(Y[i+width/16]);
			
			int j=i/2;
	
			
			if ( i&1 == 1) {	
				Uf0=  unpackd89(U[j]);
				Uf1=unpackd1011(U[j]);
				Uf2=unpackd1213(U[j]);
				Uf3=unpackd1415(U[j]);
		
				Vf0=  unpackd89(V[j]);
				Vf1=unpackd1011(V[j]);
				Vf2=unpackd1213(V[j]);
				Vf3=unpackd1415(V[j]);
				
			} else {
				Uf0=unpackd01(U[j]);
				Uf1=unpackd23(U[j]);
				Uf2=unpackd45(U[j]);
				Uf3=unpackd67(U[j]);
		
				Vf0=unpackd01(V[j]);
				Vf1=unpackd23(V[j]);
				Vf2=unpackd45(V[j]);
				Vf3=unpackd67(V[j]);
			}

	
			YUV2RGB(Yf0,Uf0,Vf0,&R0,&G0,&B0);// Line 1
			ARGB[i*4]=packfARGB(R0,G0,B0);
			YUV2RGB(Yf1,Uf1,Vf1,&R0,&G0,&B0);
			ARGB[i*4+1]=packfARGB(R0,G0,B0);
			YUV2RGB(Yf2,Uf2,Vf2,&R0,&G0,&B0);
			ARGB[i*4+2]=packfARGB(R0,G0,B0);
			YUV2RGB(Yf3,Uf3,Vf3,&R0,&G0,&B0);
			ARGB[i*4+3]=packfARGB(R0,G0,B0);
			
			YUV2RGB(Yf4,Uf0,Vf0,&R0,&G0,&B0); // Line 2
			ARGB[i*4+maxwidth/4]=packfARGB(R0,G0,B0);
			YUV2RGB(Yf5,Uf1,Vf1,&R0,&G0,&B0);
			ARGB[i*4+1+maxwidth/4]=packfARGB(R0,G0,B0);
			YUV2RGB(Yf6,Uf2,Vf2,&R0,&G0,&B0);
			ARGB[i*4+2+maxwidth/4]=packfARGB(R0,G0,B0);
			YUV2RGB(Yf7,Uf3,Vf3,&R0,&G0,&B0);
			ARGB[i*4+3+maxwidth/4]=packfARGB(R0,G0,B0);

			}


}