USB协议 - UVC标准协议规范(二)

article/2025/9/21 6:33:03

USB协议-UVC标准协议规范(二)

  • 1.概述
  • 2.UVC功能特征
    • 2.1 Video Interface Class
    • 2.2 Video Interface subclass and Protocol
    • 2.3 UVC功能拓扑
      • 2.3.1 Unit单元
        • 2.3.1.1 SU(选择器单元)
        • 2.3.1.2 PU(处理单元)
        • 2.3.1.3 EU(编码单元)
        • 2.3.1.4 XU(扩展单元)
      • 2.3.2 Teminals端点
        • 2.3.2.1 IT(Input Terminal)
        • 2.3.2.2 OT(Output Terminal)
        • 2.3.2.3 CT(Camera Terminal)

1.概述

UVC,全称为:USB video(device) class,是微软与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。

USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容。这些Class协议的数量非常多,最常见的比如支持U盘功能的Mass Storage Class,以及通用的数据交换协议:CDC class。此外还包括Video、Audio Class, Print Class等等。正是由于这些Class协议,大大促进了USB设备的普及,比如说各个厂商生产的U盘都能通过操作系统自带的驱动程序来使用。

所以说UVC仅仅只是USB规范协议中设备类规范的其中一种,是用作USB接口的视频设备的一个统一的数据交换规范。使用 UVC 的好处 USB 在 Video这块也成为一项标准了之后,硬件在各个程序之间彼此运行会更加顺利,而且也省略了驱动程序安装这一环节,操作系统只要是 Windows XP SP2 之后的版本都可以支持 UVC,Linux系统自2.4以后的内核都支持了大量的设备驱动,其中支持UVC设备。

在UVC规范中明确要求,具有实际UVC功能的视频设备需要具备两种接口:一种为VC Interface(视频控制接口),VS Interface(视频流接口)。其中VC接口用于对UVC设备进行配置操控,而VS接口则用于负责传输视频数据流,两者相互配合完成UVC设备功能。一般情况下设备是只有有一个VC接口和多个VS接口。

本文对USB的功能类协议USB Video Class(UVC)的具体设计进行介绍,但不会介绍USB基础协议,所以需要对USB基础协议有一定的了解,包括USB四大描述符以及四种传输方式。

规范文档通过官方链接下载USB_Video_Class_1_5
或者云盘下载:USB_Video_Class_1_5

2.UVC功能特征

video function(视频功能) 位于设备类层次结构中的接口级别。它由许多接口组成,这些接口将相关pipe(管道)分组在一起,共同实现video function(视频功能)的接口。

video function(视频功能)通过其(Video interface)视频接口寻址。 每个视频功能都有一个 VideoControl (VC) 接口,并且可以有多个 VideoStreaming (VS) 接口。 VideoControl (VC) 接口用于访问该功能的设备控件,而 VideoStreaming (VS) 接口用于将数据流传输进和出该功能。 单个 VideoControl 接口和属于同一视频功能的 VideoStreaming 接口的集合称为VideoInterfaceCelloction视频接口集合(VIC)。 Interface Association Descriptor(接口关联描述符 )(IAD) 用于描述视频接口集合。

2.1 Video Interface Class

视频接口类(Video interface class)将所有可以与 USB 兼容视频数据流交互的功能分组。
事实上,Video interface class包含了VC和VS。

视频接口类有专门的code码标识:

Video Interface Class CodeValue
CC_VIDEO0x0E

2.2 Video Interface subclass and Protocol

Video interface class又细分两种subclass类:

  • Video Control interface
  • Video streaming interface

说明:
视频控制接口是访问视频功能内部的单个入口点,所有与视频功能各拓扑单元或终端都必须通过视频控制接口来实现。所以视频函数内部相关的所有描述符都是特定于类的视频控制接口描述符的一部分。
视频流接口用于主机和设备视频功能之间进行传输视频数据。一个视频功能可以不包括视频流接口,也可以包含多个视频流接口。

Interface Association Descriptor(IAD)也有自己的功能subclass:

  • Video interface colloction

视频接口subclass code码:

Video Subclass CodesValue
SC_UNDEFINED0x00
SC_VIDEOCONTROL0x01
SC_VIDEOSTREAMING0x02
SC_VIDEO_INTERFACE_COLLECTION0x03

视频接口协议code标识码:

Video Interface Protocol CodesValue
PC_PROTOCOL_UNDEFINED0x00
PC_PROTOCOL_150x01

2.3 UVC功能拓扑

为了能够操纵视频功能的物理属性,其功能必须划分为可寻址实体。
UVC确定了以下两个通用实体:

  • Units
  • Teminals

2.3.1 Unit单元

Unit可以理解为构建出UVC设备功能的各功能单元,多个Unit按照一定的规则连接后就是一个完整的UVC功能设备。Spec规定Unit有一个或多个入口,一个出口;也就是说可以有多个Unit或Terminal作为一个Unit的输入源头,而数据在流经Unit后仅能作为其他Unit或Terminal的一个输入源头。
如下图规范:

在这里插入图片描述

