4.13.3.4.1. 媒体总线格式

类型 v4l2_mbus_framefmt
struct v4l2_mbus_framefmt

__u32

width

图像宽度(以像素为单位)。

__u32

height

图像高度(以像素为单位)。如果 fieldV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_ALTERNATE 之一,则高度是指场中的行数,否则是指帧中的行数(对于隔行扫描格式,帧高度是场高度的两倍)。

__u32

code

格式代码,来自枚举 v4l2_mbus_pixelcode

__u32

field

场顺序,来自枚举 v4l2_field。有关详细信息,请参阅 场顺序。元数据 mbus 代码为零。

__u32

colorspace

图像色彩空间,来自枚举 v4l2_colorspace。驱动程序必须为子设备设置此值。如果应用程序设置了标志 V4L2_MBUS_FRAMEFMT_SET_CSC,则应用程序可以在源 pad 上设置此字段,以请求媒体总线数据的特定色彩空间。如果驱动程序无法处理请求的转换,它将返回另一个支持的色彩空间。驱动程序通过在枚举期间在相应的 struct v4l2_subdev_mbus_code_enum 中设置标志 V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE 来指示支持色彩空间转换。请参阅 子设备媒体总线代码枚举标志。元数据 mbus 代码为零。

union {

(anonymous)

__u16

ycbcr_enc

Y’CbCr 编码,来自枚举 v4l2_ycbcr_encoding。此信息补充了 colorspace,驱动程序必须为子设备设置此值,请参阅 色彩空间。如果应用程序设置了标志 V4L2_MBUS_FRAMEFMT_SET_CSC,则应用程序可以在源 pad 上设置此字段,以请求媒体总线数据的特定 Y’CbCr 编码。如果驱动程序无法处理请求的转换,它将返回另一个支持的编码。对于 HSV 媒体总线格式,此字段将被忽略。驱动程序通过在枚举期间在相应的 struct v4l2_subdev_mbus_code_enum 中设置标志 V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC 来指示支持 ycbcr_enc 转换。请参阅 子设备媒体总线代码枚举标志。元数据 mbus 代码为零。

__u16

hsv_enc

HSV 编码,来自枚举 v4l2_hsv_encoding。此信息补充了 colorspace,驱动程序必须为子设备设置此值,请参阅 色彩空间。如果应用程序设置了标志 V4L2_MBUS_FRAMEFMT_SET_CSC,则应用程序可以在源 pad 上设置此字段,以请求媒体总线数据的特定 HSV 编码。如果驱动程序无法处理请求的转换,它将返回另一个支持的编码。对于 Y’CbCr 媒体总线格式,此字段将被忽略。驱动程序通过在枚举期间在相应的 struct v4l2_subdev_mbus_code_enum 中设置标志 V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC 来指示支持 hsv_enc 转换。请参阅 子设备媒体总线代码枚举标志。元数据 mbus 代码为零。

}

__u16

quantization

量化范围,来自枚举 v4l2_quantization。此信息补充了 colorspace,驱动程序必须为子设备设置此值,请参阅 色彩空间。如果应用程序设置了标志 V4L2_MBUS_FRAMEFMT_SET_CSC,则应用程序可以在源 pad 上设置此字段,以请求媒体总线数据的特定量化。如果驱动程序无法处理请求的转换,它将返回另一个支持的量化。驱动程序通过在枚举期间在相应的 struct v4l2_subdev_mbus_code_enum 中设置标志 V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION 来指示支持量化转换。请参阅 子设备媒体总线代码枚举标志。元数据 mbus 代码为零。

__u16

xfer_func

