4:4:4 Formats,32 Bits per Pixel
推荐使用基于FOURCC编码的AYUV4:4:4格式. 这是一个packed格式, 每个象素编码为4个连续的字节, 按以下序列排列:

Fig.1 AYUV 内存布局
4:2:2 Formats, 16 Bits per Pixel
现在最常用的有两种 4:2:2 格式, 使用FOURCC编码:
YUY2
UYVY
这两个都是 packed 格式, 每个逻辑象素是由两个实际象素编码成4个连续的字节. 这就使水平方向的(减象素)downsampling.
YUY2
对于YUY2格式,样本数据可以被看成一个unsigned char的数组,第一个字节是Y样本,第二个是第一个U(Cb)样本,第三个是第二个Y样本,第四个是第一个V(Cr)样本。如图Fig.2。
Fig.2 YUY2 内存布局
YUY2是被Microsoft DirectX? Video Acceleration (DirectX VA)所推荐的4:2:2格式。
UYVY
这个格式和YUY2是基本一样的,不同的是字节顺序正好相反(图3)。
Fig.3 UYVY 内存布局
4:2:0 Formats, 12 Bits per Pixel
这里推荐两种4:2:0 16-bits per pixel的格式,使用FOURCC编码:
IMC1
IMC3
这两种FOURCC编码都是平面格式,色度通道在水平和垂直方向作了2次采样。
IMC1
所有的Y样本以unsigned char的数组形式出现在内存的最开始。接下来是所有的V(Cr)样本,再下来是U(Cb)样本。V和U平面和Y平面有一样的移动幅度,结果造成了未使用的空间。如图4:

Figure 4. IMC1 内存布局
IMC3
这个格式和IMC1基本相同,不同在他们的U和V位置交换了。

Figure 5. IMC3 内存布局
4:2:0 Formats, 12 Bits per Pixel
这里介绍4种4:2:0 12-bpp的格式,使用FOURCC编码:
IMC2
IMC4
YV12
NV12
所有的这些格式,色度通道在水平和垂直方向都作了2次采样。
IMC2
这种格式和IMC1也是基本相同,不同的是U(Cb)和V(Cr)采样交叉存取。也就是说,色度区域的每行都以U样本开始,到一半的时候V样本开始,也就是U和V各25%的地址空间。在所有的4:2:0的格式中,IMC2是第二个最佳的格式,第一的是NV12。

Figure 6. IMC2 内存布局
IMC4
和IMC2类似,不同的是U(Cb)和V(Cr)交换了位置。

Figure 7. IMC4 内存布局
YV12
所有的Y样本以unsigned char的数组形式出现在内存的最开始。接下来就是所有的V(Cr)样本,步幅是Y的一半,而且有一半Y的行数。接下来是所有的U(Cb)样本,和V有同样的行数。如图8:

Figure 8. YV12 内存布局
NV12
所有的Y样本以unsigned char的数组形式出现在内存的最开始,并且为偶数行。U和V的样本成对出现的紧跟Y平面紧跟其后,如图9。NV12是DirectX VA首选的4:2:0格式。

Figure 9. NV12 内存布局
0 Responses to YUV图像存储结构
There are currently no comments.