2.7.1.2. 平面YUV格式¶
平面格式将亮度(luma)和色度(chroma)数据分别存储在独立的内存区域中。它们有两种变体:
半平面格式使用两个平面。第一个平面是亮度平面,用于存储Y分量。第二个平面是色度平面,用于交错存储Cb和Cr分量。
全平面格式使用三个平面分别存储Y、Cb和Cr分量。
在一个平面内,分量按像素顺序存储,可以是线性或平铺的。行尾可能支持填充,并且色度平面的行步幅可能受亮度平面行步幅的约束。
一些平面格式允许将平面放置在独立的内存位置。它们通过名称中的‘M’后缀进行标识(例如V4L2_PIX_FMT_NV12M
)。这些格式仅供支持多平面API的驱动程序和应用程序使用,具体描述见单平面和多平面API。除非明确说明支持非连续平面,否则格式要求平面在内存中紧密相连。
2.7.1.2.1. 半平面YUV格式¶
这些格式通常被称为NV格式(NV12、NV16等)。它们使用两个平面,将亮度分量存储在第一个平面中,将色度分量存储在第二个平面中。Cb和Cr分量在色度平面中交错存储,且Cb和Cr始终成对存储。色度顺序以不同格式呈现。
对于内存连续格式,色度行尾的填充像素数量与亮度行填充像素数量相同。如果没有水平子采样,色度行步幅(以字节为单位)等于亮度行步幅的两倍。如果水平子采样为2,则色度行步幅等于亮度行步幅。垂直子采样不影响行步幅。
对于非连续格式,格式不对亮度与色度行的填充和步幅之间的关系强制任何约束。
所有分量都以相同的每分量位数存储。
标识符 |
代码 |
每分量位数 |
子采样 |
色度顺序 [1] |
连续性 [2] |
平铺方式 [3] |
---|---|---|---|---|---|---|
V4L2_PIX_FMT_NV12 |
‘NV12’ |
8 |
4:2:0 |
Cb, Cr |
是 |
线性 |
V4L2_PIX_FMT_NV21 |
‘NV21’ |
8 |
4:2:0 |
Cr, Cb |
是 |
线性 |
V4L2_PIX_FMT_NV12M |
‘NM12’ |
8 |
4:2:0 |
Cb, Cr |
否 |
线性 |
V4L2_PIX_FMT_NV21M |
‘NM21’ |
8 |
4:2:0 |
Cr, Cb |
否 |
线性 |
V4L2_PIX_FMT_NV12MT |
‘TM12’ |
8 |
4:2:0 |
Cb, Cr |
否 |
64x32 瓦块 水平Z字形顺序 |
V4L2_PIX_FMT_NV12MT_16X16 |
‘VM12’ |
8 |
4:2:2 |
Cb, Cr |
否 |
16x16 瓦块 |
V4L2_PIX_FMT_P010 |
‘P010’ |
10 |
4:2:0 |
Cb, Cr |
是 |
线性 |
V4L2_PIX_FMT_P010_4L4 |
‘T010’ |
10 |
4:2:0 |
Cb, Cr |
是 |
4x4 瓦块 |
V4L2_PIX_FMT_P012 |
‘P012’ |
12 |
4:2:0 |
Cb, Cr |
是 |
线性 |
V4L2_PIX_FMT_P012M |
‘PM12’ |
12 |
4:2:0 |
Cb, Cr |
否 |
线性 |
V4L2_PIX_FMT_NV15 |
‘NV15’ |
10 |
4:2:0 |
Cb, Cr |
是 |
线性 |
V4L2_PIX_FMT_NV15_4L4 |
‘VT15’ |
15 |
4:2:0 |
Cb, Cr |
是 |
4x4 瓦块 |
V4L2_PIX_FMT_MT2110T |
‘MT2T’ |
15 |
4:2:0 |
Cb, Cr |
否 |
16x32 / 16x16 瓦块平铺低位 |
V4L2_PIX_FMT_MT2110R |
‘MT2R’ |
15 |
4:2:0 |
Cb, Cr |
否 |
16x32 / 16x16 瓦块光栅低位 |
V4L2_PIX_FMT_NV16 |
‘NV16’ |
8 |
4:2:2 |
Cb, Cr |
是 |
线性 |
V4L2_PIX_FMT_NV61 |
‘NV61’ |
8 |
4:2:2 |
Cr, Cb |
是 |
线性 |
V4L2_PIX_FMT_NV16M |
‘NM16’ |
8 |
4:2:2 |
Cb, Cr |
否 |
线性 |
V4L2_PIX_FMT_NV61M |
‘NM61’ |
8 |
4:2:2 |
Cr, Cb |
否 |
线性 |
V4L2_PIX_FMT_NV20 |
‘NV20’ |
10 |
4:2:2 |
Cb, Cr |
是 |
线性 |
V4L2_PIX_FMT_NV24 |
‘NV24’ |
8 |
4:4:4 |
Cb, Cr |
是 |
线性 |
V4L2_PIX_FMT_NV42 |
‘NV42’ |
8 |
4:4:4 |
Cr, Cb |
是 |
线性 |
颜色采样位置: 色度采样水平交错分布。
2.7.1.2.1.1. NV12, NV21, NV12M和NV21M¶
半平面YUV 4:2:0格式。色度平面在每个方向上子采样2。色度行包含的像素数量是亮度行的一半,字节数量与亮度行相同;色度平面包含的行数是亮度平面的一半。
start + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start + 16 |
Cb00 |
Cr00 |
Cb01 |
Cr01 |
start + 20 |
Cb10 |
Cr10 |
Cb11 |
Cr11 |
start0 + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start0 + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start0 + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start0 + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start1 + 0 |
Cb00 |
Cr00 |
Cb01 |
Cr01 |
start1 + 4 |
Cb10 |
Cr10 |
Cb11 |
Cr11 |
2.7.1.2.1.2. NV15¶
半平面10位YUV 4:2:0格式,类似于NV12,使用10位分量,分量之间无填充。一组4个分量以小端字节序存储,占用5个字节。
start + 0 |
Y’00[7:0] |
Y’01[5:0]Y’00[9:8] |
Y’02[3:0]Y’01[9:6] |
Y’03[1:0]Y’02[9:4] |
Y’03[9:2] |
start + 5 |
Y’10[7:0] |
Y’11[5:0]Y’10[9:8] |
Y’12[3:0]Y’11[9:6] |
Y’13[1:0]Y’12[9:4] |
Y’13[9:2] |
start + 10 |
Y’20[7:0] |
Y’21[5:0]Y’20[9:8] |
Y’22[3:0]Y’21[9:6] |
Y’23[1:0]Y’22[9:4] |
Y’23[9:2] |
start + 15 |
Y’30[7:0] |
Y’31[5:0]Y’30[9:8] |
Y’32[3:0]Y’31[9:6] |
Y’33[1:0]Y’32[9:4] |
Y’33[9:2] |
start + 20 |
Cb00[7:0] |
Cr00[5:0]Cb00[9:8] |
Cb01[3:0]Cr00[9:6] |
Cr01[1:0]Cb01[9:4] |
Cr01[9:2] |
start + 25 |
Cb10[7:0] |
Cr10[5:0]Cb10[9:8] |
Cb11[3:0]Cr10[9:6] |
Cr11[1:0]Cb11[9:4] |
Cr11[9:2] |
2.7.1.2.1.3. 平铺NV12¶
半平面YUV 4:2:0格式,使用宏块平铺。色度平面在每个方向上子采样2。色度行包含的像素数量是亮度行的一半,字节数量与亮度行相同;色度平面包含的行数是亮度平面的一半。每个瓦块在内存中(从左到右,从上到下)线性跟随前一个瓦块。
V4L2_PIX_FMT_NV12MT_16X16
类似于V4L2_PIX_FMT_NV12M
,但以2D 16x16瓦块存储像素,并在内存中线性存储瓦块。行步幅和图像高度必须对齐到16的倍数。亮度平面和色度平面的布局是相同的。
V4L2_PIX_FMT_NV12MT
类似于V4L2_PIX_FMT_NV12M
,但以2D 64x32瓦块存储像素,并在内存中以Z字形顺序存储2x2瓦块组,水平方向交替Z形和镜像Z形。行步幅必须是128像素的倍数,以确保Z字形数量为整数。图像高度必须是32像素的倍数。如果垂直分辨率是奇数个瓦块,则最后一行的瓦块以线性顺序存储。亮度平面和色度平面的布局是相同的。
V4L2_PIX_FMT_NV12MT 宏块Z字形内存布局¶
V4L2_PIX_FMT_NV12MT 瓦块内存布局示例¶
V4L2_PIX_FMT_NV12_4L4
以4x4瓦块存储像素,并在内存中线性存储瓦块。行步幅和图像高度必须对齐到4的倍数。亮度平面和色度平面的布局是相同的。
V4L2_PIX_FMT_NV12_16L16
以16x16瓦块存储像素,并在内存中线性存储瓦块。行步幅和图像高度必须对齐到16的倍数。亮度平面和色度平面的布局是相同的。
V4L2_PIX_FMT_NV12_32L32
以32x32瓦块存储像素,并在内存中线性存储瓦块。行步幅和图像高度必须对齐到32的倍数。亮度平面和色度平面的布局是相同的。
V4L2_PIX_FMT_NV12M_8L128
类似于V4L2_PIX_FMT_NV12M
,但以2D 8x128瓦块存储像素,并在内存中线性存储瓦块。图像高度必须对齐到128的倍数。亮度平面和色度平面的布局是相同的。
V4L2_PIX_FMT_NV12_8L128
类似于V4L2_PIX_FMT_NV12M_8L128
,但将两个平面存储在一段内存中。
V4L2_PIX_FMT_MM21
将亮度像素存储在16x32瓦块中,将色度像素存储在16x16瓦块中。行步幅必须对齐到16的倍数,图像高度必须对齐到32的倍数。亮度瓦块和色度瓦块的数量相同,即使瓦块大小不同。图像由两个非连续平面组成。
2.7.1.2.1.4. 平铺NV15¶
V4L2_PIX_FMT_NV15_4L4
是半平面10位YUV 4:2:0格式,使用4x4平铺。所有分量紧密打包,相互之间无任何填充。因此,每组4个分量占用5个字节(YYYY或UVUV = 4 * 10 位 = 40 位 = 5 字节)。
V4L2_PIX_FMT_NV12M_10BE_8L128
类似于V4L2_PIX_FMT_NV12M
,但以2D 8x128瓦块存储10位像素,并在内存中线性存储瓦块。数据以大端字节序排列。图像高度必须对齐到128的倍数。亮度平面和色度平面的布局是相同的。请注意,瓦块大小是8字节乘以128字节,这意味着一个像素的低位和高位可能在不同的瓦块中。10位像素是紧密打包的,因此5个字节包含4个10位像素,布局如下(针对亮度):字节0:Y0(位9-2) 字节1:Y0(位1-0)Y1(位9-4) 字节2:Y1(位3-0)Y2(位9-6) 字节3:Y2(位5-0)Y3(位9-8) 字节4:Y3(位7-0)
V4L2_PIX_FMT_NV12_10BE_8L128
类似于V4L2_PIX_FMT_NV12M_10BE_8L128
,但将两个平面存储在一段内存中。
V4L2_PIX_FMT_MT2110T
是联发科(Mediatek)的其中一种打包10位YUV 4:2:0格式。它是一种完全打包的10位4:2:0格式,类似于NV15(每像素15位),但其最低两位数据存储在单独的分区中。该格式由16x32亮度瓦块和16x16色度瓦块组成。每个瓦块长640字节,分为8个80字节的分区。分区的前16字节表示像素数据的2个最低有效位。其余64字节表示像素数据的8个最高有效位。
MT2110T色度瓦块布局¶
滤除每个分区的上半部分会得到一个有效的V4L2_PIX_FMT_MM21
帧。一个分区是大小为16x4的子瓦块。最低两位被称为平铺,因为每个字节包含与相同索引匹配的像素列的最低两位。色度瓦块只有4个分区。
start + 0 |
start + 1 |
. . . |
start+15 |
|
---|---|---|---|---|
位1:0 |
Y’0:0 |
Y’0:1 |
. . . |
Y’0:15 |
位3:2 |
Y’1:0 |
Y’1:1 |
. . . |
Y’1:15 |
位5:4 |
Y’2:0 |
Y’2:1 |
. . . |
Y’2:15 |
位7:6 |
Y’3:0 |
Y’3:1 |
. . . |
Y’3:15 |
V4L2_PIX_FMT_MT2110R
与V4L2_PIX_FMT_MT2110T
相同,除了最低两位布局采用光栅顺序。这意味着第一个字节包含第一行的4个像素,每行4个字节。
字节0 |
... |
字节3 |
|||||||
---|---|---|---|---|---|---|---|---|---|
7:6 |
5:4 |
3:2 |
1:0 |
... |
7:6 |
5:4 |
3:2 |
1:0 |
|
start + 0 |
Y’0:3 |
Y’0:2 |
Y’0:1 |
Y’0:0 |
... |
Y’0:15 |
Y’0:14 |
Y’0:13 |
Y’0:12 |
start + 4 |
Y’1:3 |
Y’1:2 |
Y’1:1 |
Y’1:0 |
... |
Y’1:15 |
Y’1:14 |
Y’1:13 |
Y’1:12 |
start + 8 |
Y’2:3 |
Y’2:2 |
Y’2:1 |
Y’2:0 |
... |
Y’2:15 |
Y’2:14 |
Y’2:13 |
Y’2:12 |
start+12 |
Y’3:3 |
Y’3:2 |
Y’3:1 |
Y’3:0 |
... |
Y’3:15 |
Y’3:14 |
Y’3:13 |
Y’3:12 |
2.7.1.2.1.5. NV16, NV61, NV16M和NV61M¶
半平面YUV 4:2:2格式。色度平面在水平方向上子采样2。色度行包含的像素数量是亮度行的一半,字节数量与亮度行相同;色度平面包含的行数与亮度平面相同。
start + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start + 16 |
Cb00 |
Cr00 |
Cb01 |
Cr01 |
start + 20 |
Cb10 |
Cr10 |
Cb11 |
Cr11 |
start + 24 |
Cb20 |
Cr20 |
Cb21 |
Cr21 |
start + 28 |
Cb30 |
Cr30 |
Cb31 |
Cr31 |
start0 + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start0 + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start0 + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start0 + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start1 + 0 |
Cb00 |
Cr00 |
Cb02 |
Cr02 |
start1 + 4 |
Cb10 |
Cr10 |
Cb12 |
Cr12 |
start1 + 8 |
Cb20 |
Cr20 |
Cb22 |
Cr22 |
start1 + 12 |
Cb30 |
Cr30 |
Cb32 |
Cr32 |
2.7.1.2.1.6. NV20¶
半平面10位YUV 4:2:2格式,类似于NV16,使用10位分量,分量之间无填充。一组4个分量以小端字节序存储,占用5个字节。
start + 0 |
Y’00[7:0] |
Y’01[5:0]Y’00[9:8] |
Y’02[3:0]Y’01[9:6] |
Y’03[1:0]Y’02[9:4] |
Y’03[9:2] |
start + 5 |
Y’10[7:0] |
Y’11[5:0]Y’10[9:8] |
Y’12[3:0]Y’11[9:6] |
Y’13[1:0]Y’12[9:4] |
Y’13[9:2] |
start + 10 |
Y’20[7:0] |
Y’21[5:0]Y’20[9:8] |
Y’22[3:0]Y’21[9:6] |
Y’23[1:0]Y’22[9:4] |
Y’23[9:2] |
start + 15 |
Y’30[7:0] |
Y’31[5:0]Y’30[9:8] |
Y’32[3:0]Y’31[9:6] |
Y’33[1:0]Y’32[9:4] |
Y’33[9:2] |
start + 20 |
Cb00[7:0] |
Cr00[5:0]Cb00[9:8] |
Cb01[3:0]Cr00[9:6] |
Cr01[1:0]Cb01[9:4] |
Cr01[9:2] |
start + 25 |
Cb10[7:0] |
Cr10[5:0]Cb10[9:8] |
Cb11[3:0]Cr10[9:6] |
Cr11[1:0]Cb11[9:4] |
Cr11[9:2] |
start + 30 |
Cb20[7:0] |
Cr20[5:0]Cb20[9:8] |
Cb21[3:0]Cr20[9:6] |
Cr21[1:0]Cb21[9:4] |
Cr21[9:2] |
start + 35 |
Cb30[7:0] |
Cr30[5:0]Cb30[9:8] |
Cb31[3:0]Cr30[9:6] |
Cr31[1:0]Cb31[9:4] |
Cr31[9:2] |
2.7.1.2.1.7. NV24和NV42¶
半平面YUV 4:4:4格式。色度平面不进行子采样。色度行包含的像素数量与亮度行相同,字节数量是亮度行的两倍;色度平面包含的行数与亮度平面相同。
start + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
||||
start + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
||||
start + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
||||
start + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
||||
start + 16 |
Cb00 |
Cr00 |
Cb01 |
Cr01 |
Cb02 |
Cr02 |
Cb03 |
Cr03 |
start + 24 |
Cb10 |
Cr10 |
Cb11 |
Cr11 |
Cb12 |
Cr12 |
Cb13 |
Cr13 |
start + 32 |
Cb20 |
Cr20 |
Cb21 |
Cr21 |
Cb22 |
Cr22 |
Cb23 |
Cr23 |
start + 40 |
Cb30 |
Cr30 |
Cb31 |
Cr31 |
Cb32 |
Cr32 |
Cb33 |
Cr33 |
2.7.1.2.1.8. P010和平铺P010¶
P010类似于NV12,每分量10位,扩展到16位。数据在高10位,低6位为零,以小端字节序排列。
start + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start + 8 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start + 16 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start + 24 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start + 32 |
Cb00 |
Cr00 |
Cb01 |
Cr01 |
start + 40 |
Cb10 |
Cr10 |
Cb11 |
Cr11 |
2.7.1.2.1.9. P012和P012M¶
P012类似于NV12,每分量12位,扩展到16位。数据在高12位,低4位为零,以小端字节序排列。
start + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start + 8 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start + 16 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start + 24 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start + 32 |
Cb00 |
Cr00 |
Cb01 |
Cr01 |
start + 40 |
Cb10 |
Cr10 |
Cb11 |
Cr11 |
start0 + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start0 + 8 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start0 + 16 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start0 + 24 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start1 + 0 |
Cb00 |
Cr00 |
Cb01 |
Cr01 |
start1 + 8 |
Cb10 |
Cr10 |
Cb11 |
Cr11 |
2.7.1.2.2. 全平面YUV格式¶
这些格式将Y、Cb和Cr分量存储在三个独立的平面中。亮度平面在前,两个色度平面的顺序因格式而异。这两个色度平面始终使用相同的子采样。
对于内存连续格式,色度行尾的填充像素数量与亮度行填充像素数量相同。因此,色度行步幅(以字节为单位)等于亮度行步幅除以水平子采样因子。垂直子采样不影响行步幅。
对于非连续格式,格式不对亮度与色度行的填充和步幅之间的关系强制任何约束。
所有分量都以相同的每分量位数存储。
V4L2_PIX_FMT_P010_4L4
以4x4瓦块存储像素,并在内存中线性存储瓦块。行步幅必须对齐到8的倍数,图像高度必须对齐到4的倍数。亮度平面和色度平面的布局是相同的。
标识符 |
代码 |
每分量位数 |
子采样 |
平面顺序 [4] |
连续性 [5] |
---|---|---|---|---|---|
V4L2_PIX_FMT_YUV410 |
‘YUV9’ |
8 |
4:1:0 |
Y, Cb, Cr |
是 |
V4L2_PIX_FMT_YVU410 |
‘YVU9’ |
8 |
4:1:0 |
Y, Cr, Cb |
是 |
V4L2_PIX_FMT_YUV411P |
‘411P’ |
8 |
4:1:1 |
Y, Cb, Cr |
是 |
V4L2_PIX_FMT_YUV420M |
‘YM12’ |
8 |
4:2:0 |
Y, Cb, Cr |
否 |
V4L2_PIX_FMT_YVU420M |
‘YM21’ |
8 |
4:2:0 |
Y, Cr, Cb |
否 |
V4L2_PIX_FMT_YUV420 |
‘YU12’ |
8 |
4:2:0 |
Y, Cb, Cr |
是 |
V4L2_PIX_FMT_YVU420 |
‘YV12’ |
8 |
4:2:0 |
Y, Cr, Cb |
是 |
V4L2_PIX_FMT_YUV422P |
‘422P’ |
8 |
4:2:2 |
Y, Cb, Cr |
是 |
V4L2_PIX_FMT_YUV422M |
‘YM16’ |
8 |
4:2:2 |
Y, Cb, Cr |
否 |
V4L2_PIX_FMT_YVU422M |
‘YM61’ |
8 |
4:2:2 |
Y, Cr, Cb |
否 |
V4L2_PIX_FMT_YUV444M |
‘YM24’ |
8 |
4:4:4 |
Y, Cb, Cr |
否 |
V4L2_PIX_FMT_YVU444M |
‘YM42’ |
8 |
4:4:4 |
Y, Cr, Cb |
否 |
亮度平面和色度平面的顺序
指示平面在内存中是否必须连续或可以分离
颜色采样位置: 色度采样水平交错分布。
2.7.1.2.2.1. YUV410和YVU410¶
平面YUV 4:1:0格式。色度平面在每个方向上子采样4。色度行包含的像素和字节数量是亮度行的四分之一,色度平面包含的行数是亮度平面的四分之一。
start + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start + 16 |
Cr00 |
|||
start + 17 |
Cb00 |
2.7.1.2.2.2. YUV411P¶
平面YUV 4:1:1格式。色度平面在水平方向上子采样4。色度行包含的像素和字节数量是亮度行的四分之一,色度平面包含的行数与亮度平面相同。
start + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start + 16 |
Cb00 |
|||
start + 17 |
Cb10 |
|||
start + 18 |
Cb20 |
|||
start + 19 |
Cb30 |
|||
start + 20 |
Cr00 |
|||
start + 21 |
Cr10 |
|||
start + 22 |
Cr20 |
|||
start + 23 |
Cr30 |
2.7.1.2.2.3. YUV420, YVU420, YUV420M和YVU420M¶
平面YUV 4:2:0格式。色度平面在每个方向上子采样2。色度行包含的像素和字节数量是亮度行的一半,色度平面包含的行数是亮度平面的一半。
start + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start + 16 |
Cr00 |
Cr01 |
||
start + 18 |
Cr10 |
Cr11 |
||
start + 20 |
Cb00 |
Cb01 |
||
start + 22 |
Cb10 |
Cb11 |
start0 + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start0 + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start0 + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start0 + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start1 + 0 |
Cb00 |
Cb01 |
||
start1 + 2 |
Cb10 |
Cb11 |
||
start2 + 0 |
Cr00 |
Cr01 |
||
start2 + 2 |
Cr10 |
Cr11 |
2.7.1.2.2.4. YUV422P, YUV422M和YVU422M¶
平面YUV 4:2:2格式。色度平面在水平方向上子采样2。色度行包含的像素和字节数量是亮度行的一半,色度平面包含的行数与亮度平面相同。
start + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start + 16 |
Cb00 |
Cb01 |
||
start + 18 |
Cb10 |
Cb11 |
||
start + 20 |
Cb20 |
Cb21 |
||
start + 22 |
Cb30 |
Cb31 |
||
start + 24 |
Cr00 |
Cr01 |
||
start + 26 |
Cr10 |
Cr11 |
||
start + 28 |
Cr20 |
Cr21 |
||
start + 30 |
Cr30 |
Cr31 |
start0 + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start0 + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start0 + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start0 + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start1 + 0 |
Cb00 |
Cb01 |
||
start1 + 2 |
Cb10 |
Cb11 |
||
start1 + 4 |
Cb20 |
Cb21 |
||
start1 + 6 |
Cb30 |
Cb31 |
||
start2 + 0 |
Cr00 |
Cr01 |
||
start2 + 2 |
Cr10 |
Cr11 |
||
start2 + 4 |
Cr20 |
Cr21 |
||
start2 + 6 |
Cr30 |
Cr31 |
2.7.1.2.2.5. YUV444M和YVU444M¶
平面YUV 4:4:4格式。色度平面不进行子采样。色度行包含的像素和字节数量与亮度行相同,色度平面包含的行数与亮度平面相同。
start0 + 0 |
Y’00 |
Y’01 |
Y’02 |
Y’03 |
start0 + 4 |
Y’10 |
Y’11 |
Y’12 |
Y’13 |
start0 + 8 |
Y’20 |
Y’21 |
Y’22 |
Y’23 |
start0 + 12 |
Y’30 |
Y’31 |
Y’32 |
Y’33 |
start1 + 0 |
Cb00 |
Cb01 |
Cb02 |
Cb03 |
start1 + 4 |
Cb10 |
Cb11 |
Cb12 |
Cb13 |
start1 + 8 |
Cb20 |
Cb21 |
Cb22 |
Cb23 |
start1 + 12 |
Cb20 |
Cb21 |
Cb32 |
Cb33 |
start2 + 0 |
Cr00 |
Cr01 |
Cr02 |
Cr03 |
start2 + 4 |
Cr10 |
Cr11 |
Cr12 |
Cr13 |
start2 + 8 |
Cr20 |
Cr21 |
Cr22 |
Cr23 |
start2 + 12 |
Cr30 |
Cr31 |
Cr32 |
Cr33 |