传输函数,来自枚举 v4l2_xfer_func。此信息补充了 colorspace,驱动程序必须为子设备设置此值,请参阅 色彩空间。如果应用程序设置了标志 V4L2_MBUS_FRAMEFMT_SET_CSC,则应用程序可以在源 pad 上设置此字段,以请求媒体总线数据的特定传输函数。如果驱动程序无法处理请求的转换,它将返回另一个支持的传输函数。驱动程序通过在枚举期间在相应的 struct v4l2_subdev_mbus_code_enum 中设置标志 V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC 来指示支持传输函数转换。请参阅 子设备媒体总线代码枚举标志。元数据 mbus 代码为零。

__u16

flags

标志 请参阅::ref:v4l2-mbus-framefmt-flags

__u16

reserved[10]

保留供将来扩展。应用程序和驱动程序必须将数组设置为零。

v4l2_mbus_framefmt 标志

V4L2_MBUS_FRAMEFMT_SET_CSC

0x0001

由应用程序设置。它仅用于源 pad,对于接收 pad 将被忽略。如果设置,则请求子设备从接收到的色彩空间执行色彩空间转换到请求的色彩空间值。如果颜色测量字段(colorspacexfer_funcycbcr_enchsv_encquantization)设置为 *_DEFAULT,则该颜色测量设置将与接收到的设置保持不变。因此,为了更改量化,仅应将 quantization 字段设置为非默认值(V4L2_QUANTIZATION_FULL_RANGEV4L2_QUANTIZATION_LIM_RANGE),并且所有其他颜色测量字段应设置为 *_DEFAULT

要检查当前媒体总线帧格式的硬件支持哪些转换,请参阅 子设备媒体总线代码枚举标志

4.13.3.4.1.1. 媒体总线像素代码

媒体总线像素代码描述了在物理总线(在单独的物理组件之间和 SoC 设备内部)上传输的图像格式。这不应与 V4L2 像素格式混淆,后者使用四个字符代码描述存储在内存中的图像格式。

虽然总线上的图像格式与内存中的图像格式之间存在关系(原始 Bayer 图像不会仅仅通过将其存储到内存中就神奇地转换为 JPEG),但它们之间没有一一对应的关系。

媒体总线像素代码记录并行格式。如果像素数据通过串行总线传输,则使用描述在单个时钟周期传输样本的并行格式的媒体总线像素代码。例如,MEDIA_BUS_FMT_BGR888_1X24 和 MEDIA_BUS_FMT_BGR888_3X8 都用于并行总线上传输每个样本 8 位的 BGR 数据,而在串行总线上,此格式的数据仅使用 MEDIA_BUS_FMT_BGR888_1X24 表示。这是因为在串行总线上有效地只有一种方式来传输该格式。

4.13.3.4.1.1.1. 打包的 RGB 格式

这些格式将像素数据作为红色、绿色和蓝色分量传输。格式代码由以下信息组成。

  • 红色、绿色和蓝色分量的顺序代码,如像素样本中编码的那样。可能的值为 RGB 和 BGR。

  • 每个分量的位数,对于每个分量。所有分量的值可以不同。常用值为 555 和 565。

  • 每个像素的总线样本数。宽度大于总线宽度的像素必须在多个样本中传输。常用值为 1 和 2。

  • 总线宽度。

  • 对于每个像素的总位数小于每个像素的总线样本数乘以总线宽度的格式,一个填充值,说明字节是在其最高有效位 (PADHI) 还是最低有效位 (PADLO) 中填充。前缀“C”用于每个单独分量的最高有效位 (CPADHI) 或最低有效位 (CPADLO) 中的分量式填充。

  • 对于每个像素的总线样本数大于 1 的格式,一个字节序值,说明像素是先传输 MSB (BE) 还是先传输 LSB (LE)。

例如,一种将像素编码为 5 位红色、5 位绿色和 5 位蓝色值,并在高位进行填充的格式,以每个像素 2 个 8 位采样传输,其中最高有效位(填充位、红色和一半的绿色值)首先传输,将被命名为 MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE

下表列出了现有的打包 RGB 格式。

RGB 格式

标识符

代码

数据组织

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

MEDIA_BUS_FMT_RGB444_1X12