规范1.5中定义了四种Unit:

  • Selector Unit (SU)
  • Processing Unit (PU)
  • Encoding Unit (EU)
  • Extension (XU)

2.3.1.1 SU(选择器单元)

SU单元用来控制图像数据采集源的切换和选择。比如一个设备支持多种输入源,将通过SU进行选择切换。
例如下面相机拓扑图有两个数据输入源,这时需要SU来进行切换和选择。
选择器单元一般在拓扑图中用下图表示:
在这里插入图片描述

2.3.1.2 PU(处理单元)

PU代表对采集所得图像数据进行加工的单元,负责对采集到的图像特性进行调整设置,它有一个单一的输入和输出引脚。
主要有以下一些特性:
User Controls

  • Brightness 背光
  • Hue 色度
  • Saturation 饱和度
  • Sharpness 锐度
  • Gamma 伽马
  • Digital Multiplier (Zoom) 数字放大
    Auto Controls
  • White Balance Temperature 白平衡色温
  • White Balance Component 白平衡组件
  • Backlight Compensation 背光补偿
  • Contrast 对比度
    Other
  • Gain 增益
  • Power Line Frequency 电源线频率
  • Analog Video Standard 模拟视频标准
  • Analog Video Lock Status 模拟视频锁状态

处理单元一般在拓扑图中用下图表示:
在这里插入图片描述

2.3.1.3 EU(编码单元)

EU用于对采集所得的数据进行个性化处理的功能。编码单元控制编码器的属性,该编码器对通过它流式传输的视频进行编码。 它具有单个输入和多个输出引脚。 它支持以下功能,这些功能可以在流式传输开始之前或之后使用。

参考规范2.3.6 Encoding Unit
在这里插入图片描述

2.3.1.4 XU(扩展单元)

XU是为了特定供应商添加规范而提供的单元。

在这里插入图片描述

2.3.2 Teminals端点

Terminal是指整个UVC功能的入口和出口,逻辑意义上讲Terminal只有一个出口或者入口,它要么代表整个UVC功能的数据输入点,要么代表数据在流经UVC功能内部的各Unit功能单元后的最终流入点。

规范中描述了以下Teminals:

  • Input Terminal
  • Output Terminal

2.3.2.1 IT(Input Terminal)

作为数据流入video function的接收器,功能是作为已经被提取出来的数据的数据源,说白了就是UVC功能的数据源头。
输入端点一般在拓扑图中用下图表示:
在这里插入图片描述

2.3.2.2 OT(Output Terminal)

作为Video Function视频信息流出的出口,功能是作为输出数据的接收器。OT只有一个输入pin,处理流程最后一个单元会将它的out pin与OT的in pin连接在一起。
在这里插入图片描述

2.3.2.3 CT(Camera Terminal)

CT代表硬件上的数据采集源(sensor), 用于控制视频流传输中的设备特性的。
它规定支持以下特性控制 :

  • Scanning Mode (Progressive or Interlaced) 自动扫描(逐行或隔行扫描)
  • Auto-Exposure Mode 自动曝光模式
  • Auto-Exposure Priority 自动曝光优先级
  • Exposure Time 曝光时间
  • Focus 焦点
  • Auto-Focus 自动对焦
  • Simple Focus 简单聚焦
  • Iris 可变光圈
  • Zoom 缩放
  • Pan 移动镜头
  • Roll 滚动
  • Tilt 倾斜
  • Digital Windowing 数字窗口
  • Region of Interest 感兴趣区域

在USB_Video_Example 1.5中以一个网络摄像头设备为例展现其拓扑结构的示例图如下:
拓扑一:
在这里插入图片描述
拓扑二:
在这里插入图片描述

参考文章


http://chatgpt.dhexx.cn/article/hkc5iT5j.shtml

相关文章

USB 协议整理 五:USB概述及协议基础(四)

十一、USB 的四种传输类型 1、批量传输 详细内容见 《USB2.0标准协议》 8.5.2 Bulk Transactions 章节。 批量事务类型的特点是能够通过错误检测和重试来保证在主机和设备之间无错误地传递数据。批量事务使用由令牌、数据和握手数据包组成的三阶段事务,如图 8-30…

USB总线-USB协议简介(一)

1.简介 USB是通用串行总线(Universal Serial Bus)的缩写。在USB总线出现之前,计算机与键盘、鼠标、扫描仪、打印机都使用专用的接口连接,不同设备的接口不能互用,扩展性很差,每次插拔设备都要关闭计算机&a…

USB 协议整理 二:USB概述及协议基础(一)

一、USB 版本 二、USB是什么 USB是一种接口技术,真正的即插即用,英文全称是Universal Serial Bus,USB就是简写,中文叫通用串行总线。USB 的出现简化了个人计算机与外围设备的连接,增加了易用性。 USB 是主从模式。 …

强大的USB协议分析工具

2020年最后一天了,感谢大家一年来对我文章的支持,有你们的支持就是我强大的动力。 今天来给大家介绍一个USB 协议分析软件LeCroy USB Advisor,软件安装包下载连接如下: 链接:https://pan.baidu.com/s/12qBCOjuy4i8kr1M…

