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 字段超出范围。