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