yealink学习笔记20200422UVC协议、usb摄像头抓包

UVC协议学习以及UVC摄像头抓包对比UVC协议数据帧

通过BUS Hound抓包得到数据文件如下

先看第一行,CTL意为“USB control transfer”,即控制传输,熟悉USB通信的朋友应该都知道USB有四种数据传输方式,其中“控制传输”为仅有的双向传输方式,USB枚举过程中就是用的控制传输方式与USB从机的端点0进行通信的,Device那一列“19.0”,表示通信端点为UVC设备的端点0。

UVC摄像头插入PC后,PC向其端点0发送了8个Byte的数据:80 06 00 01  00 00 12 00,第四字节“01”与第七字节“12”代表PC请求UVC设备发送“设备描述符至主机,设备描述符长度为18Byte”。

再看第二行,“IN”表示数据传输方向为输入,即PC接收UVC摄像头返回的18Byte数据:12 01 00 02  ef 02 01 40  93 69 14 b0  01 00 01 02  00 01,关于这18Byte的定义,UVC官方文档给出了很详细的解释,如下图所示,其中PC就是通过画红圈的那三个字节数据知道该设备为UVC设备的。接下来我们关注第三第四字节即“bcdUSB”,由于USB传输是低字节先传输,故我们知道我们采用的为USB2.0协议。

接下来继续往下看

PC收到UVC摄像头返回的18Byte配置描述符后,紧接着又发出了第二条控制命令:

80 06 00 02  00 00 09 00,第四字节“02”与第七字节“09”表示“请求UVC发送自己的配置描述符至PC,数据长度9Byte”。

随后UVC摄像头返回了9Byte数据至PC:09 02 8c 01  02 01 00 80  fa,关于配置描述符的详细信息,UVC官方文档给出了如下描述。

其中,我们暂时先关注下第3、4字节,即“wTotalLength”参数,由于USB传输是低字节先传输,故我们知道,该配置描述符以及其下所有的接口描述符和端点描述符的总字节长度为0x18c字节。

紧接着,PC开始向UVC摄像头端点0发送第三次控制命令啦:80 06 00 02  00 00 8c 01,第7、8字节是不是很眼熟啊?没错,第4字节还是“02”,PC这次还是发送的读取UVC设备“配置描述符”命令,但是这次读取的字节长度是“0x18c”字节,那这次就是将“接口描述符”和“端点描述符”全都读出来啦!数据量比较大,如下图所示。

接下来我们就要对“接口描述符”和“端点描述符”进行分析了

接下来就要使用UVCview软件了打开软件,抓取摄像头插入时的数据包如下所示

软件已经帮我们把描述符进行解析了

首先我们要先看IAD描述符IAD是“Interface Association Descriptor”的简写,译为“接口联合描述符”,一个配置描述符是接口描述符的集合,在UVC中,IAD描述符就是描述一个视频接口集合的,对于每一个设备功能需要一个视频控制接口(VideoControl Interface)和一个或者多个视频流接口(VideoStreaming Interface)。如下图所示

对比文档“bInterfaceCount”参数为0x02,可知该配置下有两个视频接口—“VC和VS”。

接下来我们就要细致的看每个“接口描述符“了

首先来看第一个如下图所示

 

此描述符为VC端口描述符,可知VC的接口为0x0E,VS的接口为0x01

这个描述符描述了VC输出到主机的USB的通道终端

 

这个描述符描述了代表CCD传感器(以及相关的A/D转换器)的输入终端,产生的数字视频流通过单个的输出引脚离开输入端。该设备还支持“Auto-Exposure“自动曝光、”Exposure Time“曝光时间、”Zoom“变焦、”Pan“平移功能

该描述符描述处理单元,该处理单元由选择单元传递的视频流数据。此实现支持“Brightness“亮度、”Contrast“对比度、”Saturation“饱和度、”Sharpness“锐度、”White Balance Temperature“白平衡、”Backlight Compensation“背光补偿、”Gain“增益、”Power Line Frequency“频率、”White Balance Temperature, Auto“自动白平衡的调节

此描述符用于状态返回的中断端点,没8ms进行一次判断

此描述符用于描述中断类的特定信息

此描述符为VS接口描述符0x0E为视频类接口0x02为视频流类接口

这个描述符描述了这个接口支持的视频格式数量,以及这个接口中所有类特定的描述符的总大小。

特定颜色匹配描述符

该描述符描述了设备支持的视频格式。设备支持多种(MJPEG)格式,所以有多个格式描述符

特定颜色匹配描述符

标准批量端点描述符

 

以上就是除了扩展功能的描述符的USB抓包和UVC协议的对比
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值