//YUY2 轉成 RGB 的 function
void YUY2ToRGB()
{
k = 0;
int y1=0,y2=0,u=0,v=0;
for (i=0;i<iCapWindowHeight;i++)
{
for (j=0;j<iCapWindowWidth;j++)
{
y1=ptrCapture[k];
u=ptrCapture[k+1]-128;
y2=ptrCapture[k+2];
v=ptrCapture[k+3]-128;
k = k+4;
//第一個 RGB
if((y1+2.03211*u)<0) ptrRGBCapture[i][j][2]=0;
else ptrRGBCapture[i][j][2] = (y1+2.03211*u)>=255?255:(y1+2.03211*u); //B
if((y1-0.39465*u-0.58060*v)<0) ptrRGBCapture[i][j][1]=0;
else ptrRGBCapture[i][j][1] = (y1-0.39465*u-0.58060*v)>=255?255:(y1-0.39465*u-0.58060*v); //G
if((y1+1.13983*v)<0) ptrRGBCapture[i][j][0]=0;
else ptrRGBCapture[i][j][0] = (y1+1.13983*v)>=255?255:(y1+1.13983*v); //R
j++;
//第二個 RGB
if((y2+2.03211*u)<0) ptrRGBCapture[i][j][2]=0;
else ptrRGBCapture[i][j][2] = (y2+2.03211*u)>=255?255:(y2+2.03211*u); //B
if((y2-0.39465*u-0.58060*v)<0) ptrRGBCapture[i][j][1]=0;
else ptrRGBCapture[i][j][1] = (y2-0.39465*u-0.58060*v)>=255?255:(y2-0.39465*u-0.58060*v); //G
if((y2+1.13983*v)<0) ptrRGBCapture[i][j][0]=0;
else ptrRGBCapture[i][j][0] = (y2+1.13983*v)>=255?255:(y2+1.13983*v); //R
}
}
}
//----------------------------------------------------------------------------------------------------------------------
//使用前先宣告 , 呼叫完 YUY2ToRGB() 後 , 會把轉換完的RGB資料存在 ptrRGBCapture
BYTE ptrRGBCapture[iCapWindowHeight][iCapWindowWidth][3];
/----------------------------------------------------------------------------------------------------------------------
//使用
CaptureData = LPVIDEOHDR(lpvhdr);
ptrCapture = CaptureData->lpData; //ptrCapture 是擷取視窗的 YUY2 資料
YUY2ToRGB(); //透過 YUY2ToRGB(); 會把 ptrCapture 的 YUY2 資料轉換成 RGB 並存在 ptrRGBCapture
//ptrRGBCapture[i][j][0] 為 R
//ptrRGBCapture[i][j][1] 為 G
//ptrRGBCapture[i][j][2] 為 B
/----------------------------------------------------------------------------------------------------------------------