7.13. ioctl VIDIOC_ENUM_DV_TIMINGS, VIDIOC_SUBDEV_ENUM_DV_TIMINGS

7.13.1. 名稱

VIDIOC_ENUM_DV_TIMINGS - VIDIOC_SUBDEV_ENUM_DV_TIMINGS - 列舉支援的數字影片時序

7.13.2. 概要

VIDIOC_ENUM_DV_TIMINGS

int ioctl(int fd, VIDIOC_ENUM_DV_TIMINGS, struct v4l2_enum_dv_timings *argp)

VIDIOC_SUBDEV_ENUM_DV_TIMINGS

int ioctl(int fd, VIDIOC_SUBDEV_ENUM_DV_TIMINGS, struct v4l2_enum_dv_timings *argp)

7.13.3. 引數

fd

open()返回的檔案描述符。

argp

指向結構體v4l2_enum_dv_timings的指標。

7.13.4. 描述

雖然一些DV接收器或發射器支援範圍廣泛的時序,但其他一些只支援有限數量的時序。透過此ioctl,應用程式可以列舉已知支援的時序列表。呼叫ioctl VIDIOC_DV_TIMINGS_CAP, VIDIOC_SUBDEV_DV_TIMINGS_CAP來檢查它是否也支援其他標準,甚至是不在此列表中的自定義時序。

要查詢可用的時序,應用程式初始化index欄位,將pad欄位設定為0,將結構體v4l2_enum_dv_timings的保留陣列置零,然後在影片節點上呼叫VIDIOC_ENUM_DV_TIMINGS ioctl,並將指向此結構的指標作為引數。當索引超出範圍時,驅動程式將填充結構的其餘部分,或返回EINVAL錯誤程式碼。要列舉所有支援的DV時序,應用程式應從索引零開始,每次遞增1,直到驅動程式返回EINVAL

注意

在切換影片輸入或輸出後,驅動程式可能會列舉一組不同的DV時序。

如果驅動程式實現了子裝置的DV時序,則可以透過直接在子裝置節點上呼叫VIDIOC_SUBDEV_ENUM_DV_TIMINGSioctl來查詢。DV時序特定於輸入(對於DV接收器)或輸出(對於DV發射器),應用程式必須在結構體v4l2_enum_dv_timingspad欄位中指定所需的pad編號。嘗試列舉不支援時序的pad將返回EINVAL錯誤程式碼。

type v4l2_enum_dv_timings
結構體 v4l2_enum_dv_timings

__u32

index

DV時序的編號,由應用程式設定。

__u32

pad

媒體控制器API報告的Pad編號。僅在對子裝置節點進行操作時使用此欄位。在對影片節點進行操作時,應用程式必須將此欄位設定為零。

__u32

reserved[2]

保留用於未來擴充套件。驅動程式和應用程式必須將陣列設定為零。

struct v4l2_dv_timings

timings

時序。

7.13.5. 返回值

成功時返回0,出錯時返回-1,並適當設定errno變數。通用錯誤程式碼在通用錯誤程式碼章節中描述。

EINVAL

結構體v4l2_enum_dv_timingsindex超出範圍或pad編號無效。

ENODATA

此輸入或輸出不支援數字影片預設。