YUV422转RGB
pBuf格式为YUV格式。即:
char * yBuffer= pBuf+16;
其中长度为:pFrameInfo->nWidth* pFrameInfo->nLinseSize[0];
Char * uBuffer= yBuffer + pFrameInfo->nHeight * pFrameInfo->nLinseSize[0];
其中长度为:pFrameInfo-> nHeight * pFrameInfo->nLinseSize[1]/2;
Char * vBuffer= uBuffer + pFrameInfo->nHeight * pFrameInfo->nLinseSize[1]/2;
其中长度为:pFrameInfo->nHeight * pFrameInfo->nLinseSize[2]/2;
注意:对于视频数据,前面有16个字节为YUV行扫描长度。
这就是我的YUV数据
如何转成RGB呢?
我查了一些资料
比如:
// YCbCr转换为RGB
for(i =0 ; i < dest->dwSize; )
{
UCHAR y,u,v;
y = sBuf[i+0];
u = sBuf[i+1];
v = sBuf[i+2];
double temp;
temp = 1.164383*(y- 16) + 0 + 1.596016*(v - 128);
dBuf[i] = (unsigned char)(temp < 0 ? 0 : (temp > 255 ? 255 : temp));
temp = (1.164383*(y- 16) - 0.391762*(u - 128) - 0.812969*(v - 128));
dBuf[i + 1] = (unsigned char)(temp < 0 ? 0 : (temp > 255 ? 255 : temp));
temp = 1.164383*(y- 16) + 2.017230*(u - 128) + 0;
dBuf[i + 2] = (unsigned char)(temp < 0 ? 0 : (temp > 255 ? 255 : temp));
i += 3;
}
可是有一事不明
Y:U:V=4:2:2
如果在一个for循环中,以Y的长度为准的话,U V 就要溢出啊
在我的理解中,yuv应该一样多才可以
我知道理解错了,可是就是不知到如何错的,所以来请教大家