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。