0x1016

r3

r2

r1

r0

g3

g2

g1

g0

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE

0x1001

0

0

0

0

r3

r2

r1

r0

g3

g2

g1

g0

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE

0x1002

g3

g2

g1

g0

b3

b2

b1

b0

0

0

0

0

r3

r2

r1

r0

MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE

0x1003

0

r4

r3

r2

r1

r0

g4

g3

g2

g1

g0

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE

0x1004

g2

g1

g0

b4

b3

b2

b1

b0

0

r4

r3

r2

r1

r0

g4

g3

MEDIA_BUS_FMT_RGB565_1X16

0x1017

r4

r3

r2

r1

r0

g5

g4

g3

g2

g1

g0

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_BGR565_2X8_BE

0x1005

b4

b3

b2

b1

b0

g5

g4

g3

g2

g1

g0

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_BGR565_2X8_LE

0x1006

g2

g1

g0

r4

r3

r2

r1

r0

b4

b3

b2

b1

b0

g5

g4

g3

MEDIA_BUS_FMT_RGB565_2X8_BE

0x1007

r4

r3

r2

r1

r0

g5

g4

g3

g2

g1

g0

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB565_2X8_LE

0x1008

g2

g1

g0

b4

b3

b2

b1

b0

r4

r3

r2

r1

r0

g5

g4

g3

MEDIA_BUS_FMT_RGB666_1X18

0x1009

r5

r4

r3

r2

r1

r0

g5

g4

g3

g2

g1

g0

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB666_2X9_BE

0x1025

r5

r4

r3

r2

r1

r0

g5

g4

g3

g2

g1

g0

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_BGR666_1X18

0x1023

b5

b4

b3

b2

b1

b0

g5

g4

g3

g2

g1

g0

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_RBG888_1X24

0x100e

r7

r6

r5

r4

r3

r2

r1

r0

b7

b6

b5

b4

b3

b2

b1

b0

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_RGB666_1X24_CPADHI

0x1015

0

0

r5

r4

r3

r2

r1

r0

0

0

g5

g4

g3

g2

g1

g0

0

0

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_BGR666_1X24_CPADHI

0x1024

0

0

b5

b4

b3

b2

b1

b0

0

0

g5

g4

g3

g2

g1

g0

0

0

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_RGB565_1X24_CPADHI

0x1022

0

0

0

r4

r3

r2

r1

r0

0

0

g5

g4

g3

g2

g1

g0

0

0

0

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_BGR888_1X24

0x1013

b7

b6

b5

b4

b3

b2

b1

b0

g7

g6

g5

g4

g3

g2

g1

g0

r7

r6

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_BGR888_3X8

0x101b

b7

b6

b5

b4

b3

b2

b1

b0

g7

g6

g5

g4

g3

g2

g1

g0

r7

r6

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_GBR888_1X24

0x1014

g7

g6

g5

g4

g3

g2

g1

g0

b7

b6

b5

b4

b3

b2

b1

b0

r7

r6

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_RGB888_1X24

0x100a

r7

r6

r5

r4

r3

r2

r1

r0

g7

g6

g5

g4

g3

g2

g1

g0

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB888_2X12_BE

0x100b

r7

r6

r5

r4

r3

r2

r1

r0

g7

g6

g5

g4

g3

g2

g1

g0

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB888_2X12_LE

0x100c

g3

g2

g1

g0

b7

b6

b5

b4

b3

b2

b1

b0

r7

r6

r5

r4

r3

r2

r1

r0

g7

g6

g5

g4

MEDIA_BUS_FMT_RGB888_3X8

0x101c

r7

r6

r5

r4

r3

r2

r1

r0

g7

g6

g5

g4

g3

g2

g1

g0

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB666_1X30-CPADLO

0x101e

r5

r4

r3

r2

r1

r0

0

0

0

0

g5

g4

g3

g2

g1

g0

0

0

0

0

b5

b4

b3

