7.37. ioctl VIDIOC_G_PARM, VIDIOC_S_PARM¶
7.37.1. 名称¶
VIDIOC_G_PARM - VIDIOC_S_PARM - 获取或设置流参数
7.37.2. 概要¶
-
VIDIOC_G_PARM¶
int ioctl(int fd, VIDIOC_G_PARM, v4l2_streamparm *argp)
-
VIDIOC_S_PARM¶
int ioctl(int fd, VIDIOC_S_PARM, v4l2_streamparm *argp)
7.37.3. 参数¶
fd
由
open()
返回的文件描述符。argp
指向结构体
v4l2_streamparm
的指针。
7.37.4. 描述¶
应用程序可以请求不同的帧间隔。如果可能,捕获或输出设备将被重新配置以支持请求的帧间隔。可选地,驱动程序可以选择跳过或重复帧以实现请求的帧间隔。
对于有状态编码器(参见 内存到内存的有状态视频编码器接口),这表示通常嵌入在编码视频流中的帧间隔。
更改帧间隔永远不应更改格式。另一方面,更改格式可能会更改帧间隔。
此外,这些ioctl可用于确定驱动程序在读取/写入模式下内部使用的缓冲区数量。有关影响,请参阅讨论 read()
函数的部分。
要获取和设置流参数,应用程序分别调用 VIDIOC_G_PARM 和 VIDIOC_S_PARM ioctl。它们采用指向结构体 v4l2_streamparm
的指针,该结构体包含一个联合,其中包含输入和输出设备的单独参数。
-
类型 v4l2_streamparm¶
__u32 |
|
缓冲区(流)类型,与结构体 |
union { |
|
|
struct |
|
捕获设备的参数,当 |
struct |
|
输出设备的参数,当 |
__u8 |
|
用于未来扩展的占位符。 |
} |
-
类型 v4l2_captureparm¶
__u32 |
|
请参阅 流参数能力。 |
__u32 |
|
由驱动程序和应用程序设置,请参阅 捕获参数标志。 |
struct |
|
这是驱动程序捕获的连续帧之间的期望周期,以秒为单位。 |
这将配置视频源(例如传感器)生成视频帧的速度。如果速度是固定的,则驱动程序可以选择跳过或重复帧以实现请求的帧率。 对于有状态编码器(参见 内存到内存的有状态视频编码器接口),这表示通常嵌入在编码视频流中的帧间隔。 应用程序在此处存储期望的帧周期,驱动程序返回实际的帧周期。 更改视频标准(也隐式地通过切换视频输入)可能会将此参数重置为标称帧周期。要手动重置,应用程序只需将此字段设置为零。 仅当驱动程序在 |
||
__u32 |
|
自定义(驱动程序特定的)流参数。当不使用时,应用程序和驱动程序必须将此字段设置为零。使用此字段的应用程序应检查驱动程序名称和版本,请参阅 查询能力。 |
__u32 |
|
应用程序将此字段设置为驱动程序在 |
__u32 |
|
为未来扩展保留。驱动程序和应用程序必须将数组设置为零。 |
-
类型 v4l2_outputparm¶
__u32 |
|
请参阅 流参数能力。 |
__u32 |
|
由驱动程序和应用程序设置,请参阅 捕获参数标志。 |
struct |
|
这是驱动程序输出的连续帧之间的期望周期,以秒为单位。 |
该字段旨在在 对于有状态编码器(参见 内存到内存的有状态视频编码器接口),这表示通常嵌入在编码视频流中的帧间隔,并且它为编码器提供了一个提示,表明原始帧以多快的速度排队到编码器。 应用程序在此处存储期望的帧周期,驱动程序返回实际的帧周期。 更改视频标准(也隐式地通过切换视频输出)可能会将此参数重置为标称帧周期。要手动重置,应用程序只需将此字段设置为零。 仅当驱动程序在 |
||
__u32 |
|
自定义(驱动程序特定的)流参数。当不使用时,应用程序和驱动程序必须将此字段设置为零。使用此字段的应用程序应检查驱动程序名称和版本,请参阅 查询能力。 |
__u32 |
|
应用程序将此字段设置为驱动程序在 |
__u32 |
|
为未来扩展保留。驱动程序和应用程序必须将数组设置为零。 |
|
0x1000 |
可以通过设置 |
|
0x0001 |
高质量成像模式。高质量模式适用于静态成像应用程序。其目的是获得硬件可以提供的最佳图像质量。未定义驱动程序编写者如何实现该目的;这将取决于硬件和驱动程序编写者的聪明才智。高质量模式与常规的运动视频捕获模式不同。在高质量模式下
|
7.37.5. 返回值¶
成功时返回 0,出错时返回 -1,并相应地设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。