UAC简介及对比

UAC简介及对比

什么是UAC/UAD

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

UAC/UAD定义了在USB规范下实现音频的设备的实现和控制功能,这些功能包括不仅音频数字部分的,也包括模拟部分。这些音频数据(模拟和数字)和用于直接控制音频环境的功能,如音量和音调控制。这个音频设备类不包括操作与音频数据的复制,如磁带传输机制或CD-ROM驱动器控制。

“)

ADC(模拟转数字)之前的是模拟部分,之后的是数字部分。

DAC(数字转模拟)之前的是数字部分,之后是模拟部分。

从用户功能来说,主要包括USB麦克风、USB声卡和其它音频设备的功能控制和接口标准,但其内部却有多种复杂的功能。

UAC设备类

根据USB设备类定义,UAC设备的类号为1.

#define USB_DEVICE_CLASS_AUDIO 0x01

UAC和UVC的区别

我们一般购买的USB摄像头,不但包括摄像头本身,大部分情况下也包含一个USB麦克风。这种设备遵循USB通用驱动规范,在Windows下由USB驱用驱动程序USBCCGP.sys实现枚举其子设备。

如笔者手中有一UVC摄像头,在Windows下系统根据其接口关联描述述分别枚举出一个UVC摄像头和一个UAC麦克风。

所以说,UVC和UAC分别对应USB的两种设备类型规范,只是由于在日常使用过程中通常两者一起存在而已。‘

对UVC规范感兴趣的同学可以查看本站的UVC规范1.5教程。

UAC的版本及历史

UAC经历了以下几个版本:

版本

时间

文档

描述

1.0

Mar. 18, 98

Audio10.pdf

Release 1.0

2.0

May. 31, 06

Audio20 final.pdf

Release 2.0

3.0

Sep. 22, 16

Audio30.pdf

Release 3.0

3.0-Errata

Apr. 05, 19

Audio30-Errata.pdf

Release 3.0-Errata

关于Windows对UAC的版本支持,这里有一个讨论:https://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_devices/windows-support-for-usb-audio-20/0d633b9f-3193-4c63-8654-fb10b3614a04?page=1&auth=1

UAC支持版本对比图

UAC2.0由于支持USB High Speed,从而天生带有高带宽、低延时的优势。这些优势转化为对于Hi-Resolution Auido的支持。

UAC1.0最高只支持到双声道192Khz 16b的音源:(2 x 192 x 16) / 1024 = 6Mb = 6Mb/8 = 0.75MB,仅支持USB2.0传输

UAC2.0可以最高支持15声道384Khz 32b的音源:(15 x 384K x 32) /1024 = 180Mb = 18Mb/8 = 3MB,支持USB3.0传输

UAC-USB

Isochronous Endpoint

UAC1

最高速度: ≤8.2Mb/s

UAC2

标准速度: ≤65.5Mb/s 最高速度: ≤196.6Mb/s

UAC2.0协议中提供更多的功能。支持更多的设备描述,增加clock domain、clock description、clock

control支持, 添加sampling rate converter unit支持,

UAC2.0协议文档:[http://dl.project-voodoo.org/usb-audio-spec/USB Audio v2.0/Audio20 final.pdf](http://dl.project-voodoo.org/usb-audio-spec/USB Audio v2.0/Audio20 final.pdf)

在kernel/msm-3.18/sound/usb/mixer.c

/*support for UAC2 effect units */

可以看到驱动代码已经支持UAC2.0了,就看有没有支持UAC2.0的codec做出来了。

采样率48000,位深度 16bit ,通道数2,设备1秒内可以采集到多少音频数据?

48000Hz x 16b x 2ch = 1536000(bit)

(48000Hz x 16b x 2) / 8 = 192000 (Byte) = 192(KB)

192(KB) / 1024 = 0.1875(MB)

设备在一秒内可以采集192KByte数据.

如果16000hz 16bit,计算UAC1.0和UAC2.0理论上最多支持多少通道?

UAC1.0 high speed支持通道数:8.2Mb / (16000 x 16 / 1024 / 1024) = 8.2Mb / 0.25Mb = 32.8 = 32(理论值)

UAC2.0 full speed支持通道数:65.5Mb / (16000 x 16 / 1024 / 1024) = 65.5Mb / 0.25Mb = 262(理论值)

UAC2.0 high speed支持通道数:196.6Mb / (16000 x 16 / 1024 / 1024) = 196.6Mb / 0.25Mb = 786(理论值)

以上部分内容来源于:http://www.cymount.com/news/shownews.php?id=65

UAC3.0的兼容性

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

当然如果为了实现与UAC1.0和UAC2.O版本的兼容,需要做以下几点:

设备的第一个USB配置描述符(索引0)应包含音频接口符合ADC 1.0或ADC 2.0的关联(AIA)。换句话说,如果主机软件选择第一个索引设备配置,设备应显示符合ADC 1.0或ADC 2.0。此要求应允许音频功能与现有主机完全互操作与当前传统ADC 1.0或ADC 2.0函数相同。

使用第二个配置描述符实现UAC3.0。

相关推荐