7.48. ioctl VIDIOC_QUERYCAP¶
7.48.1. 名称¶
VIDIOC_QUERYCAP - 查询设备能力
7.48.2. 概要¶
-
VIDIOC_QUERYCAP¶
int ioctl(int fd, VIDIOC_QUERYCAP, struct v4l2_capability *argp)
7.48.3. 参数¶
fd
open()
返回的文件描述符。argp
指向
v4l2_capability
结构的指针。
7.48.4. 描述¶
所有 V4L2 设备都支持 VIDIOC_QUERYCAP
ioctl。它用于识别与此规范兼容的内核设备,并获取有关驱动程序和硬件能力的信息。ioctl 接受一个指向 struct v4l2_capability
的指针,该结构由驱动程序填充。当驱动程序与此规范不兼容时,ioctl 返回 EINVAL
错误代码。
-
type v4l2_capability¶
__u8 |
|
驱动程序的名称,一个唯一的以 NUL 结尾的 ASCII 字符串。例如:“bttv”。驱动程序特定的应用程序可以使用此信息来验证驱动程序的身份。它也用于解决已知的错误,或在错误报告中识别驱动程序。 将字符串存储在固定大小的数组中是不好的做法,但在这里是不可避免的。驱动程序和应用程序应采取预防措施,永远不要读取或写入数组的末尾之外,并确保字符串正确地以 NUL 结尾。 |
__u8 |
|
设备的名称,一个以 NUL 结尾的 UTF-8 字符串。例如:“Yoyodyne TV/FM”。一个驱动程序可能支持不同品牌或型号的视频硬件。此信息供用户使用,例如在可用设备的菜单中。由于可能会安装由同一驱动程序支持的同一品牌的多个电视卡,因此应将此名称与字符设备文件名(例如 |
__u8 |
|
设备在系统中的位置,一个以 NUL 结尾的 ASCII 字符串。例如:“PCI:0000:05:06.0”。此信息供用户使用,以区分多个相同的设备。如果不存在此类信息,则该字段必须简单地计算驱动程序控制的设备数量(“platform:vivid-000”)。对于 PCI 板,bus_info 必须以 “PCI:” 开头,对于 PCI Express 板,以 “PCIe:” 开头,对于 USB 设备,以 “usb-” 开头,对于 i2c 设备,以 “I2C:” 开头,对于 ISA 设备,以 “ISA:” 开头,对于并行端口设备,以 “parport” 开头,对于平台设备,以 “platform:” 开头。 |
__u32 |
|
驱动程序的版本号。 从内核 3.1 开始,报告的版本由 V4L2 子系统按照内核编号方案提供。但是,如果稳定版或发行版修改的内核使用来自较新内核的 V4L2 堆栈,则它可能并不总是返回与内核相同的版本。 版本号使用 |
|
||
__u32 |
|
物理设备的可用能力,请参阅 设备能力标志。同一个物理设备可以在 /dev 中导出多个设备(例如,/dev/videoX、/dev/vbiY 和 /dev/radioZ)。 |
__u32 |
|
已打开设备的设备能力,请参阅 设备能力标志。应包含该特定设备节点的可用能力。因此,例如,无线电设备的 |
__u32 |
|
保留供将来扩展使用。驱动程序必须将此数组设置为零。 |
|
0x00000001 |
设备通过 视频捕获 接口支持单平面 API。 |
|
0x00001000 |
|
|
0x00000002 |
设备通过 视频输出 接口支持单平面 API。 |
|
0x00002000 |
|
|
0x00008000 |
设备通过视频内存到内存接口支持单平面 API。 |
|
0x00004000 |
设备通过视频内存到内存接口支持 多平面 API。 |
|
0x00000004 |
设备支持 视频叠加 接口。视频叠加设备通常将捕获的图像直接存储在图形卡的视频内存中,并进行硬件裁剪和缩放。 |
|
0x00000010 |
设备支持 原始 VBI 捕获 接口,提供图文电视和隐藏字幕数据。 |
|
0x00000020 |
设备支持 原始 VBI 输出 接口。 |
|
0x00000040 |
设备支持 切片 VBI 捕获 接口。 |
|
0x00000080 |
设备支持 切片 VBI 输出 接口。 |
|
0x00000100 |
设备支持 RDS 捕获接口。 |
|
0x00000200 |
设备支持 视频输出叠加 (OSD) 接口。与 *视频叠加* 接口不同,这是视频输出设备的辅助功能,并将图像叠加到传出的视频信号上。当驱动程序设置此标志时,它必须清除 |
|
0x00000400 |
设备支持 ioctl VIDIOC_S_HW_FREQ_SEEK ioctl 以进行硬件频率搜索。 |
|
0x00000800 |
该设备支持 RDS 输出接口。 |
|
0x00010000 |
该设备具有某种调谐器,用于接收射频调制的视频信号。有关调谐器编程的更多信息,请参阅 调谐器和调制器。 |
|
0x00020000 |
该设备具有音频输入或输出。它可能支持也可能不支持以 PCM 或压缩格式进行音频录制或播放。 PCM 音频支持必须实现为 ALSA 或 OSS 接口。有关音频输入和输出的更多信息,请参阅 音频输入和输出。 |
|
0x00040000 |
这是一个无线电接收器。 |
|
0x00080000 |
该设备具有某种调制器,用于发射射频调制的视频/音频信号。有关调制器编程的更多信息,请参阅 调谐器和调制器。 |
|
0x00100000 |
该设备支持 SDR 捕获 接口。 |
|
0x00200000 |
该设备支持结构体 |
|
0x00400000 |
该设备支持 SDR 输出 接口。 |
|
0x00800000 |
该设备支持 元数据接口 捕获接口。 |
|
0x01000000 |
|
|
0x02000000 |
该设备存储视频输入的 EDID,或检索视频输出的 EDID。 它是一个独立的 EDID 设备,因此不会发生视频流等操作。 对于视频输入,这通常是一个支持 VESA 增强显示数据通道标准 的 eeprom。它也可以是其他东西,例如微控制器。 对于视频输出,这通常是从外部设备(例如通过串行端口访问的 HDMI 分路器)读取的。 |
|
0x04000000 |
该设备支持 流式传输 I/O 方法。 |
|
0x08000000 |
该设备支持 元数据接口 输出接口。 |
|
0x10000000 |
这是一个触摸设备。 |
|
0x20000000 |
从用户空间来看,只有一个输入和/或输出。包括哪个 I/O 实体路由到输入/输出的整个视频拓扑配置由用户空间通过媒体控制器配置。请参阅 第四部分 - 媒体控制器 API。 |
|
0x80000000 |
驱动程序填充 |
7.48.5. 返回值¶
成功时返回 0,失败时返回 -1,并且会适当设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。