1.2. 查询功能

由于 V4L2 涵盖了各种各样的设备,并非 API 的所有方面都同样适用于所有类型的设备。此外,相同类型的设备具有不同的功能,并且此规范允许省略一些复杂且不太重要的 API 部分。

ioctl VIDIOC_QUERYCAP ioctl 可用于检查内核设备是否与此规范兼容,并查询设备支持的功能I/O 方法

从内核版本 3.1 开始,ioctl VIDIOC_QUERYCAP 将返回驱动程序使用的 V4L2 API 版本,该版本通常与内核版本匹配。无需使用 ioctl VIDIOC_QUERYCAP 来检查是否支持特定的 ioctl,如果驱动程序不支持某个 ioctl,则 V4L2 核心现在会返回 ENOTTY

可以通过调用各自的 ioctl 来查询其他功能,例如 ioctl VIDIOC_ENUMINPUT 以了解设备上视频连接器的数量、类型和名称。尽管抽象是此 API 的主要目标,但 ioctl VIDIOC_QUERYCAP ioctl 还允许特定于驱动程序的应用程序可靠地识别驱动程序。

所有 V4L2 驱动程序都必须支持 ioctl VIDIOC_QUERYCAP。应用程序在打开设备后应始终调用此 ioctl。