b2

b1

b0

0

0

0

0

MEDIA_BUS_FMT_RGB888_1X30-CPADLO

0x101f

r7

r6

r5

r4

r3

r2

r1

r0

0

0

g7

g6

g5

g4

g3

g2

g1

g0

0

0

b7

b6

b5

b4

b3

b2

b1

b0

0

0

MEDIA_BUS_FMT_ARGB888_1X32

0x100d

a7

a6

a5

a4

a3

a2

a1

a0

r7

r6

r5

r4

r3

r2

r1

r0

g7

g6

g5

g4

g3

g2

g1

g0

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB888_1X32_PADHI

0x100f

0

0

0

0

0

0

0

0

r7

r6

r5

r4

r3

r2

r1

r0

g7

g6

g5

g4

g3

g2

g1

g0

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_RGB101010_1X30

0x1018

r9

r8

r7

r6

r5

r4

r3

r2

r1

r0

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

下表列出了现有的打包 36 位宽 RGB 格式。

36 位 RGB 格式

标识符

代码

数据组织

35

34

33

32

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

MEDIA_BUS_FMT_RGB666_1X36_CPADLO

0x1020

r5

r4

r3

r2

r1

r0

0

0

0

0

0

0

g5

g4

g3

g2

g1

g0

0

0

0

0

0

0

b5

b4

b3

b2

b1

b0

0

0

0

0

0

0

MEDIA_BUS_FMT_RGB888_1X36_CPADLO

0x1021

r7

r6

r5

r4

r3

r2

r1

r0

0

0

0

0

g7

g6

g5

g4

g3

g2

g1

g0

0

0

0

0

b7

b6

b5

b4

b3

b2

b1

b0

0

0

0

0

MEDIA_BUS_FMT_RGB121212_1X36

0x1019

r11

r10

r9

r8

r7

r6

r5

r4

r3

r2

r1

r0

g11

g10

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

下表列出了现有的打包 48 位宽 RGB 格式。

48 位 RGB 格式

标识符

代码

数据组织

47

46

45

44

43

42

41

40

39

38

37

36

35

34

33

32

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

MEDIA_BUS_FMT_RGB161616_1X48

0x101a

r15

r14

r13

r12

r11

r10

r9

r8

r7

r6

r5

r4

r3

r2

r1

r0

g15

g14

g13

g12

g11

g10

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

b15

b14

b13

b12

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

在 LVDS 总线上,通常每个采样在每个像素时钟的七个时隙中串行传输,同时在三个(18 位)或四个(24 位)或五个(30 位)差分数据对上进行传输。其余的位用于 SPWG/PSWG/VESA 或 JEIDA 标准定义的控制信号。例如,使用 JEIDA 定义的位映射在四个通道上以七个时隙串行传输的 24 位 RGB 格式将被命名为 MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA

LVDS RGB 格式

标识符

代码

数据组织

时隙

通道

4

3

2

1

0

MEDIA_BUS_FMT_RGB666_1X7X3_SPWG

0x1010

0

d

b1

g0

1

d

b0

r5

2

d

g5

r4

3

b5

g4

r3

4

b4

g3

r2

5

b3

g2

r1

6

b2

g1

r0

MEDIA_BUS_FMT_RGB888_1X7X4_SPWG

0x1011

0

d

d

b1

g0

1

b7

d

b0

r5

2

b6

d

g5

r4

3

g7

b5

g4

r3

4

g6

b4

g3

r2

5

r7

b3

g2

r1

6

r6

b2

g1

r0

MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA

0x1012

0

d

d

b3

g2

1

b1

d

b2

r7

2

b0

d

g7

r6

3

g1

b7

g6

r5

4

g0

b6

g5

r4

5

r1

b5

g4

r3

6

r0

b4

g3

r2

MEDIA_BUS_FMT_RGB101010_1X7X5_SPWG

0x1026

0

d

d

d

b1

g0

1

b9

