USB中文网出品-UVC视频格式协商协议分析工具

2021-11-11 465 0

有没有对USB摄像头在打开时数据协商时的UVC视频流接口控制请求的几十个字节分析有时有点郁闷,手动分析又麻烦,写个工具感觉又划不来。有时没办法为,为了定位问题所在,还得手动分析,但这几十个字节在分析时还得不停地查文档。

VS_PROBE_CONTROL和VS_COMMIT_CONTROL

我们知道UVC随着版本的不同,其VS_PROBE_CONTROL和VS_COMMIT_CONTROL的长度是不一样的。如UVC1.0是26字节,UVC1.1是34字节,UVC1.5是48字节,你能准确地说出每个版本到那个字段截止吗?

这里本人写了一个UVC视频格式协商协议分析工具UVCStreamComandParser.exe,专门用来解释这26,34,48个字节,并且给出相对偏移和简述信息,让大家快速地分析定位UVC摄像头视频协商的问题所在。
该工具的使用方法比较简单,只需要将需要分析的数据存储在文本中,然后选择分析即可:

UVCStreamComandParser.exe V1.1

  • 发表时间:2021-11-11 15:53:28 星期四
  • 增加十六进制显示列,方便数据对照
  • 强迫症的存输美化
  • 修改了小BUG

UVCStreamComandParser.exe V1.1

存储后的格式:

NO Offset Item Hex Info intro Version
0 0 UINT16 bmHint 00 01 0x0100 UVC1.0
1 2 UINT8 bFormatIndex 02 2
2 3 UINT8 bFrameIndex 03 3
3 4 UINT32 dwFrameInterval 04 05 06 07 117835012
4 8 UINT16 wKeyFrameRate 08 09 2312
5 10 UINT16 wPFrameRate 10 11 4368
6 12 UINT16 wCompQuality 12 13 4882
7 14 UINT16 wCompWindowSize 14 15 5396
8 16 UINT16 wDelay 16 17 5910
9 18 UINT32 dwMaxVideoFrameSize 18 19 20 21 555751704
10 22 UINT32 dwMaxPayloadTransferSize 22 23 24 25 623125282
11 26 UINT32 dwClockFrequency 26 27 28 29 690497318 UVC1.1
12 30 UINT8 bmFramingInfo 30 0x30
13 31 UINT8 bPreferedVersion 31 49
14 32 UINT8 bMinVersion 32 50
15 33 UINT8 bMaxVersion 32 50
16 34 UINT8 bUsage 32 52 UVC1.5
17 35 UINT8 bBitDepthLuma 35 53
18 36 UINT8 bmSettings 36 0x36
19 37 UINT8 bMaxNumberOfRefFramesPlus 37 55
20 38 UINT16 bmRateControlModes 38 0x3938
21 40 UINT16[4] bmLayoutPerStream 40 41 42 43 44 45 46 47 4140 4342 4544 4746

UVCStreamComandParser.exe V1.0

HID报告描述符解析工具的功能概要:

  • 发布时间:2021-11-11 12:11:44 星期四
  • VS_PROBE_CONTROL和VS_COMMIT_CONTROL数据分析
  • 支持导出功能
  • 支持//的注释功能

使用方法

当然为了照顾大家的使用习惯,也支持拖拽文件的方式分析。
如本人在文本中存的数据内容如下:

00 00 02 06  15 16 05 00  00 00 00 00  00 00 1e 00
00 00 00 c2  01 00 00 0c  00 00

使用该工具进行分析:
UVC视频格式协商协议分析工具

下载方式

USB中文网技术交流QQ群下载
USB中文网QQ群文件/USB调试工具&测试软件/UVCStreamComandParser.exe

QQ群号:952873936
952873936
QQ群文件下载需加入本站QQ群。

0 篇笔记 写笔记

