YUV420数据存储

来源:互联网 发布:无线淘宝收藏链接 编辑:程序博客网 时间:2024/06/05 16:32

http://blog.163.com/sxs_solo/blog/static/2633338200872202459390/

YUV格式有两大类:planar和packed。
对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。
以dm642的H263loopback例子程序为例,
发送线程中,视频捕获后我们得到YUV422 planar数据,
然后转化成YUV420 planar数据,再进行编码。
以720×488大小图象YUV420 planar为例,其存储格式是:
共大小为(720×480×3>>1)字节,分为三个部分:Y,U和V
Y分量:    (720×480)个字节  
U(Cb)分量:(720×480>>2)个字节
V(Cr)分量:(720×480>>2)个字节
三个部分内部均是行优先存储,三个部分之间是Y,U,V 顺序存储。
即YUV数据的0--720×480字节是Y分量值,
           720×480--720×480×5/4字节是U分量
           720×480×5/4 --720×480×3/2字节是V分量。


4 :2: 2 和4:2:0 转换:


最简单的方式:
YUV4:2:2 ---> YUV4:2:0  Y不变,将U和V信号值在行(垂直方向)在进行一次隔行抽样。
YUV4:2:0 ---> YUV4:2:2  Y不变,将U和V信号值的每一行分别拷贝一份形成连续两行数据。