文章目录
- 前言
- 一、UVC拓展结构
- 二、修改是否开启亮度等功能 在处理单元
- 1. 处理单元理解
- 2.实际代码部分
- 2.修改主要对控制段进行修改
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
项目需要:
在哪里学习UVC 肯定是USB中文网
网址
https://www.usbzh.com/article/detail-832.html
提示:以下是本篇文章正文内容,下面案例可供参考
一、UVC拓展结构
UVC摄像头实现的拓扑结构
最简单的结构就是输入直接输出
二、修改是否开启亮度等功能 在处理单元
1. 处理单元理解
处理单元的解释
UINT8 bLength;
UINT8 bDescriptorType;
UINT8 bDescriptorSubtype;
UINT8 bUnitID;
UINT8 bSourceID;
UINT16 wMaxMultiplier;
UINT8 bControlSize;
UINT8 bmControls[3];
UINT8 iProcessing;
UINT8 bmVideoStandards;
bLength:描述符的长度,13字节。
bDescriptorType:描述符类型,CS_INTERFACE,值为0x24.
bDescriptorSubtype:描述符子类型。 VC_PROCESSING_UNIT ,值为0x05
bUnitID:ID,非零值。
bSourceID:连接到此单元的单元ID或实体ID.
wMaxMultiplier:如果支持数字乘法器控制,此字段表示最大数字放大倍数乘以100。例如,对于支持1-4.5X的设备数码变焦(4.5倍倍增),此区域设置为450。如不支持,则为0
bControlSize:bmControls的字节大小,为3
bmControls:相应的位为1表示支持这种控制。
D0:亮度
D1:对比度
D2:色调
D3:饱和
D4:锐度
D5:伽马射线
D6:白平衡温度
D7:白平衡分量
D8:背光补偿
D9:增益
D10:电源线频率
D11:色调,自动
D12:白平衡温度,自动
D13:白平衡组件,自动
D14:数字乘法器
D15:数字乘法器限制
D16:模拟视频标准
D17:模拟视频锁定状态
D18:对比度,自动
D19–D23:保留。设为零
bmVideoStandards:处理单元支持的所有模拟视频标准的位图。
D0: None
D1: NTSC – 525/60
D2: PAL – 625/50
D3: SECAM – 625/50
D4: NTSC – 625/50
D5: PAL – 525/60
D6-D7: Reserved. Set to zero.
参考链接
https://www.usbzh.com/article/detail-84.html
2.实际代码部分
参考链接
UVC 描述符实例
https://www.usbzh.com/article/detail-834.html
代码如下(示例):
这段代码是一个USB视频类(UVC)设备描述符的片段,具体描述了一个输入终端(Input Terminal),它在这个演示中模拟了一个电荷耦合器件(CCD)传感器(即摄像头)。以下是各个字段的解释:
0x12:bLength字段,表示这个描述符的长度为18字节(十六进制12)。
USB_DESCTYPE_CS_INTERFACE:bDescriptorType字段,表明这是一个类特定的接口描述符(Class-specific Interface Descriptor)。
USB_VC_INPUT_TERMINAL:bDescriptorSubType字段,表明这是一个输入终端(INPUT TERMINAL)子描述符。
0x01:bTerminalID字段,表示这个输入终端的ID为1。
0x01, 0x02:wTerminalType字段,表示这个终端的类型是ITT_CAMERA(即摄像头),具体是CCD传感器类型(十六进制01 02)。
0x00:bAssocTerminal字段,表示这个输入终端没有与任何其他终端关联。
0x00:iTerminal字段,表示这个终端的字符串描述符索引为0(即未使用)。
0x00, 0x00:wObjectiveFocalLengthMin字段,表示最小物镜焦距为0,意味着不支持光学变焦。
0x00, 0x00:wObjectiveFocalLengthMax字段,表示最大物镜焦距为0,同样意味着不支持光学变焦。
0x00, 0x00:wOcularFocalLength字段,通常用于表示目镜焦距,但在这里也为0,表示不支持与目镜相关的功能(在摄像头中通常不适用)。
0x03:bControlSize字段,表示控制字段的大小为3字节。
0x00, 0x00, 0x00:bmControls字段,表示没有支持的控制功能。在这个例子中,所有控制位都被设置为0。
这个输入终端描述符为UVC设备中的摄像头(模拟为CCD传感器)提供了基本的配置信息。它表明这个摄像头不支持光学变焦,也没有与其他终端关联,且没有支持的控制功能。这对于设备枚举和配置过程很重要,使得主机能够正确识别和配置UVC设备中的摄像头部分。
2.修改主要对控制段进行修改
代码如下(示例):
0x00, 0x00, 0x00:bmControls字段,表示没有支持的控制功能。在这个例子中,所有控制位都被设置为0。
24 位全为1 就能开启这个功能
在bmControls:相应的位为1表示支持这种控制。
D0:亮度
D1:对比度
D2:色调
D3:饱和
D4:锐度
D5:伽马射线
D6:白平衡温度
D7:白平衡分量
D8:背光补偿
D9:增益
D10:电源线频率
D11:色调,自动
D12:白平衡温度,自动
D13:白平衡组件,自动
D14:数字乘法器
D15:数字乘法器限制
D16:模拟视频标准
D17:模拟视频锁定状态
D18:对比度,自动
D19–D23:保留。设为零
总结
学习使人快乐!
音乐使人愉悦!
日积月累使人充实和自信!