b7

d

b0

r5

2

b8

b6

d

g5

r4

3

g9

g7

b5

g4

r3

4

g8

g6

b4

g3

r2

5

r9

r7

b3

g2

r1

6

r8

r6

b2

g1

r0

MEDIA_BUS_FMT_RGB101010_1X7X5_JEIDA

0x1027

0

d

d

d

b5

g4

1

b1

b3

d

b4

r9

2

b0

b2

d

g9

r8

3

g1

g3

b9

g8

r7

4

g0

g2

b8

g7

r6

5

r1

r3

b7

g6

r5

6

r0

r2

b6

g5

r4

4.13.3.4.1.1.2. 拜耳格式

这些格式将像素数据作为红色、绿色和蓝色分量传输。格式代码由以下信息组成。

  • 红色、绿色和蓝色分量顺序代码,如像素采样中编码的那样。可能的值如 图 4.8 拜耳模式 所示。

  • 每个像素分量的位数。所有分量都以相同的位数传输。常用值为 8、10 和 12。

  • 压缩(可选)。如果像素分量经过 ALAW 或 DPCM 压缩,则会提及压缩方案和每个压缩像素分量的位数。

  • 每个像素的总线样本数。宽度大于总线宽度的像素必须在多个样本中传输。常用值为 1 和 2。

  • 总线宽度。

  • 对于每个像素的总位数小于每个像素的总线采样数乘以总线宽度的格式,填充值说明字节是否在其最高有效位 (PADHI) 或最低有效位 (PADLO) 中填充。

  • 对于每个像素的总线样本数大于 1 的格式,一个字节序值,说明像素是先传输 MSB (BE) 还是先传输 LSB (LE)。

例如,一种具有以红色、绿色、绿色、蓝色模式排列的未压缩 10 位拜耳分量,以每个像素 2 个 8 位采样传输,且最低有效位首先传输的格式,将被命名为 MEDIA_BUS_FMT_SRGGB10_2X8_PADHI_LE

bayer.svg

图 4.8 拜耳模式

下表列出了现有的打包拜耳格式。数据组织仅作为第一个像素的示例给出。

拜耳格式

标识符

代码

数据组织

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

MEDIA_BUS_FMT_SBGGR8_1X8

0x3001

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_SGBRG8_1X8

0x3013

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SGRBG8_1X8

0x3002

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SRGGB8_1X8

0x3014

r7

r6

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8

0x3015

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8

0x3016

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8

0x3017

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8

0x3018

r7

r6

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8

0x300b

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8

0x300c

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8

0x3009

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8

0x300d

r7

r6

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE

0x3003

0

0

0

0

0

0

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE

0x3004

b7

b6

b5

b4

b3

b2

b1

b0

0

0

0

0

0

0

b9

b8

MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE

0x3005

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

0

0

0

0

0

0

MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE

0x3006

b1

b0

0

0

0

0

0

0

b9

b8

b7

b6

b5

b4

b3

b2

MEDIA_BUS_FMT_SBGGR10_1X10

0x3007

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_SGBRG10_1X10

0x300e

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SGRBG10_1X10

0x300a

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SRGGB10_1X10

0x300f

r9

r8

r7

r6

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_SBGGR12_1X12

0x3008

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_SGBRG12_1X12

0x3010

g11

g10

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SGRBG12_1X12

0x3011

g11

g10

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SRGGB12_1X12

0x3012

r11

r10

r9

r8

r7

r6

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_SBGGR14_1X14

0x3019

b13

b12

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_SGBRG14_1X14

0x301a

g13

g12

g11

g10

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SGRBG14_1X14

0x301b

g13

g12

g11

g10

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SRGGB14_1X14

0x301c

r13

r12

r11

r10

r9

r8

r7

r6

r5

r4

r3

r2

r1

r0

MEDIA_BUS_FMT_SBGGR16_1X16

0x301d

b15

b14

b13

b12

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

