2.2. 多平面格式结构

struct v4l2_plane_pix_format 结构定义了多平面格式中每个平面的大小和布局。struct v4l2_pix_format_mplane 结构包含所有平面共有的信息(例如图像宽度和高度)以及一个 struct v4l2_plane_pix_format 结构的数组,用于描述该格式的所有平面。

类型 v4l2_plane_pix_format
struct v4l2_plane_pix_format

__u32

sizeimage

此平面中图像数据所需的最大字节大小,由驱动程序设置。当图像由可变长度压缩数据组成时,这是编解码器支持最坏情况压缩场景所需的字节数。

驱动程序将为未压缩图像设置该值。

客户端可以为使用 V4L2_FMT_FLAG_COMPRESSED 标记的可变长度压缩数据设置 sizeimage 字段,位于 ioctl VIDIOC_ENUM_FMT,但驱动程序可以忽略它并自行设置该值,或者它可以根据对齐要求或最小/最大大小要求修改提供的值。如果客户端希望将其留给驱动程序,则应将 sizeimage 设置为 0。

__u32

bytesperline

两个相邻行中最左侧像素之间的距离(以字节为单位)。请参见 struct v4l2_pix_format

__u16

reserved[6]

保留供将来扩展。应由驱动程序和应用程序清零。

类型 v4l2_pix_format_mplane
struct v4l2_pix_format_mplane

__u32

width

图像宽度(以像素为单位)。请参见 struct v4l2_pix_format

__u32

height

图像高度(以像素为单位)。请参见 struct v4l2_pix_format

__u32

pixelformat

像素格式。可以使用单平面和多平面四字符代码。

__u32

field

场序,来自 enum v4l2_field。请参见 struct v4l2_pix_format

__u32

colorspace

色彩空间编码,来自 enum v4l2_colorspace。请参见 struct v4l2_pix_format

struct v4l2_plane_pix_format

plane_fmt[VIDEO_MAX_PLANES]

一个结构数组,用于描述此像素格式的每个平面的格式。此数组中有效条目的数量必须放入 num_planes 字段中。

__u8

num_planes

此格式的平面数(即单独的内存缓冲区)和 plane_fmt 数组中有效条目的数量。

__u8

flags

由应用程序或驱动程序设置的标志,请参见格式标志

union {

(anonymous)

__u8

ycbcr_enc

Y'CbCr 编码,来自 enum v4l2_ycbcr_encoding。请参见 struct v4l2_pix_format

__u8

hsv_enc

HSV 编码,来自 enum v4l2_hsv_encoding。请参见 struct v4l2_pix_format

}

__u8

quantization

量化范围,来自 enum v4l2_quantization。请参见 struct v4l2_pix_format

__u8

xfer_func

传输函数,来自 enum v4l2_xfer_func。请参见 struct v4l2_pix_format

__u8

reserved[7]

保留供将来扩展。应由驱动程序和应用程序清零。