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中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

MySQL连表查询之笛卡尔积查询的详细过程讲解

《MySQL连表查询之笛卡尔积查询的详细过程讲解》在使用MySQL或任何关系型数据库进行多表查询时,如果连接条件设置不当,就可能发生所谓的笛卡尔积现象,:本文主要介绍MySQL连表查询之笛卡尔积查... 目录一、笛卡尔积的数学本质二、mysql中的实现机制1. 显式语法2. 隐式语法3. 执行原理(以Nes

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、