[wdmaudiodev] Re: Exposing a topology to Vista

  • From: "Daniel E. Germann" <deg@xxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 11 Mar 2008 15:22:55 -0500

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
--
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:

http://ampalliance.org/files/folders/summit_decks/entry53.aspx

[cid:image001.png@01C882C6.1A0A5780]

[cid:image002.png@01C882C6.1A0A5780]

More info relating to Windows Vista and audio:

http://ampalliance.org/blogs/microsoft/archive/2007/08/14/Microsoft-AMP-Summ
it-Decks.aspx

Sincerely,

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

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

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: