[wdmaudiodev] Re: VAD woes on Win 10

  • From: "Matthew van Eerde" <dmarc-noreply@xxxxxxxxxxxxx> (Redacted sender "Matthew.van.Eerde" for DMARC)
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Fri, 12 May 2017 13:18:50 +0000

KSEVENTSETID_PinCapsChange should work. If it doesn’t, please file a problem 
report in the Feedback Hub and share a direct link.

https://blogs.msdn.microsoft.com/matthew_van_eerde/2016/09/26/report-problems-with-logs-and-suggest-features-with-the-feedback-hub/

From: Robert Bielik<mailto:Robert.Bielik@xxxxxxxxx>
Sent: Friday, May 12, 2017 6:16 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] FW: VAD woes on Win 10

Hi all,

I'm trying to get my VAD to work on Win 10, it is based on the old msvad 
WaveCyclic example (using Portcls).

In essence the problem is that the device, named "Wave", can change its 
capabilities (#channels, samplerates aso) through a control interface. But with 
the new and fancy caching of capabilities in Windows 10 (which I have no clue 
what the use is for), whenever I change the caps from the first registered 
caps, Sound control panel will not display the "Advanced" tab for the device 
(where samplerates are selected), thereby rendering it useless.

One way to tell Windows that the caps has changed, is through the 
KSEVENTSETID_PinCapsChange event. I post this whenever I bring up the device, 
but alas, Windows does not seem to requery the capabilities. There seems to be 
a bug in this mechanism acc. to these sources 
(https://github.com/eiz/SynchronousAudioRouter/blob/master/SynchronousAudioRouter/control.cpp#L702)
 anyway.

So, the workaround seems to be to change the "Wave" name whenever the caps 
change. So, I thought I'd make a naming scheme "Wave_XXXX" where XXXX is a hash 
combination of #channels + all supported samplerates. But if I do this, Sound 
control panel doesn't show my device at all, probably because the "Wave" name 
that is also specified in the .inf file:
[Strings]
...
KSNAME_Wave="Wave"
KSNAME_Topology="Topology"

[DevInst.<arch>.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Topology%,DevInst.I.Topology
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,DevInst.I.Wave

is not matched in the driver. So, the question is, how do I programmatically do 
an "AddInterface" with the "Wave_XXXX" name so it can popup in the Sound 
control panel ? Or is it possible to have AddInterface in the .inf file with a 
wildcard ?

Regards
/Robert

******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

Other related posts: