[wdmaudiodev] Re: Can I identify my audio endpoint?

  • From: Mitchell Rundle <mitchr@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Fri, 27 Oct 2006 10:49:36 -0700

They accomplish exactly the same thing but one is intended for "registering" a 
sysfx ui extension and the other is for registering a "normal" endpoint ui 
extension.  Since the contract associated with the IShellPropSheetExt::AddPages 
method is slightly different between the two types (the LPARAM argument points 
to a different structure) we decided to have 2 different propertykeys.

Mitch

-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Michael R. Preston
Sent: Friday, October 27, 2006 10:07 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: Can I identify my audio endpoint?

So what's the difference between PKEY_SYSFX_UiClsid (used in the FX
property store) and PKEY_AudioEndpoint_Ext_UiClsid (used in the endpoint
property store)?

Mike

Mitchell Rundle wrote:
> Jeff, it sounds like you have it.
>
> Michael, in your case only the speakers propertystore is populated because of 
> this entry:
>
>         HKR,"EP\\0",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_SPEAKER%
>
> If you want all endpoints populated, then change that line to
>
>         HKR,"EP\\0",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
>
> On the other hand, let's say you want to add a different endpoint 
> propertypage extension for each of the endpoints (speakers, headphones, 
> spdif).  In this case, (as Jeff alluded to) do something like
>
>         HKR,"EP\\0",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_SPEAKER%
>         
> HKR,"EP\\0",%PKEY_AudioEndpoint_Ext_UiClsid%,,%AUDIOENDPOINT_EXT_UI_CLSID_FORSPEAKERS%
>
>         HKR,"EP\\1",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_HEADPHONES%
>         
> HKR,"EP\\1",%PKEY_AudioEndpoint_Ext_UiClsid%,,%AUDIOENDPOINT_EXT_UI_CLSID_FORHEADPHONES%
>
>         
> HKR,"EP\\2",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_SPDIF_INTERFACE%
>         
> HKR,"EP\\2",%PKEY_AudioEndpoint_Ext_UiClsid%,,%AUDIOENDPOINT_EXT_UI_CLSID_FORSPDIF%
>
> I realize this is all a bit cludgey...  Basically, you are creating transient 
> groups of registry properties that will be used by something that doesn't 
> exist at device setup time, namely the audio endpoints.  When the endpoints 
> are "created", the AudioEndpointBuilder service looks for these "EP\n" and 
> "FX\n" entries, correlates with the pin category and if there's a match 
> copies the properties into the new endpoint and fx propertystores en masse.
>
> Let me know if this is still unclear.  I'll add to the list of things that 
> needs more documentation and/or utilities.
>
> Regards,
> Mitch Rundle
> Microsoft Corporation
>
> -----Original Message-----
> From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jeff Pages
> Sent: Thursday, October 26, 2006 4:05 PM
> To: wdmaudiodev@xxxxxxxxxxxxx
> Subject: [wdmaudiodev] Re: Can I identify my audio endpoint?
>
> Hi Mike,
>
> I don't know whether what I've done is the right thing or not (this stuff
> doesn't seem to be documented anywhere yet apart from in the SysFx example),
> but I have multiple endpoints that I needed to set the default sampling rate
> and bit depth on, so in the [OEMSettingsOverride.AddReg] section I just
> referred to the endpoints as EP\\0, EP\\1, EP\\2, etc. and it seemed to
> work.
>
> Jeff
>
> ----- Original Message -----
> From: "Michael R. Preston" <mike@xxxxxxxxxxxxxxxxxxx>
> To: <wdmaudiodev@xxxxxxxxxxxxx>
> Sent: Friday, October 27, 2006 8:45 AM
> Subject: [wdmaudiodev] Re: Can I identify my audio endpoint?
>
>
>
>>Frank, see my questions below.  I want to answer Ally's question first,
>>then I have a question for you...
>>
>>In the INF file that came with the Swap APO sample code, there are
>>examples of how to put values into both the FX property store, and the
>>endpoint property store.  Entries to go into the FX property store get a
>>label of "FX\\0", and entries to go into the endpoint property store get a
>>label of "EP\\0".  The following is taken from the aforementioned INF
>>file:
>>
>>;;
>>;; All FX\\0 entries in the same grouping
>>;;
>>[SysFx.AddReg]
>>HKR,"FX\\0",%PKEY_DisplayName%,,%SYSFX_FriendlyName%
>>HKR,"FX\\0",%PKEY_SYSFX_PreMixClsid%,,%SYSFX_PREMIX_CLSID%
>>HKR,"FX\\0",%PKEY_SYSFX_PostMixClsid%,,%SYSFX_POSTMIX_CLSID%
>>HKR,"FX\\0",%PKEY_SYSFX_UiClsid%,,%SYSFX_UI_CLSID%
>>HKR,"FX\\0",%PKEY_SYSFX_Association%,,%KSNODETYPE_ANY%
>>
>>;;
>>;; All EP\\0 entries in the same grouping
>>;;
>>;; Set default format to 48kHz, 16-bit, Stereo
>>;; Add endpoint extension property page
>>;;
>>[OEMSettingsOverride.AddReg]
>>HKR,"EP\\0",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_SPEAKER%
>>HKR,"EP\\0",%PKEY_AudioEngine_OEMFormat%,%REG_BINARY%,41,00,8C,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,EE,02,00,04,00,10,00,16,00,10,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71
>>HKR,"EP\\0",%PKEY_AudioEndpoint_Ext_UiClsid%,,%AUDIOENDPOINT_EXT_UI_CLSID%
>>
>>
>>The reason I'm bringing this up, is that I think there may be a problem
>>with this mechanism.  I'm running on a system with more than one playback
>>endpoint (Speakers, Headphones, and S/PDIF).  I can see entries destined
>>for the FX property store get populated for all endpoints. However,
>>entries destined for the endpoint property store only seem to get
>>populated for the first (default) endpoint.  Frank, is this a known
>>problem?  Any comments or suggestions?
>>
>>Thanks,
>>Mike
>>
>>Alexandra Schoepel (Ally) wrote:
>>
>>>Hi Frank,
>>> Regarding setting a special property to help us locate our endpoint: as
>>>far as I can tell, the sysfx example adds properties to the FX PROPERTIES
>>>key in the registry, but not the 'standard' one, e.g.
>>> ..\MMDevices\Audio\Render\{DS GUID}\Properties\
>>> Am I missing something, or does the example only demonstrate adding
>>>properties for the effects?  It looks to me the only way to find the
>>>endpoint associated with an audio driver is by the device
>>>name/description from the inf.
>>> Thanks,
>>>Ally
>>>
>>>------------------------------------------------------------------------
>>>*From:* wdmaudiodev-bounce@xxxxxxxxxxxxx
>>>[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] *On Behalf Of *Frank Yerrace
>>>*Sent:* Wednesday, October 18, 2006 3:53 PM
>>>*To:* wdmaudiodev@xxxxxxxxxxxxx
>>>*Subject:* [wdmaudiodev] Re: Can I identifying my audio endpoint?
>>>
>>>I'm sorry I misled you with my previous response. A colleague reminded me
>>>that PKEY_Endpoint_KsComponentId is not generally available in the
>>>endpoint property stores. Another alternative- similar in concept- is for
>>>your device INF to indirectly populate the endpoint property stores with
>>>your own custom properties. The SYSFX sample demonstrates this. (Sorry I
>>>don't have a pointer to the SYSFX sample or documentation at my
>>>fingertips. I believe it's been referenced in other messages to this
>>>mailing list.) Then your app can search for an endpoint that has your
>>>custom properties in its property store.
>>>
>>> Frank Yerrace
>>>
>>>Microsoft Corporation
>>>
>>>This posting is provided "AS IS" with no warranties, and confers no
>>>rights.
>>>
>>> ------------------------------------------------------------------------
>>>
>>>*From:* wdmaudiodev-bounce@xxxxxxxxxxxxx
>>>[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] *On Behalf Of *Alexandra
>>>Schoepel (Ally)
>>>*Sent:* Tuesday, October 17, 2006 4:12 PM
>>>*To:* wdmaudiodev@xxxxxxxxxxxxx
>>>*Subject:* [wdmaudiodev] Re: Can I identifying my audio endpoint?
>>>
>>> Yes it does.  Okay, very cool.  Is this key defined in a standard header
>>>or is there a section of documentation describing how the KSCOMPONENTID
>>>is encapsulated in the PROPVARIANT so I don't bother you any more. :)
>>>
>>> Thanks again,
>>>
>>>Alexandra Schoepel
>>>
>>> ------------------------------------------------------------------------
>>>
>>>*From:* wdmaudiodev-bounce@xxxxxxxxxxxxx
>>>[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] *On Behalf Of *Frank Yerrace
>>>*Sent:* Tuesday, October 17, 2006 3:59 PM
>>>*To:* wdmaudiodev@xxxxxxxxxxxxx
>>>*Subject:* [wdmaudiodev] Re: Can I identifying my audio endpoint?
>>>
>>>Does your device have its own audio driver? One alternative is to read
>>>PKEY_Endpoint_KsComponentId from the endpoint property store. This
>>>returns a KSCOMPONENTID structure. However, for this endpoint property to
>>>have useful information, the audio driver must support the KS property
>>>KSPROPERTY_GENERAL_COMPONENTID and fill it in with useful information.
>>>
>>> Frank Yerrace
>>>
>>>Microsoft Corporation
>>>
>>> This posting is provided "AS IS" with no warranties, and confers no
>>>rights.
>>>
>>> ------------------------------------------------------------------------
>>>
>>>*From:* wdmaudiodev-bounce@xxxxxxxxxxxxx
>>>[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] *On Behalf Of *Alexandra
>>>Schoepel (Ally)
>>>*Sent:* Tuesday, October 17, 2006 3:27 PM
>>>*To:* wdmaudiodev@xxxxxxxxxxxxx
>>>*Subject:* [wdmaudiodev] Can I identifying my audio endpoint?
>>>
>>> Hi guys,
>>>
>>>What is the most effective way to identify one's own audio endpoint when
>>>using the IMMDeviceEnumerator?  None of the published Audio Endpoint
>>>properties seem to be uniquely tied to the device.  The DirectSound GUID
>>>(PKEY_AudioEndpoint_GUID) seems to be a floating value assigned by the OS
>>>and in no way tied to any information in the inf file of the driver.
>>>Additionally, help on the IMMDevice::GetId function states that the
>>>information it represents is opaque and should not be used to obtain
>>>information about the device.  Any advice?
>>>
>>>Thanks,
>>>Alexandra Schoepel
>>>
>>
>>--
>>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>|            Mike Preston          | Home/Office: (360)756-1655 |
>>| E-mail: mike@xxxxxxxxxxxxxxxxxxx |        Cell: (360)303-9331 |
>>|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
>>|     The man who follows the crowd will usually get no         |
>>|     further than the crowd.  The man who walks alone is       |
>>|     likely to find himself in places no one has ever been.    |
>>|                     -- Alan Ashley-Pitt                       |
>>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>******************
>>
>>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/
>>
>>
>>
>
>
> ******************
>
> 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/
>
> ******************
>
> 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/
>
>
>

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|            Mike Preston          | Home/Office: (360)756-1655 |
| E-mail: mike@xxxxxxxxxxxxxxxxxxx |        Cell: (360)303-9331 |
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
|     The man who follows the crowd will usually get no         |
|     further than the crowd.  The man who walks alone is       |
|     likely to find himself in places no one has ever been.    |
|                     -- Alan Ashley-Pitt                       |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
******************

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/

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

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: