qn1543974119

qn1543974119

0个粉丝

4

问答

0

专栏

0

资料

qn1543974119  发布于  2018-12-05 16:05:30
采纳率 0%
4个问答
1536

UVC协议学习(转)

前言
    UVC是属于USB行业规范中的USB设备类规范,用于USB接口的视频设备的一个统一的数据交换规范。其中UVC官方协议文档 UVC 1.5 Class specification是对整个UVC协议的框架做了规范,USB_Video_Example则规定了描述符等的数据结构和相关的一些其他相关规定。首先我先对这两个规范对照一些资料进行了解再逐步学习其他的补充文档。
1、UVC概述
    在UVC规范中明确要求,具有实际UVC功能的视频设备只要需要两种接口:一种为VC Interface(视频控制接口),VS Interface(视频流接口)。其中VC接口用于对UVC设备进行配置操控,而VS接口则用于负责传输视频数据流,两者相互配合完成UVC设备功能。

2、UVC拓扑结构
    UVC的将设备在拓扑结构上抽象成为了几个主要的硬件功能模块,有以下几种:
输入端点(Input Terminal)
输出端点(Output Terminal)
camera端点(Camera Terminal)
选择单元(Selector Unit)
处理单元(Processing Unit)
拓展单元(Extension Unit)

在USB_Video_Example 1.5中以一个网络摄像头设备为例展现其拓扑结构的示例图如下:

    从Sensor和另一个复合视频设备得到的数据流由IT和CT输入,经过SU选择送到PU处理,再由OT绑定到指定的USB端点。最后由USB端点与主机交互数据发送到host。在实际的UVC设备设备中,可能没有上图中的一些功能某块,可能只有其中一些模块来完成的。
    同时从上面的拓扑结构图可以看出,左半部分框架组成了UVC中的VC接口部分,右半部分框架组成了VS接口部分。

3、概念补充
3.1 Terminal(端点)
    Terminal是指整个UVC功能的入口和出口,逻辑意义上讲Terminal只有一个出口或者入口,它要么代表整个UVC功能的数据输入点,要么代表数据在流经UVC功能内部的各Unit功能单元后的最终流入点。
1)IT(输入端点)
    作为数据流入video function的接收器,功能是作为已经被提取出来的数据的数据源,说白了就是UVC功能的数据源头。
输入端点一般在拓扑图中用下图表示:
                     
2)、OT(输出端点)
    作为Video Function视频信息流出的出口,功能是作为输出数据的接收器。OT只有一个输入pin,处理流程最后一个单元会将它的out pin与OT的in pin连接在一起。
    输出端点一般在拓扑图中用下图表示:

3)、CT(Camera端点)
    CT代表硬件上的数据采集源(sensor),用于控制视频流传输中的设备特性的。它规定支持以下特性控制:
扫描模式(逐行扫描或隔行扫描)
自动曝光模式
自动曝光优先级
曝光时间
聚焦
自动聚焦
可变光圈
缩放/变焦
移动镜头
滚动
倾斜
数字窗口
感兴趣区域
3.2 Unit(单元)
    Unit可以理解为构建出UVC设备功能的各功能单元,多个Unit按照一定的规则连接后就是一个完整的UVC功能设备。Spec规定Unit有一个或多个入口,一个出口;也就是说可以有多个Unit或Terminal作为一个Unit的输入源头,而数据在流经Unit后仅能作为其他Unit或Terminal的一个输入源头。
规范1.5中定义了四种Unit:Selector Unit (SU),Processing Unit (PU),Extension Unit (EU),Extension (XU)。
1)、SU(选择器单元)
    SU单元用来控制图像数据采集源的切换和选择。例如上面相机拓扑图有两个数据输入源,这时需要SU来进行切换和选择。
选择器单元一般在拓扑图中用下图表示:

