YUV格式的数据如何在屏幕上显示?
directdraw可以吗?
分可以再加。
ddraw可以显示,也可用drawdib函数来直接显示,只要把文件头的压缩格式设置成你的yuv既可,这个函数可以自动完成颜色空间的转换。
首先设置视频显示格式,下面的例子是YUY2 -- 352*288
{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC(Y,U,Y,2),0,0,0,0,0}, // YUY2
每次显示的时候安位置将内存区COPY到相应的位置,如下
unsigned char *pOverlay;
int i,j;
LPBYTE yy=lpVideo, uu=lpVideo+nLength , vv = uu+nLength/4;
for (i=0;i< this->m_uHeight /*ddsd.dwHeight*/;i++)
{
pOverlay=(unsigned char*)ddsd.lpSurface + i*ddsd.lPitch;
for (j=0;j<this->m_uWidth;j+=2)
* pOverlay++ = * yy++, //Y
* pOverlay++ = * uu++, //U
* pOverlay++ = * yy++, //Y
* pOverlay++ = * vv++; //V
if (i%2 == 0)
uu-= this->m_uWidth/2, vv-= this->m_uWidth/2;
}
我也在做H.323 赫赫