得到了YUV三个分量的缓冲区指针,如何转化为一个YUV420的码流?

得到了Y,U,V三个分量的缓冲区BYTE*yPointer,BYTE*uPointer,BYTE*vPointer,如何转化为一个YUV420的码流,放在缓冲区里。因为现... 得到了Y,U,V三个分量的缓冲区BYTE* yPointer, BYTE* uPointer, BYTE* vPointer,如何转化为一个YUV420的码流,放在缓冲区里。因为现在需要YUV420码流,但回调中是三个分量,没有跨度。
之前如下:
int nSize = Height*Width;//Height,Width分别为一帧的高和宽
char*p = m_pBuf;//m_pBuf为存放YUV420码流的缓存,足够大
memcpy(p, yPointer, nSize);//yPointer指向Y分量的缓冲区
p += nSize;
memcpy(p, uPointer, nSize/4);
p += nSize/4;
memcpy(p, vPointer, nSize/4);
int len = nSize*3/2; //len为YUV420码流的长度
通过上面的代码m_pBuf就保存了YUV420的数据
可是用yuvplay播放,结果画面扭曲.
问题解决了,是SDK回调上来的宽和高不对,重新修改过宽高后,就可以正常播放了。
展开
 我来答
吾辈精华
2011-12-23
知道答主
回答量:2
采纳率:0%
帮助的人:3315
展开全部
假设只需 YUV码流 YUVplyaer就能播放,就用YUV播放算了,用YUV420码流处理
假设必需用YUV420码流YUVplayer才能播放,你漏了第四个分量。你memcpy时,复制一段空数据作为第四分量或者规定的数据做第四分量。
其实我不懂你你所的YUV是啥
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式