Audio driver issues, "no speakers or headphones are plugged in"

I’m working on an audio driver for my GPU, based on Microsoft’s sysvad sample driver, and am running into some bizarre behavior that I haven’t been able to find a solution for.

My driver declares both a WaveRT and a Topology filter, both of which I can correctly instantiate inside of KS Studio and both of which validate without issue. When my driver is installed, a new output device is also created and I can select it in the Sound settings in the UI. However, its volume is permanently fixed to zero and the taskbar sound icon shows an X. Hovering over it reports “No speakers or headphones are plugged in.”

My Topology filter’s property handler handles the KSPROPERTY_JACK_DESCRIPTION, KSPROPERTY_JACK_DESCRIPTION2, and KSPROPERTY_JACK_SINK_INFO properties, and reports that the connection status is connected.

When the driver is first installed and when I attempt to change the volume, I see it checking the WaveRT instance for supported formats, finding one, creating a new instance of my WaveRTStream class, triggering an allocation through AllocateBufferWithNotification, and then immediately freeing that same buffer, closing the stream, and repeating the process. It does this a dozen or so times before stopping and going idle. I never get calls to change the stream’s state or anything else that indicates it’s trying to do something that I’m not handling properly to cause this behavior.

Does anyone have any idea what might be going on here? Is there any way for me to have Windows report additional information about the behavior of the audio systems that might help me track down what I’m doing wrong?

Thanks!

Which pins did you implement jack descriptions for? A topo filter usually has 4 pins, but only the pins for the physical endpoints (mic in, line out) get jack descriptions.

As always, I would suggest you ask your question on the [wdmaudiodev] list at https://www.freelists.org/list/wdmaudiodev . That’s where the cool audio kids hang out, including two members of the Microsoft audio team who have proven to be an incredible resource over the years.

In my case, the topo filter only has two pins - an input from the WaveRT and an output that represents the physical HDMI output port. Only the HDMI output port pin responds to the jack description properties. I am not doing any audio capturing, so there are no pins representing data flowing into and through the filter.

I had no idea that wdmaudiodev list existed, but I’m signed up and will definitely check there!

Thanks!