2)、PU(处理单元)
PU代表对采集所得图像数据进行加工的单元,负责对采集到的图像特性进行调整设置,主要有以下一些特性:
Usr Controls
Brightness(背光)
Contrast(对比度)
Hue(色度)
Saturatio(饱和度)
Sharpness(锐度)
Gamma(伽马)
Digital Multiplier (Zoom)(数字放大)
Auto Controls
White Balance Temperature(白平衡色温)
White Balance Component(白平衡组件)
Blcklight Compensation(背光补偿)
Other
Gain(增益)
Power Line Frequency(电源线平率)
Analog Video Standard(模拟视频标准)
Analog Video Lock Status(模拟视频死锁状态)
处理单元一般在拓扑图中用下图表示:

3)、EU(编码单元)
    EU用于对采集所得的数据进行个性化处理的功能。
编码单元一般在拓扑图中用下图表示:

4)、XU(扩展单元)
    XU是为了特定供应商添加规范而提供的单元。
扩展单元一般在拓扑图中用下图表示:

3.3、Video Control Interface(视频控制接口)
    VC主要用于控制UVC功能中的Units和Terminals,通过对不同的Units和Terminals发下不同的指令,从而影响UVC设备的当前工作状态;Host端发下的所有对UVC设备的操纵控制命令都是经由此Interface完成的,这个以上面拓扑图所表示的设备为例,该设备包含了一个Processing Unit、一个Input Terminal、Output Terminal和Selector Unit,VC Interface需要对它们下发不同的命令,为此VC Interface需要包含一个控制端点(强制性要求),它使用的就是每个USB设备中默认的端点0。另外一个Interrupt端点则是可选的,用来返回或通知Host端当前的UVC设备内部状态有变化。大部分情况下,一个UVC设备的VC Interface不需一定要实现此端点,但一旦UVC设备需要实现某些特定feature时,Spec会强制性要求实现该interrupt端点。

3.4、Video Streaming Interface(视频流接口)
    VS Interface则专注与负责传输UVC设备的Video数据到Host端。若一UVC设备支持n种格式的Video数据,则它需要实现n个VS Interface,每个Interface对应一种专门的数据格式;

3.5、Video Interface Collection(视频接口集合)&&Interface Association Description(视频关联描述符)
(翻译Operational Model部分段落) 
英:
    A device can support multiple configurations. Within each configuration can be multiple interfaces, each possibly having alternate settings. These interfaces can pertain to different functions that co-reside in the same composite device. Several independent video functions can exist in the same device. Interfaces that belong to the same video function are grouped into a Video Interface Collection described by an Interface Association Descriptor. If the device contains multiple independent video functions, there must be multiple Video Interface
Collections (and hence multiple Interface Association Descriptors), each providing full access to their associated video function.
    As an example of a composite device, consider a desktop camera equipped with a built in microphone. Such a device could be configured to have one interface collection dealing with configuration and control of the audio function, while another interface collection deals with its video aspects. One of those, the VideoControl interface, is used to control the inner workings of the function, whereas the other, the VideoStreaming interface, handles the data traffic received from the camera video subsystem.
    Video Interface Collections can be dynamic in devices that support multiple operating modes. Because the VideoControl interface, together with its associated VideoStreaming interface(s), constitutes the ‘logical interface’ to the video function, they must all come into existence at the same moment in time. Changing the operating mode of a device causes the previous Video Interface Collection to be replaced with a new Video Interface Collection, followed by reinitialization of the host software. This specification does not provide a mechanism for the host to initiate such a mode change, which is typically initiated via a physical switch on the device.As stated earlier, video functionality is located at the interface level in the device class hierarchy.The following sections describe the Video Interface Collection, containing a single VideoControl interface and optional VideoStreaming interfaces, together with their associated endpoints that are used for video function control and for data stream transfer.
