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

相关文章

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

ispunct函数讲解 <ctype.h>头文件函数

目录 1.头文件函数 2.ispunct函数使用  小心!VS2022不可直接接触,否则..!没有这个必要,方源一把抓住VS2022,顷刻 炼化! 1.头文件函数 以上函数都需要包括头文件<ctype.h> ,其中包括 ispunct 函数 #include<ctype.h> 2.ispunct函数使用 简述: ispunct函数一种判断字符是否为标点符号的函

深度学习速通系列:深度学习算法讲解

深度学习算法是一系列基于人工神经网络的算法,它们通过模拟人脑处理信息的方式来学习和解决复杂问题。这些算法在图像识别、语音识别、自然语言处理、游戏等领域取得了显著的成就。以下是一些流行的深度学习算法及其基本原理: 1. 前馈神经网络(Feedforward Neural Networks, FNN) 原理:FNN 是最基本的神经网络结构,它由输入层、隐藏层和输出层组成。信息从输入层流向隐藏层,最

C#设计模式(1)——单例模式(讲解非常清楚)

一、引言 最近在学设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二同时可以给一些初学设计模式的朋友一些参考。首先我介绍的是设计模式中比较简单的一个模式——单例模式(因为这里只牵涉到一个类) 二、单例模式的介绍 说到单例模式,大家第一

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有