__u32 |
width
|
图像宽度,以像素为单位。 |
__u32 |
height
|
图像高度,以像素为单位。如果 field 是 V4L2_FIELD_TOP 、 V4L2_FIELD_BOTTOM 或 V4L2_FIELD_ALTERNATE 中的一个,则高度指的是场中的行数;否则,它指的是帧中的行数(对于隔行扫描格式,它是场高度的两倍)。 |
应用程序设置这些字段以请求图像大小,驱动程序返回最接近的可能值。对于平面格式,width 和 height 应用于最大的平面。为避免歧义,驱动程序必须返回向上舍入到任何较小平面的比例因子的倍数的值。例如,当图像格式为 YUV 4:2:0 时,width 和 height 必须是 2 的倍数。
对于包含流内编码的分辨率信息的压缩格式,当馈送到有状态的 mem2mem 解码器时,字段可以为零,以依赖解码器来检测正确的值。有关更多详细信息,请参阅 内存到内存的有状态视频解码器接口 和格式描述。
对于有状态 mem2mem 编码器的 CAPTURE 侧的压缩格式,这些字段必须为零,因为编码大小预计由编码器本身根据 OUTPUT 侧在内部计算。有关更多详细信息,请参阅 内存到内存的有状态视频编码器接口 和格式描述。
|
__u32 |
pixelformat
|
像素格式或压缩类型,由应用程序设置。这是一个小端 四字符代码。V4L2 在 RGB 格式 中定义了标准 RGB 格式,在 YUV 格式 中定义了 YUV 格式,并在 保留图像格式 中定义了保留代码 |
__u32 |
field
|
场序,来自枚举 v4l2_field 。视频图像通常是隔行扫描的。应用程序可以请求仅捕获或输出顶部或底部场,或者在单个缓冲区中隔行扫描或按顺序存储的两个场,或在单独的缓冲区中交替存储。驱动程序返回所选的实际场序。有关场的更多详细信息,请参阅 场序。 |
__u32 |
bytesperline
|
两个相邻行中最左侧像素之间的距离,以字节为单位。 |
应用程序和驱动程序都可以设置此字段,以请求在每行末尾添加填充字节。但是,驱动程序可能会忽略应用程序请求的值,返回 width 乘以每个像素的字节数或硬件所需的更大值。这意味着应用程序可以将此字段设置为零以获得合理的默认值。
视频硬件可能会访问填充字节,因此它们必须驻留在可访问的内存中。考虑图像的最后一行之后的填充字节跨越系统页面边界的情况。输入设备可能会写入填充字节,该值未定义。输出设备忽略填充字节的内容。
当图像格式为平面时,bytesperline 值应用于第一个平面,并除以与其他平面的 width 字段相同的因子。例如,YUV 4:2:0 图像的 Cb 和 Cr 平面在每行之后具有 Y 平面一半的填充字节。为避免歧义,驱动程序必须返回一个向上舍入到比例因子倍数的 bytesperline 值。
对于压缩格式,bytesperline 值没有意义。在这种情况下,应用程序和驱动程序必须将其设置为 0。
|
__u32 |
sizeimage
|
保存完整图像的缓冲区大小,以字节为单位,由驱动程序设置。通常,这是 bytesperline 乘以 height 。当图像由可变长度的压缩数据组成时,这是编解码器为支持最坏情况的压缩方案所需的字节数。
驱动程序将为未压缩图像设置该值。
允许客户端为在 ioctl VIDIOC_ENUM_FMT 中标记为 V4L2_FMT_FLAG_COMPRESSED 的可变长度压缩数据设置 sizeimage 字段,但是驱动程序可能会忽略它并自行设置该值,或者它可能会根据对齐要求或最小/最大大小要求修改所提供的值。如果客户端希望将其留给驱动程序,则应将 sizeimage 设置为 0。
|
__u32 |
colorspace
|
图像色彩空间,来自枚举 v4l2_colorspace 。此信息补充了 pixelformat ,必须由捕获流的驱动程序和输出流的应用程序设置,请参阅 色彩空间。如果应用程序设置了标志 V4L2_PIX_FMT_FLAG_SET_CSC ,则应用程序可以为捕获流设置此字段,以请求捕获的图像数据的特定色彩空间。如果驱动程序无法处理请求的转换,它将返回另一个受支持的色彩空间。驱动程序通过在枚举期间设置相应的 struct v4l2_fmtdesc 中的标志 V4L2_FMT_FLAG_CSC_COLORSPACE 来指示支持色彩空间转换。请参阅 图像格式描述标志。 |
__u32 |
priv
|
此字段指示 struct v4l2_pix_format 的其余字段(也称为扩展字段)是否有效。当设置为 V4L2_PIX_FMT_PRIV_MAGIC 时,表示扩展字段已正确初始化。当设置为任何其他值时,表示扩展字段包含未定义的值。
希望使用像素格式扩展字段的应用程序必须首先通过查询设备的 V4L2_CAP_EXT_PIX_FORMAT 功能来确保该功能受支持。如果未设置该功能,则不支持像素格式扩展字段,并且使用扩展字段将导致未定义的结果。
要使用扩展字段,应用程序必须将 priv 字段设置为 V4L2_PIX_FMT_PRIV_MAGIC ,初始化所有扩展字段,并将 struct v4l2_format raw_data 字段的未使用字节清零。
当 priv 字段未设置为 V4L2_PIX_FMT_PRIV_MAGIC 时,驱动程序必须表现得好像所有扩展字段都设置为零。返回时,驱动程序必须将 priv 字段设置为 V4L2_PIX_FMT_PRIV_MAGIC ,并将所有扩展字段设置为适用的值。
|
__u32 |
flags
|
应用程序或驱动程序设置的标志,请参阅 格式标志。 |
union { |
(匿名) |
__u32 |
ycbcr_enc
|
Y’CbCr 编码,来自枚举 v4l2_ycbcr_encoding 。此信息补充了 colorspace ,必须由捕获流的驱动程序和输出流的应用程序设置,请参阅 色彩空间。如果应用程序设置了标志 V4L2_PIX_FMT_FLAG_SET_CSC ,则应用程序可以为捕获流设置此字段,以请求捕获的图像数据的特定 Y’CbCr 编码。如果驱动程序无法处理请求的转换,它将返回另一个受支持的编码。对于 HSV 像素格式,此字段将被忽略。驱动程序通过在枚举期间设置相应的 struct v4l2_fmtdesc 中的标志 V4L2_FMT_FLAG_CSC_YCBCR_ENC 来指示支持 ycbcr_enc 转换。请参阅 图像格式描述标志。 |
__u32 |
hsv_enc
|
HSV 编码,来自枚举 v4l2_hsv_encoding 。此信息是对 colorspace 的补充,必须由驱动程序为捕获流设置,并由应用程序为输出流设置,请参阅 色彩空间。如果应用程序设置了标志 V4L2_PIX_FMT_FLAG_SET_CSC ,则应用程序可以为捕获流设置此字段,以请求捕获图像数据的特定 HSV 编码。如果驱动程序无法处理请求的转换,它将返回另一个受支持的编码。对于非 HSV 像素格式,此字段将被忽略。驱动程序通过在枚举期间在相应的结构 v4l2_fmtdesc 中设置标志 V4L2_FMT_FLAG_CSC_HSV_ENC 来指示支持 hsv_enc 转换。请参阅 图像格式描述标志。 |
} |
|
__u32 |
量化
|
量化范围,来自枚举 v4l2_quantization 。此信息是对 colorspace 的补充,必须由驱动程序为捕获流设置,并由应用程序为输出流设置,请参阅 色彩空间。如果应用程序设置了标志 V4L2_PIX_FMT_FLAG_SET_CSC ,则应用程序可以为捕获流设置此字段,以请求捕获图像数据的特定量化范围。如果驱动程序无法处理请求的转换,它将返回另一个受支持的量化。驱动程序通过在枚举期间在相应的结构 v4l2_fmtdesc 中设置标志 V4L2_FMT_FLAG_CSC_QUANTIZATION 来指示支持量化转换。请参阅 图像格式描述标志。 |
__u32 |
xfer_func
|
传输函数,来自枚举 v4l2_xfer_func 。此信息是对 colorspace 的补充,必须由驱动程序为捕获流设置,并由应用程序为输出流设置,请参阅 色彩空间。如果应用程序设置了标志 V4L2_PIX_FMT_FLAG_SET_CSC ,则应用程序可以为捕获流设置此字段,以请求捕获图像数据的特定传输函数。如果驱动程序无法处理请求的转换,它将返回另一个受支持的传输函数。驱动程序通过在枚举期间在相应的结构 v4l2_fmtdesc 中设置标志 V4L2_FMT_FLAG_CSC_XFER_FUNC 来指示支持 xfer_func 转换。请参阅 图像格式描述标志。 |