windows上面通过dshow接口访问uvc摄像头扩展单元,只能访问0x01-0x1F命令问题
2021-08-25
1304
16
最近在给客户做一个修改摄像头数据的工具,在通过dshow接口发送扩展命令的时候发现0x01-0x1F命令都可以发送成功,0x20及以上定义的命令都发送失败,并且返回错误码0x80070490。
谷歌百度查了很久终于在windows官网文档中找到了答案,原来是USB 视频类驱动程序对UVC扩展单元实现有强制要求,部分翻译如下:
”扩展单元上的控件(称为扩展单元控件 Id)必须连续编号为1到一些最大值 n。 如果有空白,则 USB 视频类驱动程序不会公开超出该间隔的控件。 USB 视频类驱动程序的当前实现将扩展单元上的控件数限制为31。“
dshow是通过windows通用视频类驱动控制摄像头的,所以受到这个限制,即最多支持0x01-0x1F命令。大家如果私有命令过多,可以通过多个扩展单元来实现。
另外当时还有疑问为什么bushound可以发送0x20及以上命令,请教了大佬原来bushound是直接转到驱动去发的,没有通过windows视频类驱动。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936