UVC规范(USB摄像头)
+ -

UVC 处理单元特定类请求示例

2020-10-29 2020 1

笔者手中有一UVC摄像头,其处理单元描述符bUnitID为2,其处理单元描述符内容如下:

        -------- Video Control Processing Unit Descriptor -----------------------
bLength                  : 0x0D (13 bytes)
bDescriptorType          : 0x24 (Video Control Interface)
bDescriptorSubtype       : 0x05 (Processing Unit)
bUnitID                  : 0x02
bSourceID                : 0x01
wMaxMultiplier           : 0x4000 (163.84x Zoom)
bControlSize             : 0x03
bmControls               : 0x0F, 0x00, 0x00
 D0                      : 1  yes -  Brightness
 D1                      : 1  yes -  Contrast
 D2                      : 1  yes -  Hue
 D3                      : 1  yes -  Saturation
 D4                      : 0   no -  Sharpness
 D5                      : 0   no -  Gamma
 D6                      : 0   no -  White Balance Temperature
 D7                      : 0   no -  White Balance Component
 D8                      : 0   no -  Backlight Compensation
 D9                      : 0   no -  Gain
 D10                     : 0   no -  Power Line Frequency
 D11                     : 0   no -  Hue, Auto
 D12                     : 0   no -  White Balance Temperature, Auto
 D13                     : 0   no -  White Balance Component, Auto
 D14                     : 0   no -  Digital Multiplier
 D15                     : 0   no -  Digital Multiplier Limit
 D16                     : 0   no -  Analog Video Standard
 D17                     : 0   no -  Analog Video Lock Status
 D18                     : 0   no -  Contrast, Auto
 D19                     : 0   no -  Reserved
 D20                     : 0   no -  Reserved
 D21                     : 0   no -  Reserved
 D22                     : 0   no -  Reserved
 D23                     : 0   no -  Reserved
iProcessing              : 0x00
bmVideoStandards         : 0x00
 D0                      : 0   no -  None
 D1                      : 0   no -  NTSC  - 525/60
 D2                      : 0   no -  PAL   - 625/50
 D3                      : 0   no -  SECAM - 625/50
 D4                      : 0   no -  NTSC  - 625/50
 D5                      : 0   no -  PAL   - 525/60
 D6                      : 0   no -  Reserved
 D7                      : 0   no -  Reserved
Data (HexDump)           : 0D 24 05 02 01 00 40 03 0F 00 00 00 00            .$....@......

可以看到,其支持的控制。

  • D0:亮度
  • D1:对比度
  • D2:色调
  • D3:饱和

通过BusHound抓包在摄像头初始化后,总线做了以下特定类请求
对照处理单元控制请求一节,这里我们按选择子进行分类,分别为:

  • 0x02 : PU_BRIGHTNESS_CONTROL 亮度控制
  • 0x03 : PU_CONTRAST_CONTROL 对比度控制
  • 0x06 : PU_HUE_CONTROL 色调控制
  • 0x07 : PU_SATURATION_CONTROL 饱和度控制

可以看到,产生的特定类请求处理单元描述符请求中所支持的控制一致。

说明:

通过特定类请求一节可知:

  • 选择子虽然占8位,但位于wValue的高字节处。
  • 当接收者为接口时,其最终为接收目标为视频控制接口VC,视频流接口中拓扑结构中的端子,单元等,所以其ID也位于高字节处。
//0x02 : PU_BRIGHTNESS_CONTROL 亮度控制
 34.0  CTL    a1 86 00 02  00 02 01 00     GET INFO  
 34.0  IN     03                           .         
 34.0  CTL    a1 82 00 02  00 02 02 00     GET MIN   
 34.0  IN     9c ff                        ..        
 34.0  CTL    a1 83 00 02  00 02 02 00     GET MAX   
 34.0  IN     64 00                        d.        
 34.0  CTL    a1 84 00 02  00 02 02 00     GET RES   
 34.0  IN     01 00                        ..        
 34.0  CTL    a1 87 00 02  00 02 02 00     GET DEF   
 34.0  IN     00 00                        ..        

