一、UAC简介
UAC(USB Audio Class)是USB设备的音频类,它定义了USB音频设备与主机计算机通信的方式。UAC标准是USB规范的一部分,并受到各种操作系统(包括Windows、macOS和Linux)的支持。
UAC是基于libusb,实现对外接音频操作,从用户功能来说,主要包括USB麦克风、USB声卡和其它音频设备的功能控制和接口标准。
二、UAC标准的主要功能包括:
(1)设备枚举和配置: UAC标准定义了USB音频设备如何由主机计算机枚举和配置。这包括识别设备,确定其功能以及加载相应的驱动程序。
(2)音频数据传输: UAC标准定义了音频数据如何在USB音频设备和主机计算机之间传输。这包括设置采样率、位深度和通道数,以及传输音频数据包。
(3)控制和功能支持: UAC标准定义了一套标准控件和功能,由USB音频设备支持。这包括音量控制、静音和增益控制,以及更高级的功能,例如混音器路由和效果处理。
三、UAC设备可用于多种目的,包括:
(1)录音: UAC设备可用于从麦克风或其他模拟源录制音频。
(2)播放: UAC设备可用于从数字源(例如计算机或媒体播放器)播放音频。
(3)处理: UAC设备可用于处理音频,例如应用效果或混合多个源。
UAC是一种通用且广泛支持的标准,可轻松将USB音频设备连接到计算机。 因此,UAC设备通常用于各种应用,包括音乐制作、家庭影院和游戏。
四、以下是使用UAC标准的一些USB设备示例:
(1)USB麦克风: USB麦克风是录音的流行选择,因为它们易于使用并提供高品质的声音。
(2)USB耳机: USB耳机通常用于VoIP通话和游戏,因为它们提供麦克风和扬声器功能。
(3)USB DAC: USB DAC(数字模拟转换器)将来自计算机的数字音频信号转换为模拟信号,可由扬声器或耳机播放。
(4)USB音频接口: USB音频接口是多功能设备,可用于各种目的,例如录音、播放和处理音频。
五、UAC设备类
六、USB音频子类
USB音频类定义在接口层,而USB音频类又分为不同的子类(SubClass)以便于进一步的细节枚举和设置。所有的USB音频功能都被包括在USB音频类的子类中。USB定义了3种不同的音频子类:
(1) AudioControl Interface Subclass 音频控制接口子类
(2) AudioStreaming Interface Subclass 音频流接口子类
(3) MIDIStreaming Interface Subclass MIDI流接口子类
七、USB标准描述符
在USB设备的逻辑组织中,包含devices、config、interface和endpoint4个层次。
根据usb描述符相关知识得知,usb有config,然后下面有多个interface,interface下面有多个endpoint。根据interface的class和subclass值可以区分interface类型,比如video的class值是14,audio的class值是1等,根据这个可以识别复合设备的interface。然后每个interface下面有多个endpoint,endpoint存在address,这个是数据传输的通道。每个endpoint存在不同的数据格式,比如我在项目中使用的多个usb麦克风,有的MIC每个endpoint对应一种格式,比如双通道/16位/48KHZ。但也有一个endpoint对应多种格式的
UAC使用以下协议进行通信:
USB控制传输协议(Control Transfer Protocol): 控制传输协议用于设置设备参数和监控设备状态。
USB批量传输协议(Bulk Transfer Protocol): 批量传输协议用于传输音频数据。
USB中断传输协议(Interrupt Transfer Protocol): 中断传输协议用于传输状态消息。