UAC协议讲解

2023-11-30 17:18
文章标签 讲解 协议 uac

本文主要是介绍UAC协议讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介

UAC是USB Audio Class的缩写,有时也叫UAD,UAD是USB Audio Device的缩写。

UAC/UAD定义了在USB规范下实现音频的设备的实现和控制功能,这些功能包括不仅音频数字部分的,也包括模拟部分。这些音频数据(模拟和数字)和用于直接控制音频环境的功能,如音量和音调控制。这个音频设备类不包括操作与音频数据的复制,如磁带传输机制或CD-ROM驱动器控制。
UAC 目前的发展已经经历了1.0 ,2.0 到现在的3.0.
win10目前只支持到UAC2.0

注意:UAC3.0不兼容以前的任何版本。

在这里插入图片描述

UAC2.0 和UAC1.0 支持的功能对比图

在这里插入图片描述

二、UAC 传输速率

UAC1 最高实际速度: ≤ 7.8Mbs(1024 x 8 x 1000 )bit/s
UAC2 标准实际速度: ≤ 62.5Mbs(1024 x 8 x 1000 x 8 )bit/s 最高实际速度: ≤187.5Mbs(1024 x 8 x 1000 x 8 x 3)Mb/s
注意:UAC1.0 spec 规定每隔1ms 可以发送一笔数据, High speed 下单笔数据是1024Byte, 因此最大为 (1024 x 8 x 1000 )bit/s

UAC2.0 spec 是可以每隔125us 发送一笔数据, High speed 下标准为单笔数据是1024Byte, 因此最大为 (1024 x 8 x 1000 x 8 )bit/s
最大情况: 单次可以发送 3 笔数据, 所以为(1024 x 8 x 1000 x 8 x 3)bit/s
在这里插入图片描述
在这里插入图片描述

三、UAC音频设备的接口的分类

对于每一个USB配置描述符,可能含有多个USB接口描述描述符,同时这些接口描述符可能每个接口描述符又包含多个转换接口描述符。
这些接口描述符可能每一个接口描述符实现的是不同的独立的功能或者多个接口描述符组合实现一些设备功能。

在这里插入图片描述

UAC 音频设置也有独立的接口描述符,这些多接口配合实现的UAC设备接口,分为两种,分别叫做UAC音频控制接口和UAC音频流接口。

UAC音频控制接口:用于实现UAC音频控制接口及拓扑结构的枚举。
UAC音频流接口:用于音频数据流的传输。

下图为USB Microphone 的拓扑图,IT 为输入终端,OT为输出终端

在这里插入图片描述
usb 枚举信息的结构如下,主要有两个接口分别为: 音频控制接口和音频流接口 :
在这里插入图片描述


UAC音频控制接口
为了控制特定音频功能的功能行为,主机可以操纵时钟实体、单元以及音频功能内部的终端。为了使这些对象可访问,音频功能应提供单音频控制接口。

UAC音频流接口
UAC音频流接口用于传输音频流数据。一个UAC音频设备可以有多个音频流接口,每个音频流接口可以传输不同的音频数据格式。每一个音频流接口只能有一个等时传输端点,这样保证的是数据的传输与端点相关。
音频流接口包含转换接口进行音频流的切换。但至少包含一个转换接口为0的零带宽即不传输音频流接口和一个包含实际传输数据的转换接口1。


音频控制(AC)接口描述符 UAC1.0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特有类AC接口描述符 UAC1.0

特有类音频接口控制描述并不是指某个特定的描述符,而是一系列描述音频功能的描述符集合的总称。

这些描述符包括:单元描述符(UD)、以及终端描述符(TD)。这些描述符是UAC特有类的描述符,由UAC协议定义。因此,描述符集合的总长度与音频功能中定义的时钟实体、单元实体和终端的个数有关。

特有类AC接口描述符集合用一个头描述符作为开头,头描述符描述了集合的总长、音频设备类规范版本、功能类型等。所以,首先要解析的是特有类AC接口头描述符。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输入终端描述符(ITD)

