7.16. ioctl VIDIOC_ENUM_FRAMEINTERVALS¶
7.16.1. 名称¶
VIDIOC_ENUM_FRAMEINTERVALS - 枚举帧间隔
7.16.2. 概要¶
-
VIDIOC_ENUM_FRAMEINTERVALS¶
int ioctl(int fd, VIDIOC_ENUM_FRAMEINTERVALS, struct v4l2_frmivalenum *argp)
7.16.3. 参数¶
fd
由
open()
返回的文件描述符。argp
指向 struct
v4l2_frmivalenum
的指针,该结构体包含像素格式和大小,并接收帧间隔。
7.16.4. 描述¶
此 ioctl 允许应用程序枚举设备支持的给定像素格式和帧大小的所有帧间隔。
支持的像素格式和帧大小可以通过使用 ioctl VIDIOC_ENUM_FMT 和 ioctl VIDIOC_ENUM_FRAMESIZES 函数来获得。
返回值和 v4l2_frmivalenum.type
字段的内容取决于设备支持的帧间隔类型。以下是针对不同情况的函数语义
离散: 如果给定的索引值(从零开始)有效,则函数返回成功。 应用程序应该为每次调用将索引加一,直到返回
EINVAL
。 v4l2_frmivalenum.type 字段由驱动程序设置为 V4L2_FRMIVAL_TYPE_DISCRETE。 在 union 中,只有 discrete 成员有效。步进: 如果给定的索引值为零,则函数返回成功;对于任何其他索引值,则返回
EINVAL
。v4l2_frmivalenum.type
字段由驱动程序设置为V4L2_FRMIVAL_TYPE_STEPWISE
。 在 union 中,只有stepwise
成员有效。连续: 这是上述步进类型的一种特殊情况。 如果给定的索引值为零,则函数返回成功;对于任何其他索引值,则返回
EINVAL
。v4l2_frmivalenum.type
字段由驱动程序设置为V4L2_FRMIVAL_TYPE_CONTINUOUS
。 在 union 中,只有stepwise
成员有效,并且step
值设置为 1。
当应用程序使用索引零调用函数时,它必须检查 type
字段以确定设备支持的帧间隔枚举类型。 仅对于 V4L2_FRMIVAL_TYPE_DISCRETE
类型,增加索引值以接收更多帧间隔才有意义。
注意
返回帧间隔的顺序没有特殊含义。 特别是,它没有说明任何潜在的默认帧间隔。
应用程序可以假设枚举数据在没有任何应用程序本身交互的情况下不会更改。 这意味着如果在运行帧间隔枚举时应用程序不执行任何其他 ioctl 调用,则枚举数据是一致的。
注意
帧间隔和帧率: V4L2 API 使用帧间隔而不是帧率。 给定帧间隔,可以按如下方式计算帧率
frame_rate = 1 / frame_interval
7.16.5. 结构体¶
在下面的结构体中,IN 表示必须由应用程序填充的值,OUT 表示驱动程序填充的值。 应用程序应将所有成员清零,除了 IN 字段。
-
类型 v4l2_frmival_stepwise¶
结构体 |
|
最小帧间隔 [s]。 |
结构体 |
|
最大帧间隔 [s]。 |
结构体 |
|
帧间隔步长 [s]。 |
-
类型 v4l2_frmivalenum¶
__u32 |
|
IN:枚举中给定帧间隔的索引。 |
__u32 |
|
IN:枚举帧间隔的像素格式。 |
__u32 |
|
IN:枚举帧间隔的帧宽度。 |
__u32 |
|
IN:枚举帧间隔的帧高度。 |
__u32 |
|
OUT:设备支持的帧间隔类型。 |
union { |
(anonymous) |
OUT:具有给定索引的帧间隔。 |
结构体 |
|
帧间隔 [s]。 |
|
||
} |
||
__u32 |
|
为将来使用保留的空间。 驱动程序和应用程序必须将其清零。 |
7.16.6. 枚举¶
-
类型 v4l2_frmivaltypes¶
|
1 |
离散帧间隔。 |
|
2 |
连续帧间隔。 |
|
3 |
步进定义的帧间隔。 |
7.16.7. 返回值¶
成功时返回 0,出错时返回 -1,并适当设置 errno
变量。 通用错误代码在 通用错误代码 章节中描述。