[wdmaudiodev] Re: [EXTERNAL] trouble preventing device to become Windows' default audio device

  • From: "noise@xxxxxxxx" <noise@xxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Wed, 24 Feb 2021 22:13:37 +0100

Gary, thank you very much for the detailed information! I wish such an 
explication would make it to the MSDN...

It seems MS did spent a lot of effort into trying to make a guessing what a 
connected device is intended for. And in that tremendous effort it seems to 
neglect the obvious: let the device at least state whether itself thinks its 
suitable to become a default device with all its "burden"...

Can you explain what you mean by "all endpoints of another device instances 
disappear by doing so"?
Well, my device has two endpoints, a render and a capture one. One just 
disappears if not set to "LineLevel", any other driver instance does not make 
it to have an audio endpoint at all.

I verified this with sysvad and it behaves the same (except, that sysvad only 
allows a single instance).

Viele Grüße/Cheers,
Hagen.

On 23.02.2021, at 23:46, Gary Daniels (Redacted sender "Gary.Daniels" for 
DMARC) <dmarc-noreply@xxxxxxxxxxxxx> wrote:

Can you explain what you mean by "all endpoints of another device instances 
disappear by doing so"?

PKEY_AudioEndpoint_FormFactor is created by AudioEndpointBuilder when the 
endpoint is created. There's no way for a driver or application to directly 
modify this key and doing so by overriding permissions would result in 
undefined behavior.

AudioEndpointBuilder derives the form factor from the KSNODETYPE/terminal 
type returned by the driver, so to change the form factor the driver would 
have to change the ksnodetype/terminal type reported to Windows. Changing 
what the driver reports for this value on one device wouldn't impact any 
other devices, so i don't see how "all endpoints of another device instances 
disappear". Changing the form factor will affect the rank for the endpoint 
and can make it less likely the endpoint would become default.

This blog is a little out of date and there's more to the story.

Here is the current algorithm:

The driver is installed, and AudioEndpointBuilder creates the audio endpoint
During endpoint creation the form factor, jack location, jack detection, etc. 
as outlined by Matthew's blog are used to calculate a rank for the endpoint
communications endpoints, like telephone and speakerphone, are down-ranked 
for console default
communications endpoints, like telephone and speakerphone, are up-ranked for 
communications default
If no user default has ever been selected, then the endpoint with the highest 
rank is selected as default, and that is the end of it
If you report a form factor like "line level" or SPDIF, those form factors 
are ranked toward the bottom and would be less likely to become default

But, how does user default selection affect the default? Matthew's blog says 
nothing about this, but it will affect you in this case.

Whenever a user manually selects a default endpoint the OS adds the selection 
to a tree of past selections. This tree keeps account of what endpoints were 
available at the time that the selection was made. 

Logically, you can think of it this way. If you manually select speaker 
instead of bluetooth, that does not mean that you want to use speaker instead 
of the USB headphones that weren't plugged in at the time you selected 
speaker over bluetooth. It also does not mean you want to use speaker always 
and forever from that day forward (which is what Windows 7 does when you 
select a default).  When the USB headphones are attached at some later day, 
Windows needs to reevaluate the default, giving the newly attached USB 
headphones the possibility of becoming default.

When the default selection algorithm encounters a newly attached device which 
was not present when a user previously selected the default, the algorithm 
gives preference to this newly attached device unless the device is 
down-ranked for the role. Based on user studies, we found there is a strong 
expectation by users that newly attached hardware becomes the default, 
regardless of what was selected at some point in the past. This algorithm 
reflects that user expectation, but also ensures that a telephone wouldn't 
become the default console endpoint just because it was plugged in after a 
manual selection.

Also, when a wrong decision is made, which is inevitable when you're talking 
about user preferences and not technical requirements, it is best err on the 
side of switching to something new when that new item is connected. The user 
will be aware of a newly installed device when it is installed, and if audio 
immediately moves to this newly installed device they will quickly make the 
connection and correct it if they don't want it as default. Once they correct 
it, Windows will store the preference in the tree and they shouldn't ever 
have to communicate that preference again. The Windows 7 solution, where 
manually selecting the speaker as the default 10 months ago prevented all 
newly attached devices from ever becoming the default, caused a lot of 
confusion with users partly because they did not make the connection between 
the device being plugged in not working, and their selection many months, or 
years, in the past of the speaker as the default. 

So, what does this all mean for you. There does not exist a down-ranked form 
factor for both console and communications, so there is no way to mark your 
device to always be avoided by the default selection algorithm. No matter 
what form factor is selected, it will always have the potential to 
automatically become the default. If you were to select a communications form 
factor, like telephone, then you could guarantee that it will never become 
the console default because it is down-ranked for console. However, it would 
always become the communications default that is used by Teams, Skype, Zoom, 
etc.


Gary Daniels
Senior SDE
Microsoft Windows Audio

Sent from Outlook
From: wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx> on 
behalf of noise@xxxxxxxx <noise@xxxxxxxx>
Sent: Tuesday, February 23, 2021 8:02 AM
To: wdmaudiodev@xxxxxxxxxxxxx <wdmaudiodev@xxxxxxxxxxxxx>
Subject: [EXTERNAL] [wdmaudiodev] trouble preventing device to become 
Windows' default audio device

Hi,

according to Matthews outline of the Windows default audio device evaluation 
process at
https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmatthewvaneerde.wordpress.com%2F2014%2F03%2F24%2Ftroubleshooting-default-audio-device-heuristics%2F&amp;data=04%7C01%7CGary.Daniels%40microsoft.com%7C1b6ed5fe0d2c41eb778208d8d8147049%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637496930445878539%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=qNpAxGLFN%2BQAtqesURX1MlC5GRgS8KQa%2FTBg%2BJJG7dU%3D&amp;reserved=0

its possible to kind of "downvote" a device by setting 
PKEY_AudioEndpoint_FormFactor of the endpoint to something “unattractive” for 
a default device to Windows.

This works, however all other endpoints of the same and all endpoints of 
another device instances disappear by doing so.
I guess there is some misunderstanding on my side here.

Any hint or advice of how to make a device unattractive enough to Windows to 
not being automatically selected, while still allowing the user to make it 
the default on its on wish are highly appreciated!

Thanks & viele Grüße/Cheers,
Hagen.
******************

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:
https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.wdmaudiodev.com%2F&amp;data=04%7C01%7CGary.Daniels%40microsoft.com%7C1b6ed5fe0d2c41eb778208d8d8147049%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637496930445888533%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=vZzbmtgY4urrYGeeFia%2FoXWx%2FEoaybBpx54yXB7Hk1g%3D&amp;reserved=0



Viele Grüße/Cheers,
Hagen.
__________________
dynamic acoustics e.U.
Weyringergasse 37/3/11a
1040 Vienna / Austria
+43 680 1268 751

FN: 326751t

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

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: