windows上面通过dshow接口访问uvc摄像头扩展单元,只能访问0x01-0x1F命令问题

最近在给客户做一个修改摄像头数据的工具,在通过dshow接口发送扩展命令的时候发现0x01-0x1F命令都可以发送成功,0x20及以上定义的命令都发送失败,并且返回错误码0x80070490。

谷歌百度查了很久终于在windows官网文档中找到了答案,原来是USB 视频类驱动程序对UVC扩展单元实现有强制要求,部分翻译如下:

”扩展单元上的控件(称为扩展单元控件 Id)必须连续编号为1到一些最大值 n。 如果有空白,则 USB 视频类驱动程序不会公开超出该间隔的控件。 USB 视频类驱动程序的当前实现将扩展单元上的控件数限制为31。“

dshow是通过windows通用视频类驱动控制摄像头的,所以受到这个限制,即最多支持0x01-0x1F命令。大家如果私有命令过多,可以通过多个扩展单元来实现。

另外当时还有疑问为什么bushound可以发送0x20及以上命令,请教了大佬原来bushound是直接转到驱动去发的,没有通过windows视频类驱动。

官网文章链接:https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/device-requirements-for-usb-video-class-extension-units

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老吕丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值