//0x03 :PU_CONTRAST_CONTROL  对比度控制
 34.0  CTL    a1 86 00 03  00 02 01 00     GET INFO  
 34.0  IN     03                           .         
 34.0  CTL    a1 82 00 03  00 02 02 00     GET MIN   
 34.0  IN     32 00                        2.        
 34.0  CTL    a1 83 00 03  00 02 02 00     GET MAX   
 34.0  IN     c8 00                        ..        
 34.0  CTL    a1 84 00 03  00 02 02 00     GET RES   
 34.0  IN     01 00                        ..        
 34.0  CTL    a1 87 00 03  00 02 02 00     GET DEF   
 34.0  IN     64 00                        d.        

//0x06 : PU_HUE_CONTROL      色调控制
 34.0  CTL    a1 86 00 06  00 02 01 00     GET INFO  
 34.0  IN     03                           .         
 34.0  CTL    a1 82 00 06  00 02 02 00     GET MIN   
 34.0  IN     a6 ff                        ..        
 34.0  CTL    a1 83 00 06  00 02 02 00     GET MAX   
 34.0  IN     5a 00                        Z.        
 34.0  CTL    a1 84 00 06  00 02 02 00     GET RES   
 34.0  IN     01 00                        ..        
 34.0  CTL    a1 87 00 06  00 02 02 00     GET DEF   
 34.0  IN     00 00                        ..        

//0x07 : PU_SATURATION_CONTROL 饱和度控制
 34.0  CTL    a1 86 00 07  00 02 01 00     GET INFO  
 34.0  IN     03                           .         
 34.0  CTL    a1 82 00 07  00 02 02 00     GET MIN   
 34.0  IN     00 00                        ..        
 34.0  CTL    a1 83 00 07  00 02 02 00     GET MAX   
 34.0  IN     c8 00                        ..        
 34.0  CTL    a1 84 00 07  00 02 02 00     GET RES   
 34.0  IN     01 00                        ..        
 34.0  CTL    a1 87 00 07  00 02 02 00     GET DEF   
 34.0  IN     64 00                        d.

通过特定类请求一节可知,当bmRequestType=0xa1时,表示为获取数据,其目标为实体ID(高字节)或接口(低字节)。

GET_INFO 请求

对于处理单元的4种选择子,其第一个操作为GET_INFO请求,其数据度度为1字节,返回的值为0x03。
对照GET_INFO一节,其D0=1,D1=1,其余位为0,所以其支持Supports GET value request和Supports SET value requests,即GET_CUR和SET_CUR请求。

亮度控制

  • 最小值为:9c ff,-100
  • 最大值为:64 00,+100
  • 分辨率为:01 00,为0
  • 默认值为:00 00 为0

对比度控制

  • 最小值为:32 00,为50
  • 最大值为:c8 00,为-56
  • 分辨率为: 01 00 ,为1
  • 默认值为:64 00,为100

色调控制

  • 最小值为:a6 ff:,为-90
  • 最大值为:5a 00 :为90
  • 分辨率为: 01 00 ,为1
  • 默认值为:00 00,为0

饱和度控制

  • 最小值为:00 00 ,为0
  • 最大值为:c8 00,为200
  • 分辨率为:00 ,为0
  • 默认值为:64 00,为100
HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