UAC输入终端描述符全称:Input Terminal Descriptor,简称ITD.
输入终端描述符用于向主机提供输入终端的相关信息,这个概念和UVC摄像头的输入终端描述符类似。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输出终端描述符(OTD)

UAC输出终端描述符:Output Terminal Descriptor,简称OTD,用于向主机提供输出终端的相关信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单元描述符(UID)

单元实现了USB音频的基本功能,音频设备的整体功能是由一个个单元级联起来实现的。

单元描述符分为:混音单元描述符、选择单元描述符、特征单元描述符、采样率转换单元描述符、效果单元描述符、处理单元描述符和扩展单元描述符。

效果单元描述符又可以细分为:参数均衡器效果单元描述符、回响效果单元描述符、调制延迟效果单元描述符、动态范围压缩效果描述符。

处理单元描述符又可分为:上/下混合处理单元描述符、杜比音效逻辑处理单元描述符、立体声扩展处理单元描述符。

特征单元描述符(Feature Unit Descriptor)描述了该特征单元前序连接的输入终端上每个通道(声道)可被配置的功能列表。比如:音量控制、静音、声道平衡等等,这是开发USB 音频设备最常用的描述符。

特征单元描述符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

音频流(AS)接口描述符

音频流接口用于主机和设备之间交换音频数据流,接口下一般会存在两个这样的端点:

(1)音频传输端点:用于传输音频流

(2)音频同步端点:传输同步信息

为了支持多种音频流格式、采样率、传输带宽和其他属性,一个USB音频设备的音频流接口描述符都包含多个接口可替换设置(Alternate Setting)。

例:有一个音频设备,其控制接口(AC)用来控制音量的;音频流接口(AS)用来传输音频数据。那么音频流接口可以有多种可替换设置:

(1)可替换设置0:单声道模式,16KHZ采样率,24位量化,在该设置的音频类数据格式描述符中设置这些值,然后在音频流传输端点上就可以传输对应格式的单通道的音频数据。

(2)可替换设置1:立体声双声道模式,48KHZ采样率,16位量化,在该设置的音频类数据格式描述符中设置这些值,然后在音频流传输端点上就可以传输对应格式的单通道的音频数据。

(3)音频流接口描述符包括:标准音频流接口描述符 和 音频类特有音频流接口描述符。

标准AS接口描述符

UAC音频流接口描述符包含与音频数据流相关的描述符信息。

标准音频流接口描述符,Standard AS Interface Descriptor是音频流接口描述符的第一个描述符。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特定类AS接口描述符

特定类音频流接口描述符:Class-Specific AS Interface Descriptor.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特有类音频流数据格式描述符

类特有数据格式描述符:Class-Specific AS Format Type Descriptor

数据格式描述符主要描述音频流的通道数、位分辨率、采样率等信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面以Type I 为例,type I 在USB 音频设置中很常见:

(1)Type I数据流格式简介:
Type I信号就是标准的PCM码。
按照物理时序,对音频流进行采样,每一个采样点用一个数据表示,最终的音频信号是把这些连续的采样数据进行AD转换后得到的波形。

(2)音频子帧(Audio Subframe)是传输音频的最基本单位[单位:字节],一个音频子帧就是一个采样点,大小一般是1、2、3或者4个字节(量化之后的量化值,编码的时候,用几个字节来表示),使用字段bSubframeSize来表示。

(3)一个音频子帧数据,使用二进制表示的时候,二进制的位数就是bBitResolution(bBitResolution的单位是:bit—位)。所以,bBitResolution和bSubframeSize存在如下关系:

bBitResolution ≤ bSubframeSize * 8
标准等时音频数据端点描述符

标准等时音频数据端点描述符:Standard AS Isochronous Audio Data Endpoint Descriptor
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

类特定等时音频数据端点描述符

类特定等时音频数据端点描述符:Class-Specific AS Isochronous Audio Data Endpoint Descriptor,用于描述标准音频传输端点的属性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


