7.56. ioctl VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL¶
7.56.1. 名稱¶
VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL - 列舉幀間隔
7.56.2. 概要¶
-
VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL¶
int ioctl(int fd, VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL, struct v4l2_subdev_frame_interval_enum * argp)
7.56.3. 引數¶
fd由
open()返回的檔案描述符。argp指向 struct
v4l2_subdev_frame_interval_enum的指標。
7.56.4. 描述¶
該 ioctl 允許應用程式列舉給定子裝置 pad 上的可用幀間隔。幀間隔僅對可以自行控制幀週期的子裝置才有意義。這包括例如影像感測器和電視調諧器。
對於影像感測器的常見用例,子裝置輸出 pad 上可用的幀間隔取決於同一 pad 上的幀格式和大小。因此,應用程式必須在列舉幀間隔時指定所需的格式和大小。
為了列舉幀間隔,應用程式初始化 struct v4l2_subdev_frame_interval_enum 的 index、pad、which、code、width 和 height 欄位,並使用指向此結構的指標呼叫 ioctl VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL ioctl。 驅動程式填充結構的其餘部分,或者如果其中一個輸入欄位無效,則返回 EINVAL 錯誤程式碼。 透過從索引零開始並遞增一,直到返回 EINVAL 為止,可以列舉所有幀間隔。
可用的幀間隔可能取決於子裝置其他 pad 上當前的 ‘try’ 格式,以及當前活動的連結。 有關 try 格式的更多資訊,請參見 ioctl VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT。
支援幀間隔列舉 ioctl 的子裝置應僅在單個 pad 上實現它。 不定義在同一子裝置的多個 pad 上支援它時的行為。
-
type v4l2_subdev_frame_interval_enum¶
__u32 |
|
列舉中格式的編號,由應用程式設定。 |
__u32 |
|
由媒體控制器 API 報告的 Pad 編號。 |
__u32 |
|
媒體匯流排格式程式碼,如 媒體匯流排格式 中定義。 |
__u32 |
|
幀寬度,以畫素為單位。 |
__u32 |
|
幀高度,以畫素為單位。 |
struct |
|
連續影片幀之間的週期,以秒為單位。 |
__u32 |
|
要列舉的幀間隔,來自 enum v4l2_subdev_format_whence。 |
__u32 |
|
流識別符號。 |
__u32 |
|
為將來的擴充套件保留。 應用程式和驅動程式必須將陣列設定為零。 |
7.56.5. 返回值¶
成功時返回 0,出錯時返回 -1,並適當地設定 errno 變數。 通用錯誤程式碼在 通用錯誤程式碼 章節中描述。
- EINVAL
struct
v4l2_subdev_frame_interval_enumpad引用了不存在的 pad,which欄位具有不受支援的值,code、width或height欄位之一對於給定的 pad 無效,或者index欄位超出範圍。