b0

MEDIA_BUS_FMT_SGBRG16_1X16

0x301e

g15

g14

g13

g12

g11

g10

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SGRBG16_1X16

0x301f

g15

g14

g13

g12

g11

g10

g9

g8

g7

g6

g5

g4

g3

g2

g1

g0

MEDIA_BUS_FMT_SRGGB16_1X16

0x3020

r15

r14

r13

r12

r11

r10

r9

r8

r7

r6

r5

r4

r3

r2

r1

r0

4.13.3.4.1.1.3. 打包 YUV 格式

这些数据格式将像素数据作为(可能下采样的)Y、U 和 V 分量传输。某些格式在其某些采样中包含虚拟位,统称为“YDYC”(Y-Dummy-Y-Chroma)格式。不能依赖这些虚拟位的值,因为它们是未定义的。

格式代码由以下信息组成。

  • Y、U 和 V 分量顺序代码,如在总线上传输的那样。对于没有虚拟位的格式,可能的值为 YUYV、UYVY、YVYU 和 VYUY,对于 YDYC 格式,可能的值为 YDYUYDYV、YDYVYDYU、YUYDYVYD 和 YVYDYUYD。

  • 每个像素分量的位数。所有分量都以相同的位数传输。常用值为 8、10 和 12。

  • 每个像素的总线采样数。宽度大于总线宽度的像素必须在多个采样中传输。常用值为 0.5(编码为 0_5;在这种情况下,每个总线采样传输两个像素)、1、1.5(编码为 1_5)和 2。

  • 总线宽度。当总线宽度大于每个像素分量的位数时,多个分量被打包到单个总线采样中。分量的顺序由顺序代码指定,代码左侧的分量在高位传输。常用值为 8 和 16。

例如,一种将像素编码为 8 位 YUV 值,下采样到 4:2:2,并以 U、Y、V、Y 顺序按每个像素 2 个 8 位总线采样传输的格式,将被命名为 MEDIA_BUS_FMT_UYVY8_2X8

YUV 格式 列出了现有的打包 YUV 格式,并描述了每个采样中每个像素数据的组织。当格式模式跨越多个采样时,将描述模式中的每个采样。

在总线上传输的每个位的作用由以下代码之一标识。

  • yx 用于亮度分量位号 x

  • ux 用于蓝色色度分量位号 x

  • vx 用于红色色度分量位号 x

  • ax 用于 Alpha 分量位号 x

  • 用于不可用的位(对于高于总线宽度的位置)

  • d 用于虚拟位

YUV 格式

标识符

代码

数据组织

31

30

29

28

27

26

25

24

23

22

21

10

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

MEDIA_BUS_FMT_Y8_1X8

0x2001

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_UV8_1X8

0x2015

u7

u6

u5

u4

u3

u2

u1

u0

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_UYVY8_1_5X8

0x2002

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_VYUY8_1_5X8

0x2003

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_YUYV8_1_5X8

0x2004

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_YVYU8_1_5X8

0x2005

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

MEDIA_BUS_FMT_UYVY8_2X8

0x2006

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_VYUY8_2X8

0x2007

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_YUYV8_2X8

0x2008

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_YVYU8_2X8

0x2009

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

MEDIA_BUS_FMT_Y10_1X10

0x200a

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_Y10_2X8_PADHI_LE

0x202c

y7

y6

y5

y4

y3

y2

y1

y0

0

0

0

0

0

0

y9

y8

MEDIA_BUS_FMT_UYVY10_2X10

0x2018

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_VYUY10_2X10

0x2019

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_YUYV10_2X10

0x200b

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_YVYU10_2X10

0x200c

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

MEDIA_BUS_FMT_Y12_1X12

0x2013

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_UYVY12_2X12

0x201c

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_VYUY12_2X12

0x201d

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_YUYV12_2X12

0x201e

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_YVYU12_2X12

0x201f

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

