UVC规范(USB摄像头)
+ -

SET_CUR/GET_CUR

2021-05-12 5867 0

设置请求SET_CUR

设置请求用于设置视频功能的相关属性,这些属性一般由相关的端点、接口来实现。

bmRequestType(1) bRequest(1) wValue(2) wIndex(2) wLength(2) Data(0~N)
00100001(接口或实体)
—————
00100010(端点)
SET_CUR 见解释 实体ID(高字节)、接口(低字节)
—————
端点(低字节)
参数长度 参数块

获取请求GET_CUR

获取请求用于视频功能的相关属性.

bmRequestType(1) bRequest(1) wValue(2) wIndex(2) wLength(2) Data(0~N)
10100001(接口或实体)
—————
10100010(端点)
GET_CUR
GET_MIN
GET_MAX
GET_RES
GET_LEN
GET_INFO
GET_DEF
见解释 实体ID(高字节)、接口(低字节)
—————
端点(低字节)
参数长度 参数块

bmRequestType字段(1字节)

D7,下一步数据的传输方向
0 = 主机到设备(SET请求)
1 = 设备到主机(GET请求)

D6-D5,命令的类型
00 = 标准请求命令
01 = 类请求命令(UVC规范中的请求属于类请求命令)
10 = 用户定义的请求命令
11 = 保留

D4-D0,命令接受者的类型
00000 = 接受者为设备(UVC无此值)
00001 = 接收者为接口(UVC规范中可以理解为VC,VS中拓扑结构中的端子,单元等)
00010 = 接受者为端点(UVC规范中为视频流接口VS的端点)

00011 = 其他接受者
其他值保留。

当接收者为接口时,本教程提供了相关的实例分析。详见:处理单元特定类请求示例视频流接口控制请求示例。

bRequest字段(1)

请求命令,包括设置和获取。

  • SET_CUR 设置性
  • GET_CUR 获取当前属性
  • GET_MIN 获取最小设置属性
  • GET_MAX 获取最大设置属性
  • GET_RES 获取分辨率属性
  • GET_LEN 获取数据长度属性
  • GET_INFO 获取设备支持的特定类请求属性
  • GET_DEF 获取默认属性

wIndex字段(2字节)

Entity ID(高字节),接口或端点(低字节)。Entity ID是由UVC设备开发者指定的,该ID号能标识具体唯一的特定的功能单元,便于Host端的驱动能依次对设备内的不同功能单元进行配置与操作。

wValue字段(2字节)

UVC中大多数情况下wValue的取值都为控制选择器CS(高字节),低字节为零
CS的取值受限于wIndex字段中的Entity ID。当Entity ID取不同值时则wValue字段取值也会有所不同。
wValue主要取值如下:

1)、当Entity ID值为VC Interface时:

选择子
VC_CONTROL_UNDEFINED 0x00
VC_VIDEO_POWER_MODE_CONTROL 0x01
VC_REQUEST_ERROR_CODE_CONTROL 0x02
Reserved 0x03

2)当Entity ID值为Teminal时:

Control Selector Value
TE_CONTROL_UNDEFINED 0x00

3)当Entity ID值为Selector Unit时

Control Selector Value
SU_CONTROL_UNDEFINED 0x00
SU_INPUT_SELECT_CONTROL 0x01

4)当Entity ID值为Processing Unit时:

Control Selector Value
PU_CONTROL_UNDEFINED 0x00
PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
PU_BRIGHTNESS_CONTROL 0x02
PU_CONTRAST_CONTROL 0x03
PU_GAIN_CONTROL 0x04
PU_POWER_LINE_FREQUENCY_CONTROL 0x05
PU_HUE_CONTROL 0x06
PU_SATURATION_CONTROL 0x07
PU_SHARPNESS_CONTROL 0x08
PU_GAMMA_CONTROL 0x09
PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0A
PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0B
PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0C
PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0D
PU_DIGITAL_MULTIPLIER_CONTROL 0x0E
PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0F
PU_HUE_AUTO_CONTROL 0x10
PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
PU_ANALOG_LOCK_STATUS_CONTROL 0x12
PU_CONTRAST_AUTO_CONTROL 0x13

5)当Entity ID值为Camera Terminal时:

ControlSelector Value
CT_CONTROL_UNDEFINED 0x00
CT_SCANNING_MODE_CONTROL 0x01
CT_AE_MODE_CONTROL 0x02
CT_AE_PRIORITY_CONTROL 0x03
CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
CT_FOCUS_ABSOLUTE_CONTROL 0x06
CT_FOCUS_RELATIVE_CONTROL 0x07
CT_FOCUS_AUTO_CONTROL 0x08
CT_IRIS_ABSOLUTE_CONTROL 0x09
CT_IRIS_RELATIVE_CONTROL 0x0A
CT_ZOOM_ABSOLUTE_CONTROL 0x0B
CT_ZOOM_RELATIVE_CONTROL 0x0C
CT_PANTILT_ABSOLUTE_CONTROL 0x0D
CT_PANTILT_RELATIVE_CONTROL 0x0E
CT_ROLL_ABSOLUTE_CONTROL 0x0F
CT_ROLL_RELATIVE_CONTROL 0x10
CT_PRIVACY_CONTROL 0x11
CT_FOCUS_SIMPLE_CONTROL 0x12
CT_WINDOW_CONTROL 0x13
CT_REGION_OF_INTEREST_CONTROL 0x14

6)当Entity ID值为Extension Unit时:

Control Selector Value
XU_CONTROL_UNDEFINED 0x00

7)当Entity ID值为VS Interface时:

ControlSelector Value
VS_CONTROL_UNDEFINED 0x00
VS_PROBE_CONTROL 0x01
VS_COMMIT_CONTROL 0x02
VS_STILL_PROBE_CONTROL 0x03
VS_STILL_COMMIT_CONTROL 0x04
VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
VS_STREAM_ERROR_CODE_CONTROL 0x06
VS_GENERATE_KEY_FRAME_CONTROL 0x07
VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
VS_SYNCH_DELAY_CONTROL 0x09

wLenth字段(2字节)

传输的数据大小。该字段表示在控制传输中传输数据的大小。主机—>设备时,该字段的值是实际的数据大小,设备—>主机时,wLenth为设备能够发送的最大数据包大小。

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特定类请求get cur返回长度是26或者是34的是什么?
从返回的长度来看,你应该是在应用打开摄像头,进行视频格式及图形分辨率协商返回的数据长度.UVC视频流接口这两个特别重要的选择子,分别用于协商过程和提交数据格式,让固件开始发送数据。ControlSelector ValueVS_PROBE_CONTROL0x01VS_COMMIT_CONTROL0x......
UVC摄像头批量传输的StreamOn和StreamOff
在UVC规范中,UVC摄像头视频数据的传输方式支持两种,分别为批量传输和同步传输。UVC摄像头数据传输的格式按负载数据头的方式按帧进行打包传输。根据USB规范可知,同步传输方式是只要带中带有同步端点的接口,系统会定时从设备中读取数据,无论设备中是否有数据。而如要要停止数据的传输,只需要选中不带有同步......
UAC 特定类请求
特定类请求一般用于设置或获取音频控制。这些控制又分为两大部分:音频控制请求:对音频控制单元或终端进行控制。音频流请求: 如对音频流控制的请求,如音频采相率等。音频设备类也支持其他特定于类的请求:内存请求(Memory Request),每个可寻址的实体或终端,可导出一个内存映射接口。提供对该实体内存......
【UVC调试笔记】第一个GET CUR请求产生babble detected的原因排查
【前言】开通blog的目的有两个:一是记录UVC调试过程中遇到的问题和解决方案,方便自己review二是给广大开发者提供一些解决问题的思路故障现象:枚举完以后,打开videocap,从bushoud上抓包,可以看出第一个GET CUR会产生一个babble detected的error排查过程:通......
SET_CUR/GET_CUR
设置请求SET_CUR设置请求用于设置视频功能的相关属性,这些属性一般由相关的端点、接口来实现。bmRequestType(1)bRequest(1)wValue(2)wIndex(2)wLength(2)Data(0~N)00100001(接口或实体)————— 001......
U盘枚举失败-该设备无法启动(GET_MAX_LUN请求)
群里有人用STM32搞了一个U盘,但是U盘在插入电脑后在设备管理器是枚举失败。我让他看一下设备状态:又是熟悉的错误码10,表示设备启动失败。设备的启动失败,一般在设备获取描述符获取之后,初始会失败,我之前在弄USB虚拟鼠标的时候也遇到此类情况。不过由于这个设备是U盘,本人还没有研究USB存储协议,只......
UVCXU扩展单元调试工具SET_CUR时获取数据长度错误0x800700ea
在开发UVC扩展单元调试工具遇到的一个问题就是获取SET_CUR时的有效数据长度。进行数据的SET_CURGET_CUR,是通过KsProperty函数实现的。函数声明如下:NTSTATUS KsProperty( [in] PKSPROPERTY Property, [in......
UVC摄像头USB批量传输BULK数据传输方式的打开与关闭StreamOn StreamOff
USB的批量传输和中断传输是一样的简单,但经常发现有人在问批量传输的UVC摄像头的打开与半闭问题的边界问题,特别是摄像头关闭的判断。BULK摄像头的打开我们通过BUSHOUND抓包的内容如下:Device Length Phase Data ......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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