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 错误代码。