2.2. 多平面格式结构

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

类型 v4l2_plane_pix_format
struct v4l2_plane_pix_format

__u32

sizeimage

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

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

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

__u32

bytesperline

两个相邻行中最左侧像素之间的字节距离。请参见结构体 v4l2_pix_format

__u16

reserved[6]

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

类型 v4l2_pix_format_mplane
struct v4l2_pix_format_mplane

__u32

width

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

__u32

height

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

__u32

pixelformat

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

__u32

field

场序,来自枚举 v4l2_field。请参见结构体 v4l2_pix_format

__u32

colorspace

颜色空间编码,来自枚举 v4l2_colorspace。请参见结构体 v4l2_pix_format

struct v4l2_plane_pix_format

plane_fmt[VIDEO_MAX_PLANES]

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

__u8

num_planes

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

__u8

flags

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

union {

(匿名)

__u8

ycbcr_enc

Y'CbCr 编码,来自枚举 v4l2_ycbcr_encoding。请参见结构体 v4l2_pix_format

__u8

hsv_enc

HSV 编码,来自枚举 v4l2_hsv_encoding。请参见结构体 v4l2_pix_format

}

__u8

quantization

量化范围,来自枚举 v4l2_quantization。请参见结构体 v4l2_pix_format

__u8

xfer_func

传递函数,来自枚举 v4l2_xfer_func。请参见结构体 v4l2_pix_format

__u8

reserved[7]

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