UAC 特定类请求

最后讲一下UAC 特定类请求的格式
特定类请求一般用于设置或获取音频控制。这些控制又分为两大部分:

音频控制请求:对音频控制单元或终端进行控制。
音频流请求: 如对音频流控制的请求,如音频采相率等。

音频设备类也支持其他特定于类的请求:

内存请求(Memory Request):每个可寻址的实体或终端,可导出一个内存映射接口。提供对该实体内存单元的读写控制。
Get Status 请求:对音频控制单元,终端,音频流接口或其它不可操作的状态请求。

在这里插入图片描述

以设置当前音量为例:
在这里插入图片描述

在这里插入图片描述
以获取当前音量为例:
在这里插入图片描述

在这里插入图片描述

这篇关于UAC协议讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/437862

相关文章

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

基于Java医院药品交易系统详细设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人  Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通

数据结构:二叉树详解 c++信息学奥赛基础知识讲解

目录 一、二叉树的定义 二、二叉树的形态 三、二叉树的性质 四、二叉树的存储 五、二叉树的创建与遍历(递归) 六、二叉树实现 创建二叉树 展示二叉树 1、计算数的高度 2、计算数的叶子数量 3、计算数的宽度 4、层次遍历 5、前序遍历 递归写法 非递归写法 6、中序遍历 递归写法 非递归写法 7、后序遍历 递归写法 非递归写法 8、输出根节点到所有叶

49-1 内网渗透 - Bypass UAC介绍

一、Bypass UAC         用户账户控制(UAC)是Windows操作系统的一种安全机制,旨在防止未经授权的应用程序自动安装并防止非授权修改系统设置。它确保应用程序和任务通常在非管理员账户的安全上下文中运行,除非明确需要管理员权限,用户才会被提示确认。         对于非RID 500的管理员用户(除了内置的Administrator账户),当他们登录时,系统会为其分配两个访

视频监控平台:支持交通部行业标准JT/T905协议(即:出租汽车服务管理信息系统)的源代码的函数和功能介绍及分享

目录 一、视频监控平台介绍 (一)概述 (二)视频接入能力介绍 (三)功能介绍 二、JT/T905协议介绍 (一)概述 (二)主要内容 1、设备要求 2、业务功能要求 3、技术功能要求 4、性能要求 5、接口要求 6、设备通信协议与数据格式 三、代码和解释 (一)代码和注释 (二)函数功能说明 1. 头文件保护 2. 包含必要的头文件 3. 引入命名空间std

计算机网络协议常考点!!!

应用层协议 HTTP协议 基于TCP协议,是一种用于传输超文本和多媒体内容的协议,主要是为浏览器之前的通信而设计的; get请求和post请求区别 请求参数位置不同:get会将请求参数放在URL后面并通过&运算符连接,而post提交会将请求参数放在请求体里; 请求数据量不同:get的请求参数会受到浏览器对URL最大长度的限制,而post是将请求参数放在请求体中,可以请求大量数据; 安全

网络编程篇:HTTP协议

一.预备知识 在客户端访问服务端时,要用ip+port,但是在日常用户访问服务端的时候,并不会直接使用ip,而是使用域名,比如:百度(www.baidu,com)。                                                                                    在浏览器处理时,会将域名解析为对应的ip+port。

springboot+vue+mybatis旅游管理+PPT+论文+讲解+售后

随着人民生活水平的提高,旅游业已经越来越大众化,而旅游业的核心是信息,不论是对旅游管理部门、对旅游企业,或是对旅游者而言,有效的获取旅游信息,都显得特别重要.旅游管理系统将使旅游相关信息管理工作规范化、信息化、程序化,提供旅游景点、旅游线路,旅游新闻等服务本文以jsp为开发技术,实现了一个旅游网站系统。旅游网站系统的主要使用者分为管理员和用户,管理员权限如下;主页、个人中心、景点分类管理、景点信息