打开UVC摄像头(特定类请求)数据分析
通过上节可以知道,设备支持4种的视频格式,且每种格式如下:MPJPG数据格式bFormatIndexbFrameIndex分辩率及及帧率11640x480x(30,15,10)121280x720x(30,15,10)131920x1080x(30,15......
UVC的版本区别之处理单元描述符
UVC规范自发布到现在,已经有UVC1.0,UVC1.1和UVC1.5三个版本了。在Windows环境下,支持的最广泛的是UVC1.0,从Win7开始支持UVC1.1,从Win8开始支持UVC1.5.我们常用的UVC摄像头一般为了支持更加广泛的操作系统,一般情况下UVC的固件是UVC1.0,但随着固......
UVC特定类请求get cur返回长度是26或者是34的是什么?
从返回的长度来看,你应该是在应用打开摄像头,进行视频格式及图形分辨率协商返回的数据长度.UVC视频流接口这两个特别重要的选择子,分别用于协商过程和提交数据格式,让固件开始发送数据。ControlSelector ValueVS_PROBE_CONTROL0x01VS_COMMIT_CONTROL0x......
USB标准请求、类特定请求总结
做USB开发,最常见的就是USB的控制请求的那8个字节的分析,如果抓包工具有协议分析那还好说,但是如果不带速协议分析,那其实还是挺郁闷的。所以说,如何快速的通过USB请求的那几个字段定位出是何请求,是可以大大的提高我们的协议分析效率的。USB的请求这里包括USB的标准请求和特定类请求,其包括以下几......
UVC 处理单元描述符
处理单元描述符的ID使用bUnitID字段标识。同一视频功能内的任何其他单元或终端不得具有相同的功能ID。bSourceID字段用于描述此处理单元的连接。它包含此处理单元通过其输入引脚连接到的设备或终端的ID。bSourceID必须引用同一视频功能中的单元或终端。bmControls字段是一个位图......
UAC 特定类请求
特定类请求一般用于设置或获取音频控制。这些控制又分为两大部分:音频控制请求:对音频控制单元或终端进行控制。音频流请求: 如对音频流控制的请求,如音频采相率等。音频设备类也支持其他特定于类的请求:内存请求(Memory Request),每个可寻址的实体或终端,可导出一个内存映射接口。提供对该实体内存......
UVC 再议特定类请求
通过特定请求的支持 GET_INFO可以获取设备支持的特定类请求。当然在UVC规范中,有些特定类请求是可选择的,有些是必须的,这种情况因特定类请求的使用环境不同而定。我们知道,特定类请求一般包括:名称值 说明RC_UNDEFINED0x00未定义SET_CUR0x01设置属性GET_CUR0x81获......
LINUX&UVC处理单元描述符
不同的UVC版本,其UVC处理单元描述格式稍有不同。关于UVC处理单元描述符各字段的详细说明可详见:https://www.usbzh.com/article/detail-84.html对于UVC1.1/1.5版本,其内容如下: UINT8 bLength; UINT8 bDescr......
UVC 处理单元控制请求
处理单元控制请求用于设置或读取视频函数的处理单元内的视频控件的属性。Control SelectorValuePU_CONTROL_UNDEFINED0x00PU_BACKLIGHT_COMPENSATION_CONTROL0x01PU_BRIGHTNESS_CO......
USB 标准请求
USB定义了8个字节的标准请求,通过这些请求,可以对设备的状态进行更改或对设备进行枚举。USB的标准请求的数据传输方式都是控制传输方式,所以使用的端点是设备的默认端点0。USB这8个字节的的控制请求不包括传输过程中的数据,但包括了控制请求的数据长度。当数据长度为不为0时,设备或主机向对方传输相应长......
UAC 拓扑结构
UAC规范描述了以下类型的标准单元和终端,这些单元和终端被认为足以代表当前和近期可用的大多数视频功能:输入终端 - Input Terminal (IT)输出终端 - Output Terminal (OT)混音器单元 - Mixer Unit (MU)选择器单元 - Selector Uni......
UVC 特定类请求概述
本节我们来讲述UVC的特定类请求。UVC特定类请求的功能UVC特定类请求的主要功能用于控制UVC摄像头,实现对UVC摄像头的打开,关闭及摄像头参数的控制。通过对UVC规范的学习,使用我们可详细的了解UVC是怎样通过这些特定类请求实现对UVC摄像头的控制。UVC特定类请求的分类大多数特定于类的请求用于......
UVC 处理单元特定类请求示例
笔者手中有一UVC摄像头,其处理单元描述符bUnitID为2,其处理单元描述符内容如下: -------- Video Control Processing Unit Descriptor -----------------------bLength ......
U盘枚举失败-该设备无法启动(GET_MAX_LUN请求)
群里有人用STM32搞了一个U盘,但是U盘在插入电脑后在设备管理器是枚举失败。我让他看一下设备状态:又是熟悉的错误码10,表示设备启动失败。设备的启动失败,一般在设备获取描述符获取之后,初始会失败,我之前在弄USB虚拟鼠标的时候也遇到此类情况。不过由于这个设备是U盘,本人还没有研究USB存储协议,只......
UAC 处理单元描述符
UAC处理单元描述符全称Processing Unit Descriptor,缩写这PUD.处理单元描述符和其它音频控制的单元/终端描述一样,也具有一个惟一的ID标识字段UnitID。UAC处理单元的功能处理单元(PU)表示音频功能内部的一个功能块,它将逻辑输入通道,分为一个或多个群集,并分成若干......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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