[wdmaudiodev] Re: Exposing a topology to Vista

  • From: Hakon Strande <hakons@xxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Sun, 6 Apr 2008 20:38:58 -0700

Well, that was embarassing. At least you all can see I am trying to get back to 
Daniel on this.
Thanks for not laughing too hard :-)

From: hakons@xxxxxxxxxxxxxxxxxxxxxxx: wdmaudiodev@xxxxxxxxxxxxxxxxx: Sat, 5 Apr 
2008 16:23:59 -0700Subject: [wdmaudiodev] Re: Exposing a topology to Vista

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 J
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. GermannSent: 
Tuesday, March 11, 2008 1:23 PMTo: wdmaudiodev@xxxxxxxxxxxxxxxxxxxx: 
[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
Use video conversation to talk face-to-face with Windows Live Messenger.

Other related posts: