RGB565ToYuv(int Width,int Hight,unsigned char* rgb565_dat,unsigned char* yuv422_data)
{
int i,j;
int Index;
int flag = 0;
unsigned char r_dat,g_dat,b_dat;
// unsigned short* image16
unsigned char y_dat,uv_dat;
unsigned short rgb_dat;
for(i=0;i<Hight;i++)
{
for(j=0;j<Width;j++)
{
Index=i*Width+j;
rgb_dat = rgb565_dat[2*Index];
rgb_dat |= rgb565_dat[2*Index+1]<<8;
b_dat = ((rgb_dat & 0x001F)<<3)&0xff;
g_dat = ((rgb_dat& 0x07E0)>>3)&0xff;
r_dat = ((rgb_dat& 0xf800)>>8)&0xff;
if(flag == 0)
{
y_dat=(unsigned char)((299*r_dat+587*g_dat+114*b_dat)/1000);
uv_dat=(unsigned char)(((-169)*r_dat+(-331)*g_dat+500*b_dat+128000)/1000);
}
else
{
y_dat=(unsigned char)((299*r_dat+587*g_dat+114*b_dat)/1000);
uv_dat=(unsigned char)((500*r_dat+(-419)*g_dat+(-82)*b_dat+128000)/1000);
}
yuv422_data[2*Index] = y_dat;
yuv422_data[2*Index+1] = uv_dat;
flag = ~flag;
}
}
}