1.3. 应用程序优先级

当多个应用程序共享一个设备时,可能需要为它们分配不同的优先级。与传统的“rm -rf /”思维方式相反,例如,一个视频录制应用程序可以阻止其他应用程序更改视频控制或切换当前电视频道。另一个目标是允许低优先级应用程序在后台工作,它们可以被用户控制的应用程序抢占,并在稍后自动重新获得设备的控制权。

由于这些功能无法完全在用户空间中实现,V4L2 定义了 VIDIOC_G_PRIORITYVIDIOC_S_PRIORITY ioctl,用于请求和查询与文件描述符相关的访问优先级。打开设备会分配一个中等优先级,与早期版本的 V4L2 和不支持这些 ioctl 的驱动程序兼容。需要不同优先级的应用程序通常会在使用 ioctl VIDIOC_QUERYCAP ioctl 验证设备后调用 VIDIOC_S_PRIORITY

在另一个应用程序获得更高优先级后,更改驱动程序属性的 ioctl(例如 VIDIOC_S_INPUT)将返回 EBUSY 错误码。