[wdmaudiodev] USB Audio Class 2 driver - logical Windows Audio output devices

  • From: Franz Detro <franz.detro@xxxxxxxxxxxxxxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Tue, 9 Jan 2018 10:45:07 +0100

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 
terminal.

The current (common) descriptor publishes

USB Streaming Input Terminal (4 channels) - Feature Unit - Output Terminal 
(Type Speaker)

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 
device.

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!

Regards,
Franz

Other related posts: