一个结构体里面数据分配的问题。
- C/C++ code
//在一个回调函数,原型为: void (*)(int _iID, const DecAVInfo* _pDecAVInfo);//DecAVInfo结构定义如下: typedef struct { int iType; //数据类型:0-视频数据(一幅YUV图像),1-音频数据(PCM) int iFormat; //图像格式:0-YUV420(目前只此一种)。音频数据该成员无效。 int iWidth; //图像宽度。音频数据该成员无效 int iHeight; //图像高度。音频数据该成员无效。 const unsigned char *pucData; //音频或视频数据 int iDataLen; //数据长度 } DecAVInfo, *PDecAVInfo;YUV420数据排列如下:首先是iWidth*iHeight字节的Y数据,然后是iWidth*iHeight/4字节的U数据,最后iWidth*iHeight/4字节的V数据回调不断调用接收数据,现在的问题就是如何获取Y、U、V三种类型的数据,怎样把pucData这个数据块儿分出Y、U、V三种数据?[解决办法]
unsigned char *Y=new unsigned char [iWidth*iHeight];
unsigned char *U=new unsigned char [(iWidth*iHeight+3)/4];
unsigned char *V=new unsigned char [(iWidth*iHeight+3)/4];
unsigned char *p=PDecAVInfo->pucData;
for (int i=0;i<iWidth*iHeight;i++)
Y[i]=*p++;
for (int i=0;i<(iWidth*iHeight+3)/4;i++)
U[i]=*p++;
for (int i=0;i<(iWidth*iHeight+3)/4;i++)
V[i]=*p++;
[解决办法]
pucData,pucData+800*600,pucData+800*600*5/4