2.7.1.1. 封装的YUV格式¶
与封装的RGB格式类似,封装的YUV格式在内存中连续存储Y、Cb和Cr分量。它们可能会对色度分量应用子采样,因此在如何交错这三个分量上有所不同。
注意
在以下所有表格中,位7是字节中的最高有效位。
“Y”、“Cb”和“Cr”分别表示亮度、蓝色色度(也称为“U”)和红色色度(也称为“V”)分量的位。“A”表示alpha分量的位(如果格式支持),“X”表示填充位。
2.7.1.1.1. 4:4:4 子采样¶
这些格式不对色度分量进行子采样,并将每个像素存储为Y、Cb和Cr值的完整三元组。
下表列出了每分量少于8位的封装YUV 4:4:4格式。它们的命名基于在16位字中Y、Cb和Cr分量的顺序,该字随后以小端字节序存储在内存中,并基于每个分量的位数。例如,YUV565格式将一个像素存储在一个16位字[15:0]中,布局为[Y’4-0 Cb5-0 Cr4-0],并在内存中以两个字节存储,即[Cb2-0 Cr4-0]后跟[Y’4-0 Cb5-3]。
标识符 |
代码 |
内存中的字节 0 |
字节 1 |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
|
‘Y444’ |
Cb3 |
Cb2 |
Cb1 |
Cb0 |
Cr3 |
Cr2 |
Cr1 |
Cr0 |
a3 |
a2 |
a1 |
a0 |
Y’3 |
Y’2 |
Y’1 |
Y’0 |
|
‘YUVO’ |
Cb2 |
Cb1 |
Cb0 |
Cr4 |
Cr3 |
Cr2 |
Cr1 |
Cr0 |
a |
Y’4 |
Y’3 |
Y’2 |
Y’1 |
Y’0 |
Cb4 |
Cb3 |
|
‘YUVP’ |
Cb2 |
Cb1 |
Cb0 |
Cr4 |
Cr3 |
Cr2 |
Cr1 |
Cr0 |
Y’4 |
Y’3 |
Y’2 |
Y’1 |
Y’0 |
Cb5 |
Cb4 |
Cb3 |
下表列出了每分量8位的封装YUV 4:4:4格式。它们的命名基于Y、Cb和Cr分量在内存中的存储顺序,以及每个像素的总位数。例如,VUYX32格式将一个像素存储在第一个字节中的Cr7-0,第二个字节中的Cb7-0和第三个字节中的Y’7-0。
标识符 |
代码 |
字节 0 |
字节 1 |
字节 2 |
字节 3 |
---|---|---|---|---|---|
|
‘YUV4’ |
A7-0 |
Y’7-0 |
Cb7-0 |
Cr7-0 |
|
‘AYUV’ |
A7-0 |
Y’7-0 |
Cb7-0 |
Cr7-0 |
|
‘XYUV’ |
X7-0 |
Y’7-0 |
Cb7-0 |
Cr7-0 |
|
‘VUYA’ |
Cr7-0 |
Cb7-0 |
Y’7-0 |
A7-0 |
|
‘VUYX’ |
Cr7-0 |
Cb7-0 |
Y’7-0 |
X7-0 |
|
‘YUVA’ |
Y’7-0 |
Cb7-0 |
Cr7-0 |
A7-0 |
|
‘YUVX’ |
Y’7-0 |
Cb7-0 |
Cr7-0 |
X7-0 |
|
‘YUV3’ |
Y’7-0 |
Cb7-0 |
Cr7-0 |
- |
注意
alpha分量预计包含一个有意义的值,可供驱动程序和应用程序使用。
填充位包含未定义的值,所有应用程序和驱动程序都必须忽略它们。
下表列出了每分量12位的封装YUV 4:4:4格式。将每分量的位扩展到16位,数据在高位,低位为零,以小端字节序排列,每个像素存储在6个字节中。
标识符 |
代码 |
字节 1-0 |
字节 3-2 |
字节 5-4 |
字节 7-6 |
字节 9-8 |
字节 11-10 |
---|---|---|---|---|---|---|---|
|
‘Y312’ |
Y’0 |
Cb0 |
Cr0 |
Y’1 |
Cb1 |
Cr1 |
2.7.1.1.2. 4:2:2 子采样¶
这些格式,通常称为YUYV或YUY2,将色度分量水平方向上进行2倍子采样,在容器中存储2个像素。对于8位格式,容器是32位;对于10位或更高位格式,容器是64位。
每分量超过8位的封装YUYV格式以四个16位小端序字存储。每个字的最高有效位包含一个分量,最低有效位为零填充。
标识符 |
代码 |
字节 0 |
字节 1 |
字节 2 |
字节 3 |
字节 4 |
字节 5 |
字节 6 |
字节 7 |
---|---|---|---|---|---|---|---|---|---|
|
‘UYVY’ |
Cb0 |
Y’0 |
Cr0 |
Y’1 |
Cb2 |
Y’2 |
Cr2 |
Y’3 |
|
‘VYUY’ |
Cr0 |
Y’0 |
Cb0 |
Y’1 |
Cr2 |
Y’2 |
Cb2 |
Y’3 |
|
‘YUYV’ |
Y’0 |
Cb0 |
Y’1 |
Cr0 |
Y’2 |
Cb2 |
Y’3 |
Cr2 |
|
‘YVYU’ |
Y’0 |
Cr0 |
Y’1 |
Cb0 |
Y’2 |
Cr2 |
Y’3 |
Cb2 |
标识符 |
代码 |
字 0 |
字 1 |
字 2 |
字 3 |
---|---|---|---|---|---|
|
‘Y210’ |
Y’0 (bits 15-6) |
Cb0 (bits 15-6) |
Y’1 (bits 15-6) |
Cr0 (bits 15-6) |
|
‘Y212’ |
Y’0 (bits 15-4) |
Cb0 (bits 15-4) |
Y’1 (bits 15-4) |
Cr0 (bits 15-4) |
|
‘Y216’ |
Y’0 (bits 15-0) |
Cb0 (bits 15-0) |
Y’1 (bits 15-0) |
Cr0 (bits 15-0) |
颜色样本位置:色度样本在水平方向上间隔定位。
2.7.1.1.3. 4:1:1 子采样¶
此格式将色度分量水平方向上进行4倍子采样,在12个字节中存储8个像素。
标识符 |
代码 |
字节 0 |
字节 1 |
字节 2 |
字节 3 |
字节 4 |
字节 5 |
字节 6 |
字节 7 |
字节 8 |
字节 9 |
字节 10 |
字节 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
‘Y41P’ |
Cb0 |
Y’0 |
Cr0 |
Y’1 |
Cb4 |
Y’2 |
Cr4 |
Y’3 |
Y’4 |
Y’5 |
Y’6 |
Y’7 |
注意
不要将V4L2_PIX_FMT_Y41P
与V4L2_PIX_FMT_YUV411P混淆。Y41P来源于“YUV 4:1:1 packed (封装)”,而YUV411P代表“YUV 4:1:1 planar (平面)”。
颜色样本位置:色度样本在水平方向上间隔定位。