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_enumindexpadwhichcodewidthheight 欄位,並使用指向此結構的指標呼叫 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
struct v4l2_subdev_frame_interval_enum

__u32

index

列舉中格式的編號,由應用程式設定。

__u32

pad

由媒體控制器 API 報告的 Pad 編號。

__u32

code

媒體匯流排格式程式碼,如 媒體匯流排格式 中定義。

__u32

width

幀寬度,以畫素為單位。

__u32

height

幀高度,以畫素為單位。

struct v4l2_fract

interval

連續影片幀之間的週期,以秒為單位。

__u32

which

要列舉的幀間隔,來自 enum v4l2_subdev_format_whence

__u32

stream

流識別符號。

__u32

reserved[7]

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

7.56.5. 返回值

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

EINVAL

struct v4l2_subdev_frame_interval_enum pad 引用了不存在的 pad,which 欄位具有不受支援的值,codewidthheight 欄位之一對於給定的 pad 無效,或者 index 欄位超出範圍。