UAC1.0和UAC2.0区别
传统3.5mm模拟耳机逐步被USB数字耳机代替。采用USB协议进行音频播放使用USB Audio Class协议(简称UAC).
UAC2.0由于支持USB High Speed,从而天生带有高带宽、低延时的优势。这些优势转化为对于Hi-Resolution Auido的支持。
UAC1.0最高只支持到双声道192Khz 16b的音源:(2 x 192 x 16) / 1024 = 6Mb = 6Mb/8 = 0.75MB
UAC2.0可以最高支持15声道384Khz 32b的音源:(15 x 384K x 32) /1024 = 180Mb = 18Mb/8 = 3MB
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%20Audio%20v2.0/Audio20%20final.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(理论值)