UVC 扩展单元描述符
扩展单元描述符允许硬件设计者定义任意一组控制接口,使类驱动程序可以在设备与供应商提供的主机软件之间进行通讯控制。扩展单元描述符ID由bUnitID字段中的值唯一标识描述符。同一视频功能内的任何其他单元或终端不得具有相同的功能ID。guidExtensionCode字段包含特定于供应商的代码,该代......
Linux V4L2 UVC摄像头框架浅析
V4L2 :video for linux version 2 ,是 Linux 里一套标准的视频驱动,它支持 UVC 标准的摄像头。本文来分析一下它的核心框架。整个v4l2的框架分为三层:在应用层,我们可以在 /dev 目录发现 video0 类似的设备节点,上层的摄像头程序打开设备节点进行数据捕......
打开UVC摄像头(特定类请求)数据分析
通过上节可以知道,设备支持4种的视频格式,且每种格式如下:MPJPG数据格式bFormatIndexbFrameIndex分辩率及及帧率11640x480x(30,15,10)121280x720x(30,15,10)131920x1080x(30,15,10)该UVC摄像头中MJPG格式的最分辨率......
UVC 视频流接口VS
和视频控制接口不同,视频流接口用于主机和设备视频功能之间进行传输视频数据。一个视频功能可以不包括视频流接口,也可以包含多个视频流接口。视频流接口用于传输视频时,其传输端点为等时/同步传输端点或者批量传输端点。视频流接口用于传输静止图像时,其传输类型为批量传输端点。用于静止图片传输是可选的,不是必须的......
UVC 请求错误码控制
请求错误码控制用于返回主机初始化后各单元、终端、端点的状态。bmRequestTypebRequestwValuewIndexwLengthData10100001GET_CURGET_INFO02接口1bDevicePowerModebDevicePowerMode:0x00:无错误,请求成功。0......
UVC摄像头扩展单元功能的开发步骤是什么?
写在扩展单元的题外话本人在开发支持UVC扩展单元的directShow应用时,必现并不需要注册接口,只需要在其源过滤器参照后续的代码枚举相关的接口如IKsControl,IKsTopologyInfo定位到指定的扩展单元接口后,直接使用其对应的IKsControl::KsProperty即可实现扩展......
UVC 描述符及描述符布局
USB设备的描述符用于向主机报告其设备的属性信息,UVC设备属于USB设备的一种,故和通用的USB设备一样,也包含设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。UVC设备在也定义了一些特有的描述符,用于对USB视频设备的扩展。这些特有的UVC描述符和通用的USB描述符,共同组成了UV......
UVC1.0和UVC 1.1有什么区别
符合uvc1.1的设备应将类特定VC接口中的bcdUVC标志设置为0x110。此外,如果存在可选的处理单元描述符,则符合1.1的设备应执行以下操作:将bmVideoStandards字段添加到处理单元描述符。更新处理单元中的bLength字段。更新wTotalLength以反映处理单元的较大PU大小......
UVC 等时传输中的URB_ISOCH_TRANSFER
通过UVC规范可知,视频图像数据的读取可使用两种端点传输方式,分别为:BULK 块/批量传输方式ISO 等时/同步传输方式在Windows内核中,USB数据的读取是通过URB来进行传输的,其结构体是一个大大的共用体,根据数据传输的方式对应其不同的结构体,其内容如下:typedef _Struct_s......
UVC摄像头的延迟reduce latency
一般的ISP,200W30帧来说,sensor进来缓存一帧就是33ms+vpu处理时间大概10ms+jpeg编码时间16ms+USB传输时间200KB大概7、8ms,最后就是windows上的显示延迟时间,如果JPEG编码出来缓存不止一帧,时间就更长了,所以一般会超过100多ms另外,网络传输如使......
UVC 相机终端描述符
相机端点描述符使用bTerminalID来标识其惟一的ID,所有的请求必须使用此ID。wTerminalType用来描述相关的物理实体的信息。typedef struct _CAMERA_TERMINAL_DESCRIPTOR UINT8 bLength; UINT8 bDescr......
UVC Windows下UVC摄像头数据分析
这里我们分析一款UVC摄像头来进行数据分析。环境:win10 x64工具:bushound,usbviewer将摄像头插入PC后,打开usbviewer工具,可以看到关于此摄像头的相关信息。可以看到,这个摄像头其实是一个USB复合设备,所以其对应的系统驱动为USBCCGP,然后再由USB复合设......
UVC 选择单元控制请求
选择单元控制描述符设置或读取视频功能的选择器单元内的选择器控件的属性。选择器单元表示视频流源选择器。CUR、MIN和MAX属性的有效范围是从1到选择器单元的输入管脚数。这个值可以在选择器单元描述符的bNrInPins字段中找到。RES属性只能有一个值。控制选择子SU_INPUT_SELECT_CON......
DirectShow播放UVC设备第二路码流方法
双码流播放Graphi图如上。双码流视频设备有两路捕获输出pin, RenderStream函数只会连接第一路pin,要播放第二路码流需要手动获取第二路pin,然后去连接解码器,再手动连接render,就可以显示了。示例代码// m_pGB 是 IGraphBuilder对象// m_pBF......
UVC的版本区别之处理单元描述符
UVC规范自发布到现在,已经有UVC1.0,UVC1.1和UVC1.5三个版本了。在Windows环境下,支持的最广泛的是UVC1.0,从Win7开始支持UVC1.1,从Win8开始支持UVC1.5.我们常用的UVC摄像头一般为了支持更加广泛的操作系统,一般情况下UVC的固件是UVC1.0,但随着固......
作者信息
USB中文网
B站搜索 站长漫谈 看视频。
pnpon内核开网,USB中文网,
busrom硬核技术网站长
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!