在ubuntu18.04/ubuntu16.04系统上,插入UVC设备,你会发现V4L2框架替它创建了两个video设备节点,分别是 /dev/video0, /dev/video1:
经过实际测试,可以通过/dev/video0获取图像,但是无法通过/dev/video1获取图像,具体的试验请看下面两篇博客:
下面来分析一下Linux代码,说明/dev/video1节点的来历
首先,根据上面两篇博客,我们知道/dev/video1是通过uvc_meta_register这个函数调用路径注册的:
但是在linux-4.9内核里,是没有uvc_meta_register这个函数的
但是在最新的内核上,uvc_register_terms函数中增加了对uvc_meta_register函数的调用:
那么是什么时候增加的呢?根据git blame uvc_driver.c得到的信息,发现了这行代码的添加记录
展开来看一下:
git show 088ead2552458
可以看到,这个改动是发生在2017年,但具体是哪个版本呢?
我们git describe 088ead2552458看一下
git describe 088ead2552458
git describe输出显示,这个修改发生在v4.15-rc6后的第397次提交,g为git的缩写,088ead255245为此commit id. 所以,我们看到这个改动是在v4.15-rc6的基础上修改的,也就是说,V4.15之后的内核,连接UVC设备才创建两