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]。

封装YUV 4:4:4图像格式(每分量少于8位)

标识符

代码

内存中的字节 0

字节 1

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

V4L2_PIX_FMT_YUV444

‘Y444’

Cb3

Cb2

Cb1

Cb0

Cr3

Cr2

Cr1

Cr0

a3

a2

a1

a0

Y’3

Y’2

Y’1

Y’0

V4L2_PIX_FMT_YUV555

‘YUVO’

Cb2

Cb1

Cb0

Cr4

Cr3

Cr2

Cr1

Cr0

a

Y’4

Y’3

Y’2

Y’1

Y’0

Cb4

Cb3

V4L2_PIX_FMT_YUV565

‘YUVP’

Cb2

Cb1

Cb0

Cr4

Cr3

Cr2

Cr1

Cr0

Y’4

Y’3

Y’2

Y’1

Y’0

Cb5

Cb4

Cb3

注意

对于YUV444和YUV555格式,从驱动程序读取时alpha位的值是未定义的,写入驱动程序时会被忽略,除非已经为视频叠加视频输出叠加协商了alpha混合。

下表列出了每分量8位的封装YUV 4:4:4格式。它们的命名基于Y、Cb和Cr分量在内存中的存储顺序,以及每个像素的总位数。例如,VUYX32格式将一个像素存储在第一个字节中的Cr7-0,第二个字节中的Cb7-0和第三个字节中的Y’7-0

封装YUV图像格式(8bpc)

标识符

代码

字节 0

字节 1

字节 2

字节 3

V4L2_PIX_FMT_YUV32

‘YUV4’

A7-0

Y’7-0

Cb7-0

Cr7-0

V4L2_PIX_FMT_AYUV32

‘AYUV’

A7-0

Y’7-0

Cb7-0

Cr7-0

V4L2_PIX_FMT_XYUV32

‘XYUV’

X7-0

Y’7-0

Cb7-0

Cr7-0

V4L2_PIX_FMT_VUYA32

‘VUYA’

Cr7-0

Cb7-0

Y’7-0

A7-0

V4L2_PIX_FMT_VUYX32

‘VUYX’

Cr7-0

Cb7-0

Y’7-0

X7-0

V4L2_PIX_FMT_YUVA32

‘YUVA’

Y’7-0

Cb7-0

Cr7-0

A7-0

V4L2_PIX_FMT_YUVX32

‘YUVX’

Y’7-0

Cb7-0

Cr7-0

X7-0

V4L2_PIX_FMT_YUV24

‘YUV3’

Y’7-0

Cb7-0

Cr7-0

-

注意

  • alpha分量预计包含一个有意义的值,可供驱动程序和应用程序使用。

  • 填充位包含未定义的值,所有应用程序和驱动程序都必须忽略它们。

下表列出了每分量12位的封装YUV 4:4:4格式。将每分量的位扩展到16位,数据在高位,低位为零,以小端字节序排列,每个像素存储在6个字节中。

封装YUV 4:4:4图像格式(12bpc)

标识符

代码

字节 1-0

字节 3-2

字节 5-4

字节 7-6

字节 9-8

字节 11-10

V4L2_PIX_FMT_YUV48_12

‘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位小端序字存储。每个字的最高有效位包含一个分量,最低有效位为零填充。

32位容器中的封装YUV 4:2:2格式

标识符

代码

字节 0

字节 1

字节 2

字节 3

字节 4

字节 5

字节 6

字节 7

V4L2_PIX_FMT_UYVY

‘UYVY’

Cb0

Y’0

Cr0

Y’1

Cb2

Y’2

Cr2

Y’3

V4L2_PIX_FMT_VYUY

‘VYUY’

Cr0

Y’0

Cb0

Y’1

Cr2

Y’2

Cb2

Y’3

V4L2_PIX_FMT_YUYV

‘YUYV’

Y’0

Cb0

Y’1

Cr0

Y’2

Cb2

Y’3

Cr2

V4L2_PIX_FMT_YVYU

‘YVYU’

Y’0

Cr0

Y’1

Cb0

Y’2

Cr2

Y’3

Cb2

64位容器中的封装YUV 4:2:2格式

标识符

代码

字 0

字 1

字 2

字 3

V4L2_PIX_FMT_Y210

‘Y210’

Y’0 (bits 15-6)

Cb0 (bits 15-6)

Y’1 (bits 15-6)

Cr0 (bits 15-6)

V4L2_PIX_FMT_Y212

‘Y212’

Y’0 (bits 15-4)

Cb0 (bits 15-4)

Y’1 (bits 15-4)

Cr0 (bits 15-4)

V4L2_PIX_FMT_Y216

‘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个像素。

封装YUV 4:1:1格式

标识符

代码

字节 0

字节 1

字节 2

字节 3

字节 4

字节 5

字节 6

字节 7

字节 8

字节 9

字节 10

字节 11

V4L2_PIX_FMT_Y41P

‘Y41P’

Cb0

Y’0

Cr0

Y’1

Cb4

Y’2

Cr4

Y’3

Y’4

Y’5

Y’6

Y’7

注意

不要将V4L2_PIX_FMT_Y41PV4L2_PIX_FMT_YUV411P混淆。Y41P来源于“YUV 4:1:1 packed (封装)”,而YUV411P代表“YUV 4:1:1 planar (平面)”。

颜色样本位置:色度样本在水平方向上间隔定位