中:
    一个设备可以支持多种配置,每个配置内可能有多个接口,每个接口可能会被轮流设置。这些接口可能存在于同一复合设备的不同功能中。几个独立的视频功能可能存在于同一设备内,属于同一功能的接口被分配到视频接口集合用IAD描述。如果设备包含多个独立的视频功能,那么就可能存在多个视频接口集合(个人理解为一个独立的视频功能对应一个集合)。
   比如一个装配有内置麦克风的桌面照相机作为一个例子。有一个接口集合去处理对音频功能的控制与配置,另外一个接口集合则去处理视频方面的控制与配置。在其中一个接口集合中,VC接口会对该功能内部进行控制,另外一个VS接口则去处理来自相机视频子系统传输过来的数据。
    视频接口集合在支持多个操作模式的设备中是动态的。因为VC接口和VS接口组成视频功能中的“逻辑接口”,它们必须在同一时刻同时存在。改变设备的操作模式则之前的视频接口集合也会被新的视频接口集合替换,紧随着由主机软件重新初始化。本说明书中没有提供用于主机的机制来启动这样的模式改变,这是通过设备上的物理开关启动的。
    如上所述,视频功能位于设备类结构层次的接口层。接下来的章节将描述视频接口集合,包含了单个VC接口和可选的VS接口,结合它们的关联端点用于将视频功能控制和数据流传输。

视频接口集合
    视频接口集合是用于管理同一功能中VC和VS接口的。如果设备包含多个独立的视频功能,那么就可能存在多个视频接口集合。

视频关联描述符
        一个设备必须使用一个IAD(接口关联描述符)去描述一个Video Interface Collection(视频接口集合),USB协议中并没有专门朝设备索取IAD的命令,AD需作为Configuration描述符的一部分发送给Host端(返回GetDescriptor(Configuration)请求的回应)。在该Configuration描述符的排列顺序中,IAD要放在它所包含的VC,VS描述符之前,且同一个IAD中所有的VC,VS Interface的Interface number必须连贯。

4、Descriptor(描述符)
    描述符用来描述USB设备性能或特向的数据结构,与设备类相关的信息都是主机向设备获取描述符来得到的。
在UVC所规定的描述符中除了常用的标准描述符,另外还定义了视频设备的特殊类描述符,主要如下:
标准描述符
设备描述符(Device Descriptor)
设备限定描述符(Device QualifierDescriptor)
设备配置描述符(Configure Descriptor)
其他速度描述符(Other Speed Descriptor)
字符描述符​(String Descriptor)
特殊类描述符
接口联合描述符(Interface Association Descriptor)
视频控制接口描述符(VideoControl Interface Descriptor)
视频控制端点描述符(VideoControl Endpoint Descriptor)
视频流接口描述符(VideoStreaming Interface Descriptor)
视频流端点描述符(VideoStreaming Endpoint Descriptor)
4.1 描述符的布局



5、Request (请求)
    请求是主机软件与实体中控制器交流的一种机制。请求都是由主机向设备端发起的功能请求,所有的USB设备都需要支持标准的设备请求和与Class相关的特殊类请求。
标准请求
    在标准协议中有相关描述,不做详细展开
特殊类请求
    事实上特殊类请求也可以根据接口来分成两大类:1)、视频控制请求,2)视频流请求。
1)视频控制请求有:
接口控制请求(Interface Control Request)
Camera终端控制请求(Camera Terminal Control Request)
选择单元控制请求(Selector Unit Control Request)
处理单元控制请求(Processing Unit Control Request)
扩展单元控制请求​(Extension Unit Control Request)
2)视频流请求仅有接口控制请求(Interface Control Request)一种:

    Interface Control Requests因为是用来在主机和设备之间协商数据交互格式和分辨率,流量等信息的,所以一般来说是必须实现的。
    Camera Terminal Control Requests包含了对曝光时间,曝光模式,对焦,变焦,平移等sensor获取数据阶段时的参数控制。
    Processing Unit Control Requests中则包含了亮度,增益,色调,对比度,白平衡等等sensor在获取到图像数据后,图像处理阶段的相关参数。
  不过实际上,以上两者的划分在硬件层次并不是绝对的。很多参数的控制在sensor硬件级别上是同一层次的。不过,将这些功能抽象成这两类,正如在硬件的拓扑结构上将功能模块抽象出来一样,有利于通用化的程序设计。



暂时先整理这么多,等再行理解后再补充。

参考资料


---------------------
作者:go_str
来源:CSDN

转自CSDN,由于不能发URL,所以链接地址不贴上。
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
更多相似问答
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区