首页 百科知识 相关信息描述

相关信息描述

时间:2022-10-12 百科知识 版权反馈
【摘要】:V4L2驱动是作为系统的核心模块来实现的,可以手工或者在系统里设置后自动的开启。为了解决这个问题,在V4L2中把它们分开了,也就是必须使用不同的次设备号来区分它们。需要注意的是纯粹的打开一个V4L2驱动并不能够授权其互斥访问。V4L2驱动不支持多个应用程序读/写同一设备上同样的数据流,不管是通过拷贝内存的方式还是分时的方式。要实现读取同一数据的问题,最好是在应用程序中的用户空间解决,因为V4L2并没有指定如何解决这种冲突。

5.4.1 相关信息描述

1)设备命名

V4L2驱动是作为系统的核心模块来实现的,可以手工或者在系统里设置后自动的开启。V4L2模块是被插入到“videodev”这一核心模块里面的。V4L2驱动节点的主设备号是81,次设备号可以是0~255。次设备号主要解决同类设备之间可能的冲突。

2)关联设备

设备驱动能支持少数的关联功能。举例来说,视频采集(video capturing)、视频重叠(video overlay)、场逆程捕获(VBI capturing)是相互关联的,因为这些功能通常共享同一视频输入和频率调谐。在早期的V4L中,视频采集和视频重叠采用相同的设备名和次设备号,但与VBI是不同的。经验表明这种方式会存在一些问题,使这种情况更糟糕的是,V4L的videodev模块通常强迫多次打开一个设备文件。为了解决这个问题,在V4L2中把它们分开了,也就是必须使用不同的次设备号来区分它们。

3)多次打开

一般来说,V4L2能够被打开超过一次。在现实程序中也是有这种需求的,举例来说:对于一个视频处理软件来说,我们可以打开一个面板进行亮度或音量调节,而另一程序或者进程正常处理视频和音频。

虽然驱动程序应该被允许多次的打开,但多次打开是可选的。当一个设备已经在使用状态的时候,open()函数会返回一个EBUSY的错误代码。需要注意的是纯粹的打开一个V4L2驱动并不能够授权其互斥访问。如果用户需要对其多次打开的驱动设置优先级则需要使用优先级机制解决这个问题,在此不详细叙述。

4)共享数据流

V4L2驱动不支持多个应用程序读/写同一设备上同样的数据流,不管是通过拷贝内存的方式还是分时的方式。要实现读取同一数据的问题,最好是在应用程序中的用户空间解决,因为V4L2并没有指定如何解决这种冲突。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