7.14. ioctl VIDIOC_ENUM_FMT¶
7.14.1. 名稱¶
VIDIOC_ENUM_FMT - 列舉影像格式
7.14.2. 概要¶
-
VIDIOC_ENUM_FMT¶
int ioctl(int fd, VIDIOC_ENUM_FMT, struct v4l2_fmtdesc *argp)
7.14.3. 引數¶
fd由
open()返回的檔案描述符。argp指向 struct
v4l2_fmtdesc的指標。
7.14.4. 描述¶
要列舉影像格式,應用程式初始化 struct v4l2_fmtdesc 的 type、mbus_code 和 index 欄位,並呼叫 ioctl VIDIOC_ENUM_FMT ioctl,並將指向此結構的指標傳遞給它。 驅動程式填充結構的其餘部分或返回 EINVAL 錯誤程式碼。 透過從索引零開始並遞增一,直到返回 EINVAL,可以列舉所有格式。 如果適用,驅動程式應按首選項順序返回格式,其中首選格式在不太首選的格式之前返回(即,具有較低的 index 值)。
根據 V4L2_CAP_IO_MC 能力,mbus_code 欄位的處理方式不同
未設定
V4L2_CAP_IO_MC(也稱為“以影片節點為中心”的驅動程式)應用程式應將
mbus_code欄位初始化為零,驅動程式應忽略該欄位的值。驅動程式應列舉所有影像格式。
注意
切換輸入或輸出後,列舉的影像格式列表可能會有所不同。
已設定
V4L2_CAP_IO_MC(也稱為“以 MC 為中心”的驅動程式)如果
mbus_code欄位為零,則應列舉所有影像格式。如果
mbus_code欄位已初始化為有效的(非零)媒體匯流排格式程式碼,則驅動程式應將列舉限制為只能生成(對於影片輸出裝置)或從該媒體匯流排程式碼生成的(對於影片捕獲裝置)影像格式。 如果驅動程式不支援mbus_code,則應返回EINVAL。無論
mbus_code欄位的值如何,列舉的影像格式都不應依賴於影片裝置或裝置管道的活動配置。
-
type v4l2_fmtdesc¶
__u32 |
|
列舉中格式的編號,由應用程式設定。這與 |
__u32 |
|
資料流的型別,由應用程式設定。此處只有這些型別有效: |
__u32 |
|
請參閱 影像格式描述標誌 |
__u8 |
|
格式的描述,以 NUL 結尾的 ASCII 字串。此資訊供使用者使用,例如:“YUV 4:2:2”。 |
__u32 |
|
影像格式識別符號。這是一個四字元程式碼,由 v4l2_fourcc() 宏計算得出 |
|
此規範已在 影像格式 中定義了幾個影像格式。 注意 這些程式碼與 Windows 世界中使用的程式碼不同。 |
||
__u32 |
|
限制列舉格式的媒體匯流排程式碼,由應用程式設定。僅適用於宣告 |
__u32 |
|
保留供將來擴充套件使用。驅動程式必須將陣列設定為零。 |
|
0x0001 |
這是一個壓縮格式。 |
|
0x0002 |
此格式不是裝置原生的,而是透過軟體(通常是 libv4l2)模擬的,如果可能,請嘗試使用本機格式以獲得更好的效能。 |
|
0x0004 |
此壓縮位元組流格式(也稱為編碼格式)的硬體解碼器能夠解析連續的位元組流。 應用程式無需自己解析位元組流來查詢幀/欄位之間的邊界。 此標誌只能與 |
|
0x0008 |
裝置支援此壓縮位元組流格式(也稱為編碼格式)的動態解析度切換。 檢測到影片引數發生更改時,它將透過事件 此標誌只能與 |
|
0x0010 |
硬體編碼器支援將 此標誌只能與 |
|
0x0020 |
驅動程式允許應用程式嘗試更改預設顏色空間。 此標誌僅與捕獲裝置相關。 應用程式可以在呼叫 VIDIOC_S_FMT ioctl 時請求配置捕獲裝置的顏色空間,並設定 V4L2_PIX_FMT_FLAG_SET_CSC。 |
|
0x0040 |
驅動程式允許應用程式嘗試更改預設傳輸函式。 此標誌僅與捕獲裝置相關。 應用程式可以在呼叫 VIDIOC_S_FMT ioctl 時請求配置捕獲裝置的傳輸函式,並設定 V4L2_PIX_FMT_FLAG_SET_CSC。 |
|
0x0080 |
驅動程式允許應用程式嘗試更改預設 Y'CbCr 編碼。 此標誌僅與捕獲裝置相關。 應用程式可以在呼叫 VIDIOC_S_FMT ioctl 時請求配置捕獲裝置的 Y'CbCr 編碼,並設定 V4L2_PIX_FMT_FLAG_SET_CSC。 |
|
0x0080 |
驅動程式允許應用程式嘗試更改預設 HSV 編碼。 此標誌僅與捕獲裝置相關。 應用程式可以在呼叫 VIDIOC_S_FMT ioctl 時請求配置捕獲裝置的 HSV 編碼,並設定 V4L2_PIX_FMT_FLAG_SET_CSC。 |
|
0x0100 |
驅動程式允許應用程式嘗試更改預設量化。 此標誌僅與捕獲裝置相關。 應用程式可以在呼叫 VIDIOC_S_FMT ioctl 時請求配置捕獲裝置的量化,並設定 V4L2_PIX_FMT_FLAG_SET_CSC。 |
|
0x0200 |
元資料格式是基於行的。 在這種情況下, |
|
0x80000000 |
當應用程式將 |
7.14.5. 返回值¶
成功時返回 0,出錯時返回 -1,並適當設定 errno 變數。 泛型錯誤程式碼在 泛型錯誤程式碼 章節中描述。
- EINVAL
不支援 struct
v4l2_fmtdesctype或index超出範圍。如果設定了
V4L2_CAP_IO_MC並且不支援指定的mbus_code,則也返回此錯誤程式碼。