MEDIA_BUS_FMT_Y14_1X14

0x202d

y13

y12

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_Y16_1X16

0x202e

y15

y14

y13

y12

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_UYVY8_1X16

0x200f

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_VYUY8_1X16

0x2010

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_YUYV8_1X16

0x2011

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_YVYU8_1X16

0x2012

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

MEDIA_BUS_FMT_YDYUYDYV8_1X16

0x2014

y7

y6

y5

y4

y3

y2

y1

y0

d

d

d

d

d

d

d

d

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

d

d

d

d

d

d

d

d

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_UYVY10_1X20

0x201a

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_VYUY10_1X20

0x201b

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_YUYV10_1X20

0x200d

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_YVYU10_1X20

0x200e

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

MEDIA_BUS_FMT_VUY8_1X24

0x201a

v7

v6

v5

v4

v3

v2

v1

v0

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_YUV8_1X24

0x2025

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_UYYVYY8_0_5X24

0x2026

u7

u6

u5

u4

u3

u2

u1

u0

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

v7

v6

v5

v4

v3

v2

v1

v0

y7

y6

y5

y4

y3

y2

y1

y0

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_UYVY12_1X24

0x2020

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_VYUY12_1X24

0x2021

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_YUYV12_1X24

0x2022

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_YVYU12_1X24

0x2023

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

MEDIA_BUS_FMT_YUV10_1X30

0x2016

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_UYYVYY10_0_5X30

0x2027

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_AYUV8_1X32

0x2017

a7

a6

a5

a4

a3

a2

a1

a0

y7

y6

y5

y4

y3

y2

y1

y0

u7

u6

u5

u4

u3

u2

u1

u0

v7

v6

v5

v4

v3

v2

v1

v0

下表列出了现有的 36 位宽的 YUV 格式。

36 位 YUV 格式

标识符

代码

数据组织

35

34

33

32

31

30

29

28

27

26

25

24

23

22

21

10

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

MEDIA_BUS_FMT_UYYVYY12_0_5X36

0x2028

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

MEDIA_BUS_FMT_YUV12_1X36

0x2029

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

下表列出了现有的 48 位宽的 YUV 格式。

48 位 YUV 格式

标识符

代码

数据组织

47

46

45

44

43

42

41

40

39

38

37

36

35

34

33

32

31

30

29

28

27

26

25

24

23

22

21

10

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

MEDIA_BUS_FMT_YUV16_1X48

0x202a

y15

y14

y13

y12

y11

y10

y8

y8

y7

y6

y5

y4

y3

y2

y1

y0

u15

u14

u13

u12

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

v15

v14

v13

v12

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

MEDIA_BUS_FMT_UYYVYY16_0_5X48

0x202b

u15

u14

u13

u12

u11

u10

u9

u8

u7

u6

u5

u4

u3

u2

u1

u0

y15

y14

y13

y12

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

y15

y14

y13

y12

y11

y10

y8

y8

y7

y6

y5

y4

y3

y2

y1

y0

v15

v14

v13

v12

v11

v10

v9

v8

v7

v6

v5

v4

v3

v2

v1

v0

y15

y14

y13

y12

y11

y10

y9

y8

y7

y6

y5

y4

y3

y2

y1

y0

y15

y14

y13

y12

y11

y10

y8

y8

y7

y6

y5

y4

y3

y2

y1

y0

4.13.3.4.1.1.4. HSV/HSL 格式

这些格式使用色相-饱和度-值或色相-饱和度-亮度分量,以圆柱坐标系传输 RGB 值的像素数据。格式代码由以下信息构成。

  • 色相、饱和度、值或亮度和可选的 alpha 分量顺序代码,如像素样本中编码的那样。当前仅支持的值为 AHSV。

  • 每个分量的每分量的位数。所有分量的值可以不同。当前仅支持的值为 8888。

  • 每个像素的总线样本数。宽度大于总线宽度的像素必须在多个样本中传输。当前仅支持的值为 1。

  • 总线宽度。

  • 对于每个像素的总位数小于每个像素的总线采样数乘以总线宽度的格式,填充值说明字节是否在其最高有效位 (PADHI) 或最低有效位 (PADLO) 中填充。

  • 对于每个像素的总线样本数大于 1 的格式,一个字节序值,说明像素是先传输 MSB (BE) 还是先传输 LSB (LE)。

