是否可以将USB音频设备设置为看起来像多个设备?

是否可以将USB音频设备设置为看起来像多个设备?,usb,audio-streaming,Usb,Audio Streaming,我正在开发一款基于iMXRT1060的USB音频设备,目前可以配置为2-spkr/2-mic设备或6通道麦克风阵列。无论哪种情况,我都可以使用“arecord-l”(在Linux主机上)来显示卡/设备信息,如下所示: card 1: Text [MoreText], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Text [MoreText], device 0: U

我正在开发一款基于iMXRT1060的USB音频设备,目前可以配置为2-spkr/2-mic设备或6通道麦克风阵列。无论哪种情况,我都可以使用“arecord-l”(在Linux主机上)来显示卡/设备信息,如下所示:

card 1: Text [MoreText], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Text [MoreText], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Text [MoreText], device 1: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
这很好,但我的目标是将此设备显示为两个虚拟输入设备(设备0:2-mic和设备1:6-mic),如下所示:

card 1: Text [MoreText], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Text [MoreText], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Text [MoreText], device 1: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
因此,两个不同的Linux程序可以使用ALSA独立地连接到两个不同的输入设备。我一直认为这主要是一个正确设置描述符的问题,但由于我已经有几天没能做到这一点,我现在想知道我是否试图在USB中做一些非法的事情。
有什么想法吗?

我在这里回答我自己的问题。。。 显然,从UAC2开始,就有了“音频接口集合”的概念。 以下是“音频设备的USB设备类定义”文档中的一个片段:

单个音频控制接口和 属于同一接口的音频流和MIDI流接口 音频功能称为音频接口集合(AIC)。A. 设备可以同时激活多个音频接口集合 同时。这些集合用于控制多个独立的 音频功能位于同一复合设备中。音频 接口收集通过标准USB接口进行描述 关联机制,通过 接口关联描述符(IAD)

IAD是实现这一点的关键,在这一点上我可以说,带有两个IAD(以及相应的AIC)的描述符实际上导致Linux在一个声卡中显示两个设备