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
指向 struct
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”)。bus_info 必须以 “PCI:” 开头表示 PCI 板,“PCIe:” 表示 PCI Express 板,“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 |
该设备具有某种调谐器来接收 RF 调制视频信号。有关调谐器编程的更多信息,请参见 调谐器和调制器。 |
|
0x00020000 |
该设备具有音频输入或输出。它可以或可能不支持以 PCM 或压缩格式进行音频录制或播放。PCM 音频支持必须作为 ALSA 或 OSS 接口实现。有关音频输入和输出的更多信息,请参见 音频输入和输出。 |
|
0x00040000 |
这是一个无线电接收器。 |
|
0x00080000 |
该设备具有某种调制器来发射 RF 调制视频/音频信号。有关调制器编程的更多信息,请参见 调谐器和调制器。 |
|
0x00100000 |
该设备支持 SDR 捕获 接口。 |
|
0x00200000 |
该设备支持 struct |
|
0x00400000 |
该设备支持 SDR 输出 接口。 |
|
0x00800000 |
该设备支持 元数据接口 捕获接口。 |
|
0x01000000 |
|
|
0x02000000 |
该设备存储视频输入的 EDID,或检索视频输出的 EDID。它是一个独立的 EDID 设备,因此不会进行视频流传输等。 对于视频输入,这通常是一个 eeprom,它支持 VESA 增强型显示数据通道标准。它也可以是其他东西,例如微控制器。 对于视频输出,这通常是从外部设备读取的,例如通过串口访问的 HDMI 分配器。 |
|
0x04000000 |
该设备支持 流式传输 I/O 方法。 |
|
0x08000000 |
该设备支持 元数据接口 输出接口。 |
|
0x10000000 |
这是一个触摸设备。 |
|
0x20000000 |
从用户空间只能看到一个输入和/或输出。包括哪个 I/O 实体路由到输入/输出在内的整个视频拓扑配置由用户空间通过媒体控制器配置。请参见 第四部分 - 媒体控制器 API。 |
|
0x80000000 |
驱动程序填充 |
7.48.5. 返回值¶
成功时返回 0,错误时返回 -1,并适当设置 errno
变量。通用错误代码在 通用错误代码 章节中进行了描述。