这两天又翻了翻资料,个人感觉驱动的可能性最大。摄像头插上后终端会提示信息“UVC”,而我去UVC的网站看到的列表里并没有0c45:62f0这个编号,可能要自己稍微改下内核的驱动源代码。
至于S_FMT的问题,究其根源似乎是由于上述驱动支持问题,导致设备不能使用YUYV模式。我尝试用ENUM_FMT,结果返回的结果是"MJPG"而不是"YUYV",也就是说0c45:62f0这个ID的设备在ARM-Linux中被认为不能工作在"YUYV"模式下。所以在S_FMT中使用"YUYV"会报错。而改用"MJPG"后就可以S_FMT了。不过取回的数据格式我并不了解,所以不会处理。Google了一下MJPG,似乎没有比较直接的信息,可能要查点手册了。
不过就PC上的情况看,有点纠结。因为PC上ENUM_FMT后的结果是"YUYV",所以这让我感觉是驱动的问题。也许应该把内核的UVC支持关掉,下载并修改最新的UVC源代码,然后以module的方式编译下载到ARM上启动时加载,这个也许可行。
不过目前这还只是设想,不知道能起作用不。