首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个结构体里面数据分配的有关问题

2012-04-15 
一个结构体里面数据分配的问题。C/C++ code//在一个回调函数,原型为: void (*)(int _iID, const DecAVInfo*

一个结构体里面数据分配的问题。

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

热点排行