[wdmaudiodev] Re: Exposing a topology to Vista

  • From: Hakon Strande <hakons@xxxxxxxxxxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Sat, 5 Apr 2008 16:23:59 -0700

Since I haven't had time to dig into this myself and it is getting 
embarrassingly late for a reply to this guy I thought I'd throw it at a DL to 
see if I could leech someone else's time on this :)

Comments welcome.


Hakon Strande | Windows Sound Team PM | (p) 425.705.0637

-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Daniel E. Germann
Sent: Tuesday, March 11, 2008 1:23 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: Exposing a topology to Vista

Well, yes, we *should* be using descriptors that accurately describe the

device.  But...

If I use type KSNODETYPE_ANALOG_CONNECTOR for my inputs, which worked fine

under Windows XP, it doesn't work in Windows Vista (no record device shown

in dialog).  I have to change to KSNODETYPE_LINE_CONNECTOR.  That isn't such

a big deal, but I needed to change it to get a device that worked fine under

Windows XP to appear under Windows Vista.

On the output side, I had to use type KSNODETYPE_SPEAKER in Windows XP in

order to get the "speaker" icon in the system tray that lets the user get to

the mixer.  I can change that to KSNODETYPE_LINE_CONNECTOR (or

KSNODETYPE_SPDIF_INTERFACE for digital outputs), and that makes things look

nicer in the Windows Vista control panel.  But, like I said, those node

types cause loss of functionality under Windows XP.

We ended up having the driver dynamically change the descriptors at load

time when it detected it was running on Windows Vista.  That way, we can get

a better user experience in both Windows XP and Windows Vista.  I guess the

"silver lining" is that this provided my first opportunity to use (abuse?)

const_cast<>()...  ;-)

But the Really Big Problem for our customers is that Windows Vista has taken

control of sample rate and bit depth away from the part of the system that

knows what it's supposed to be (the application, either from the RIFF header

or a user-selected project setting), moving it instead to a per-input/output

control panel page that's buried three levels deep.  Our multi-channel users

have to drill down to that page for EVERY input and EVERY output to change

the sample rate and bit depth each time they want to run their audio app at

a different sample rate or bit depth.  If they forget (or if they make a

mistake), the OS won't warn them; it'll just monkey with the audio data

(SRC, dithering, truncation, etc.), transforming it from what the user

requested into whatever the control panel is set to (or vice-versa).  The

user won't find out until later, when they discover their audio data isn't

what it's supposed to be.  Of course, then it's too late.

Is there any chance we can get a patch / shim / whatever that lets existing

audio applications control sample rate and bit depth again?  If our

customers ask us, we're currently recommending they stay with Windows XP for

now.  I'd like to not have to do that.

A related question is: I know there's a shim that lets apps get to the mixer

APIs.  And I can right-click on an app and select "Windows XP compatibility

mode", and that'll let the app get to the mixer APIs.  But it seems like

there should be a way to do this at installation time.  Is there an INF

directive I can throw in that'll enable XP compatibility mode for a

particular app?

Best regards,



Dan Germann

Digital Audio Labs

-----Original Message-----

From: Hakon Strande <hakons@xxxxxxxxxxxxxxxxxxxxx>

Date: Mon, 10 Mar 2008 15:47:53 -0700

Subject: [wdmaudiodev] Re: Exposing a topology to Vista

I would like to ask the community to please use the exact ksnodetype that

matches the device you are connecting to Windows. These form factor hints

are used by the system for policy decisions. If the logical device is a pair

of headphones then please use the KSNODETYPE that matches that form factor

device (in that case KSNODETYPE_HEADPHONES)

You can read more about how device topology works in Windows Vista here:




More info relating to Windows Vista and audio:




Hakon Strande<mailto:HakonS@xxxxxxxxxxxxx> | Windows Sound Team PM | (p)



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



Other related posts: