With the latest fixes the USB Audio Class 2 driver now seems to work reliably
with most of our USB audio devices, but unfortunately the logical output
topology is not propagated into the Windows Audio system.
A typical example is a 2 in / 4 out audio interface, where the first two
outputs are the Line Output and the second two output the Headphone Output.
I understand that the Windows driver parses the Audio Class descriptor and
derives the Windows Output Device name from the wTerminal value of the Output
Terminal. The number of channels is derived from the USB Streaming input
The current (common) descriptor publishes
USB Streaming Input Terminal (4 channels) - Feature Unit - Output Terminal
which results in a single Speaker output device with four channels. With this
layout the user is not able to route any audio to the Headphone channels of the
A more reasonable layout would be
+- Mixer Unit (4 in / 2 out) -
External Terminal (Line Connector)
USB Streaming Input Terminal (4 channels) -+
+- Mixer Unit (4 in / 2 Out) -
Output Terminal (Type Headphones)
with the mixer extracting the matching channels (1/2 or 3/4) for the Line
Output and Headphone Output.
Experiments using this layout are successful regarding appearance of the output
devices in the system, but not regarding the right signals being sent to the
right logical output (it seems that the driver always only uses the first two
USB streaming channels with both output devices).
Is this a bug in the Audio Class driver? If not, what is the recommended way to
model such common cases? Is it possible to provide a device specific INF file
describing the device topology?
Does anybody on this list knows a device that publishes its logical output
topology trough Windows stock drivers in the audio system?
Any input is very welcome!