USB 充电协议

文章目录 锂电子电池电池的发展史锂电子电池充电过程充电物理公式充电器接口 USB协议慢充USB-IF BC1.2 快充QCOM QCOPPO VOOCUSB-IF PDMTK PE USB 充电市场 锂电子电池 电池的发展史 USB充电,都是充的 锂离子电池https://blog.csdn.net/u012719256/article/details/72627022 …

USB 协议分析(含基本协议和 USB 请求和设备枚举)

1. 物理特性 1.1 引脚 一条USB传输线分别由地线、电源线、D和D-四条线构成,D和D-是差分输入线,它使用的是3.3V的电压(与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA(可以在编程中设置)。 引脚标号信号名…

1.USB协议简介

最近学习usb相关的知识,一直感觉入不了门,看《linux那些事儿之我是usb》,对usb协议也不是很熟悉,没能坚持看下去,直到看了《圈圈教你玩usb》一书,把自己的兴趣立马提了起来,大牛圈圈用51单片机实…

USB协议基础篇

初次接触USB的同学,可能会被里面各种名词给搞晕,下面就来梳理一下这些知识,希望能帮助大家理解USB。 目录 一,从最常见的名词说起 1.1 什么是USB 1.2 USB协议版本 1.3 USB接口分类 1.4 PIPE 1.5 endpoint 1.6 管道通信方式…

USB协议简介

1.USB协议简介 https://blog.csdn.net/songze_lee/article/details/77658094 2017年08月28日 23:20:16 songze_lee 阅读数:22978 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/songze_lee/article/details/7…

USB协议详解

本博客整理自网络,仅供学习参考,如有侵权,联系删除。邮箱:rom100163.com 一个transfer(传输)由一个或多个transaction(事务)构成,一个transaction(事务)由一个或多个packet(包)构成,一个packet(包)由一个或…

简单说说USB协议(一)

目录 USB是什么 USB协议的传输结构 USB的电气特性 拓扑结构 编码方式 描述符 USB是什么 USB,通用串行总线,是一种计算机与外围设备进行数据交互的通信协议。 任何东西的出现都是有理可循的,在以前计算机刚兴起的时候,要连接…

USB协议介绍

目录 前言 1、概述 1.1 USB协议 1.2 USB充电协议 1.3 USB接口 1.3.1 type-a 1.3.2 Type-C 1.3.3 USB2.0/3.0/3.1/3.2速率 1.3.4 ULPI/UTMI 前言 开始整理USB相关基础概念,仅用于基础介绍、USB概念入门。更深入的内容请参考USB协议手册。部分图文来自参考文…

usb 传输协议

USB,是英文Universal Serial Bus(通用串行总线)、支持设备的即插即用和热插拔功能。在1994年底由英特尔、IBM、Microsoft等公司联合提出的,在此之前PC的接口杂乱,扩展能力差,热拔插不支持等。USB正是为了解…

USB协议(1)USB基础知识

USB(Universal Serial Bus)是通用串行总线的缩写,它是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数…

linux免费的内网穿透

参考:https://www.cpolar.com/blog/how-to-install-cpolar-under-android-termux-hyper-terminal 下载包:https://www.cpolar.com/download 由于我的linux版本是装在安卓手机上的Alpine linux,所以下载的是如下图版本 下载后使用xftp工具上传到服务器&…

钉钉内网穿透 免费内网穿透工具 让你的电脑成为web服务器

什么是内网穿透? 就是让你个人电脑内建立的网站,在外网可以访问,例如你的手机,其他电脑等。 例如你在电脑部署了一个web服务器,你在浏览器访问127.0.0.1可以打开这个网站,但是你用手机访问127.0.0.1却打不…

免费的内网穿透(钉钉)

1.简介 阿里钉钉提供的免费内网穿透,是基于ngrok 的,可以实现 Http 穿透,可以将我们本地服务暴露给外部访问,可以用作我们调试一些回调接口,或者共享一些文件。 优点:网速快,估计是台带宽为100…

免费 内网穿透工具 实测好用

花生壳:已卸载 免费的版本根本不支持http协议,只支持TCP。 星空内网穿透:已卸载 需要注册账号 需要加入QQ群 需要实名认证,填写身份证号 钉钉内网穿透: 没试验,只记录在此 Utools中的内网穿透&#x…

推荐一款真正永久免费的内网穿透

神卓互联内网穿透,是一款真正的永久免费的内网穿透,每月不限流量、访问地址固定不变。 目录 1. 安装神卓互联内网穿透工具 神卓互联内网穿透客户端 控制台-界面清洁-一目了然 2.添加本地web项目-创建映射规则 3.神卓互联-增加通道检测功能&#xff0…

(不打广告)推荐这款永久免费内网穿透软件-神卓互联

内网穿透是一种将内部网络中的应用程序公开到公共网络上的技术。在许多情况下,由于网络安全限制或配置问题,内部网络中的应用程序可能无法通过公共网络访问。这时,内网穿透技术就可以解决这个问题,使得我们可以在没有公共 IP 地址…