下表列出了现有的 HSV/HSL 格式。

HSV/HSL 格式

标识符

代码

数据组织

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

MEDIA_BUS_FMT_AHSV8888_1X32

0x6001

a7

a6

a5

a4

a3

a2

a1

a0

h7

h6

h5

h4

h3

h2

h1

h0

s7

s6

s5

s4

s3

s2

s1

s0

v7

v6

v5

v4

v3

v2

v1

v0

4.13.3.4.1.1.5. JPEG 压缩格式

这些数据格式由从 JPEG 压缩过程获得的 8 位字节的有序序列组成。除了 _JPEG 后缀之外,格式代码由以下信息构成。

  • 每个熵编码字节的总线样本数。

  • 总线宽度。

例如,对于 JPEG 基线处理和 8 位总线宽度,格式将命名为 MEDIA_BUS_FMT_JPEG_1X8

下表列出了现有的 JPEG 压缩格式。

JPEG 格式

标识符

代码

备注

MEDIA_BUS_FMT_JPEG_1X8

0x4001

除了用于并行总线外,还建议使用此格式通过 MIPI CSI 总线使用用户定义的 8 位数据类型传输 JPEG 数据。

4.13.3.4.1.1.6. 供应商和设备特定的格式

本节列出了供应商或设备特定的复杂数据格式。

下表列出了现有的供应商和设备特定的格式。

供应商和设备特定的格式

标识符

代码

注释

MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8

0x5001

三星 S3C73MX 摄像头传感器使用的交错原始 UYVY 和 JPEG 图像格式,带有嵌入的元数据。

4.13.3.4.1.1.7. 元数据格式

本节列出了所有元数据格式。

下表列出了现有的元数据格式。

元数据格式

标识符

代码

注释

MEDIA_BUS_FMT_METADATA_FIXED

0x7001

当同一驱动程序处理链接的两侧,并且总线格式是无法从用户空间配置的固定元数据格式时,应使用此格式。对于此格式,宽度和高度将设置为 0。

4.13.3.4.1.1.8. 通用串行元数据格式

通用串行元数据格式用于串行总线上,其中实际数据内容或多或少是设备特定的,但是数据由多个不以任何方式处理数据的设备传输和接收,只是将其写入系统内存以便在管道末端用软件进行处理。

数组单元中的 “b” 表示一个字节的数据,后跟位的编号,最后是下标中的位号。“x” 表示一个填充位。

通用串行元数据格式

标识符

代码

总线内的数据组织 数据单元

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

MEDIA_BUS_FMT_META_8

0x8001

b07

b06

b05

b04

b03

b02

b01

b00

MEDIA_BUS_FMT_META_10

0x8002

b07

b06

b05

b04

b03

b02

b01

b00

x

x

MEDIA_BUS_FMT_META_12

0x8003

b07

b06

b05

b04

b03

b02

b01

b00

x

x

x

x

MEDIA_BUS_FMT_META_14

0x8004

b07

b06

b05

b04

b03

b02

b01

b00

x

x

x

x

x

x

MEDIA_BUS_FMT_META_16

0x8005

b07

b06

b05

b04

b03

b02

b01

b00

x

x

x

x

x

x

x

x

MEDIA_BUS_FMT_META_20

0x8006

b07

b06

b05

b04

b03

b02

b01

b00

x

x

x

x

x

x

x

x

x

x

x

x

MEDIA_BUS_FMT_META_24

0x8007

b07

b06

b05

b04

b03

b02

b01

b00

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x