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]

保留供將來擴充套件。應由驅動程式和應用程式清零。