[wdmaudiodev] Re: Sysvad exposing filter pins to audio engine

  • From: Help Engineers <helpforengineers2017@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Sun, 14 Apr 2019 16:48:32 +0530

[Version]
Signature="$CHICAGO$"
Class=MEDIA
Provider=%MSFT%
ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
DriverVer = 02/22/2007, 6.0.6000.1
CatalogFile=sysvad.cat

[SourceDisksNames]
222="SYSVAD Driver Disk","",222

[SourceDisksFiles]
slateaudiosample.sys=222
swapapo.dll=222
proppageext.dll=222

[SignatureAttributes]
slateaudiosample.sys=SignatureAttributes.DRM
swapapo.dll=SignatureAttributes.PETrust

[SignatureAttributes.DRM]
DRMLevel=1300

[SignatureAttributes.PETrust]
PETrust=true

;;This syntax is only recognized on Windows XP and above- it is needed to
install 64-bit drivers on
;;Windows Server 2003 Service Pack 1 and above.

[Manufacturer]
%MfgName%=MicrosoftDS,NTIA64,NTARM

;;  For Windows Server 2003 Service Pack 1 and above, a 64-bit OS will not
install a driver
;;  unless the Manufacturer and Models Sections explicitly show it is a
driver for that platform
;;  But the individual model section decorations (or lack thereof) work as
they always have.
;;  All of the model sections referred to are undecorated or NT-decorated,
hence work on all platforms

[MicrosoftDS]
%SYSVAD_SA.DeviceDesc%=SYSVAD_SA,*SYSVAD_SLATEAUDIO



;;  This section enables installing on Itanium systems

[MicrosoftDS.NTIA64]
%SYSVAD_SA.DeviceDesc%=SYSVAD_SA,*SYSVAD_SLATEAUDIO

;; This section enables installing on ARM systems

[MicrosoftDS.NTARM]
%SYSVAD_SA.DeviceDesc%=SYSVAD_SA,*SYSVAD_SLATEAUDIO


[DestinationDirs]
SYSVAD_SA.CopyList=12 ; windows\system32\drivers
SWAPAPO.CopyList=11 ; windows\system32

;======================================================
; SYSVAD_SA
;======================================================
[SYSVAD_SA]
AlsoInstall=ks.registration(ks.inf),wdmaudio.registration(wdmaudio.inf),MsApoFxProxy.Registration(wdmaudio.inf)
CopyFiles=SYSVAD_SA.CopyList,SWAPAPO.CopyList
AddReg=SYSVAD_SA.AddReg,SWAPAPO.AddReg

[SYSVAD_SA.CopyList]
slateaudiosample.sys

[SWAPAPO.CopyList]
swapapo.dll
proppageext.dll

[SYSVAD_SA.Interfaces]
;
; Interfaces for speaker (internal) render endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_WaveSpeaker%, SYSVAD.I.WaveSpeaker
AddInterface=%KSCATEGORY_RENDER%, %KSNAME_WaveSpeaker%, SYSVAD.I.WaveSpeaker
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveSpeaker%,
SYSVAD.I.WaveSpeaker
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_TopologySpeaker%,
SYSVAD.I.TopologySpeaker
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologySpeaker%,
SYSVAD.I.TopologySpeaker

;
; Interfaces for speaker (external: headphone) render endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_WaveSpeakerHeadphone%,
SYSVAD.I.WaveSpeakerHeadphone
AddInterface=%KSCATEGORY_RENDER%, %KSNAME_WaveSpeakerHeadphone%,
SYSVAD.I.WaveSpeakerHeadphone
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveSpeakerHeadphone%,
SYSVAD.I.WaveSpeakerHeadphone
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_TopologySpeakerHeadphone%,
SYSVAD.I.TopologySpeakerHeadphone
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologySpeakerHeadphone%,
SYSVAD.I.TopologySpeakerHeadphone

;
; Interfaces for HDMI (external) render endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_WaveHdmi%, SYSVAD.I.WaveHdmi
AddInterface=%KSCATEGORY_RENDER%, %KSNAME_WaveHdmi%, SYSVAD.I.WaveHdmi
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveHdmi%, SYSVAD.I.WaveHdmi
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_TopologyHdmi%,
SYSVAD.I.TopologyHdmi
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyHdmi%,
SYSVAD.I.TopologyHdmi

;
; Interfaces for microphone (external: headphone) capture endpoint
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicIn%, SYSVAD.I.WaveMicIn
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicIn%, SYSVAD.I.WaveMicIn
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicIn%, SYSVAD.I.WaveMicIn
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicIn%,
SYSVAD.I.TopologyMicIn
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicIn%,
SYSVAD.I.TopologyMicIn

;
; Interfaces for microphone array 1 (internal: front) capture endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicArray1%,
SYSVAD.I.WaveMicArray1
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicArray1%,
SYSVAD.I.WaveMicArray1
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicArray1%,
SYSVAD.I.WaveMicArray1
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicArray1%,
SYSVAD.I.TopologyMicArray1
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicArray1%,
SYSVAD.I.TopologyMicArray1

;
; Interfaces for microphone array 2 (internal: back) capture endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicArray2%,
SYSVAD.I.WaveMicArray2
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicArray2%,
SYSVAD.I.WaveMicArray2
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicArray2%,
SYSVAD.I.WaveMicArray2
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicArray2%,
SYSVAD.I.TopologyMicArray2
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicArray2%,
SYSVAD.I.TopologyMicArray2

;
; Interfaces for microphone array 3 (internal: combined: front/back)
capture endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicArray3%,
SYSVAD.I.WaveMicArray3
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicArray3%,
SYSVAD.I.WaveMicArray3
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicArray3%,
SYSVAD.I.WaveMicArray3
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicArray3%,
SYSVAD.I.TopologyMicArray3
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicArray3%,
SYSVAD.I.TopologyMicArray3

;
; Interfaces for Bluetooth HFP speaker (external) render endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_WaveBthHfpSpeaker%,
SYSVAD.I.WaveBthHfpSpeaker
AddInterface=%KSCATEGORY_RENDER%, %KSNAME_WaveBthHfpSpeaker%,
SYSVAD.I.WaveBthHfpSpeaker
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveBthHfpSpeaker%,
SYSVAD.I.WaveBthHfpSpeaker
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_TopologyBthHfpSpeaker%,
SYSVAD.I.TopologyBthHfpSpeaker
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyBthHfpSpeaker%,
SYSVAD.I.TopologyBthHfpSpeaker

;
; Interfaces for Bluetooth HFP mic (external) capture endpoint
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveBthHfpMic%,
SYSVAD.I.WaveBthHfpMic
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveBthHfpMic%,
SYSVAD.I.WaveBthHfpMic
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveBthHfpMic%,
SYSVAD.I.WaveBthHfpMic
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyBthHfpMic%,
SYSVAD.I.TopologyBthHfpMic
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyBthHfpMic%,
SYSVAD.I.TopologyBthHfpMic

[SYSVAD_SA.AddReg]
HKR,,AssociatedFilters,,"wdmaud,swmidi,redbook"
HKR,,Driver,,slateaudiosample.sys

HKR,Drivers,SubClasses,,"wave,midi,mixer"

HKR,Drivers\wave\wdmaud.drv,Driver,,wdmaud.drv
HKR,Drivers\midi\wdmaud.drv,Driver,,wdmaud.drv
HKR,Drivers\mixer\wdmaud.drv,Driver,,wdmaud.drv

HKR,Drivers\wave\wdmaud.drv,Description,,%SYSVAD_SA.DeviceDesc%
HKR,Drivers\midi\wdmaud.drv,Description,,%SYSVAD_MIDI%
HKR,Drivers\mixer\wdmaud.drv,Description,,%SYSVAD_SA.DeviceDesc%

HKLM,%MEDIA_CATEGORIES%\%MicArray1CustomNameGUID%,Name,,%MicArray1CustomName%
HKLM,%MEDIA_CATEGORIES%\%MicArray2CustomNameGUID%,Name,,%MicArray2CustomName%
HKLM,%MEDIA_CATEGORIES%\%MicArray3CustomNameGUID%,Name,,%MicArray3CustomName%
HKLM,%MEDIA_CATEGORIES%\%MicInCustomNameGUID%,Name,,%MicInCustomName%

[SWAPAPO.AddReg]
; Stream effect APO COM registration
HKCR,CLSID\%FX_STREAM_CLSID%,,,%SFX_FriendlyName%
HKCR,CLSID\%FX_STREAM_CLSID%\InProcServer32,,,%11%\swapapo.dll
HKCR,CLSID\%FX_STREAM_CLSID%\InProcServer32,ThreadingModel,,"Both"

; Mode effect APO COM registration
HKCR,CLSID\%FX_MODE_CLSID%,,,%MFX_FriendlyName%
HKCR,CLSID\%FX_MODE_CLSID%\InProcServer32,,,%11%\swapapo.dll
HKCR,CLSID\%FX_MODE_CLSID%\InProcServer32,ThreadingModel,,"Both"

; Property page COM registration
HKCR,CLSID\%AUDIOENDPOINT_EXT_UI_CLSID%,,,"CplPage Class"
HKCR,CLSID\%AUDIOENDPOINT_EXT_UI_CLSID%\InProcServer32,,,%11%\PropPageExt.dll
HKCR,CLSID\%AUDIOENDPOINT_EXT_UI_CLSID%\InProcServer32,ThreadingModel,,"Apartment"

; Effects UI page COM registration
HKCR,CLSID\%FX_UI_CLSID%,,,"CplPage Class"
HKCR,CLSID\%FX_UI_CLSID%\InProcServer32,,,%11%\PropPageExt.dll
HKCR,CLSID\%FX_UI_CLSID%\InProcServer32,ThreadingModel,,"Apartment"

; Stream effect APO registration
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "FriendlyName",
,%SFX_FriendlyName%
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "Copyright",
,%MsCopyRight%
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MajorVersion",
0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MinorVersion",
0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "Flags",
0x00010001, 0x0000000d
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%,
"MinInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%,
"MaxInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%,
"MinOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%,
"MaxOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MaxInstances",
0x00010001, 0xffffffff
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%,
"NumAPOInterfaces", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "APOInterface0",
,"{FD7F2B29-24D0-4B5C-B177-592C39F9CA10}"

; Mode effect APO registration
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "FriendlyName",
,%MFX_FriendlyName%
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "Copyright",
,%MsCopyRight%
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MajorVersion",
0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MinorVersion",
0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "Flags",
0x00010001, 0x0000000d
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%,
"MinInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%,
"MaxInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%,
"MinOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%,
"MaxOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MaxInstances",
0x00010001, 0xffffffff
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%,
"NumAPOInterfaces", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "APOInterface0",
,"{FD7F2B29-24D0-4B5C-B177-592C39F9CA10}"

;======================================================
; render interfaces: speaker (internal)
;======================================================
[SYSVAD.I.WaveSpeaker]
AddReg=SYSVAD.I.WaveSpeaker.AddReg

[SYSVAD.I.WaveSpeaker.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.WaveSpeaker.szPname%

[SYSVAD.I.TopologySpeaker]
AddReg=SYSVAD.I.TopologySpeaker.AddReg,SWAPAPO.I.Association0.AddReg

[SYSVAD.I.TopologySpeaker.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.TopologySpeaker.szPname%

HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
HKR,FX\0,%PKEY_FX_Association%,,%KSNODETYPE_ANY%

; Uncomment the following lines to opt-in to pull mode.
; HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; render interfaces: HDMI (external)
;======================================================
[SYSVAD.I.WaveHdmi]
AddReg=SYSVAD.I.WaveHdmi.AddReg
[SYSVAD.I.WaveHdmi.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.WaveHdmi.szPname%

[SYSVAD.I.TopologyHdmi]
AddReg=SYSVAD.I.TopologyHdmi.AddReg
[SYSVAD.I.TopologyHdmi.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.TopologyHdmi.szPname%
; Uncomment the following lines to opt-in to pull mode.
; HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
; HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; render interfaces: speaker (external: headphone)
;======================================================
[SYSVAD.I.WaveSpeakerHeadphone]
AddReg=SYSVAD.I.WaveSpeakerHeadphone.AddReg
[SYSVAD.I.WaveSpeakerHeadphone.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.WaveSpeakerHeadphone.szPname%

[SYSVAD.I.TopologySpeakerHeadphone]
AddReg=SYSVAD.I.TopologySpeakerHeadphone.AddReg
[SYSVAD.I.TopologySpeakerHeadphone.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.TopologySpeakerHeadphone.szPname%
; Uncomment the following lines to opt-in to pull mode.
; HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
; HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; capture interfaces: mic in (external: headphone)
;======================================================
[SYSVAD.I.WaveMicIn]
AddReg=SYSVAD.I.WaveMicIn.AddReg
[SYSVAD.I.WaveMicIn.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.WaveMicIn.szPname%

[SYSVAD.I.TopologyMicIn]
AddReg=SYSVAD.I.TopologyMicIn.AddReg
[SYSVAD.I.TopologyMicIn.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.TopologyMicIn.szPname%
; Uncomment the following lines to opt-in to pull mode.
; HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
; HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; capture interfaces: mic array (internal: front)
;======================================================
[SYSVAD.I.WaveMicArray1]
AddReg=SYSVAD.I.WaveMicArray1.AddReg
[SYSVAD.I.WaveMicArray1.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.WaveMicArray1.szPname%

[SYSVAD.I.TopologyMicArray1]
AddReg=SYSVAD.I.TopologyMicArray1.AddReg,SWAPAPO.I.Association0.AddReg

[SYSVAD.I.TopologyMicArray1.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.TopologyMicArray1.szPname%

HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
HKR,FX\0,%PKEY_FX_Association%,,%KSNODETYPE_ANY%

; Uncomment the following lines to opt-in to pull mode.
; HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; capture interfaces: mic array (internal: back)
;======================================================
[SYSVAD.I.WaveMicArray2]
AddReg=SYSVAD.I.WaveMicArray2.AddReg
[SYSVAD.I.WaveMicArray2.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.WaveMicArray2.szPname%

[SYSVAD.I.TopologyMicArray2]
AddReg=SYSVAD.I.TopologyMicArray2.AddReg,SWAPAPO.I.Association0.AddReg

[SYSVAD.I.TopologyMicArray2.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.TopologyMicArray2.szPname%

HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
HKR,FX\0,%PKEY_FX_Association%,,%KSNODETYPE_ANY%

; Uncomment the following lines to opt-in to pull mode.
; HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; capture interfaces: mic array (internal: combined: front/back)
;======================================================
[SYSVAD.I.WaveMicArray3]
AddReg=SYSVAD.I.WaveMicArray3.AddReg
[SYSVAD.I.WaveMicArray3.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.WaveMicArray3.szPname%

[SYSVAD.I.TopologyMicArray3]
AddReg=SYSVAD.I.TopologyMicArray3.AddReg,SWAPAPO.I.Association0.AddReg

[SYSVAD.I.TopologyMicArray3.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.TopologyMicArray3.szPname%

HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
HKR,FX\0,%PKEY_FX_Association%,,%KSNODETYPE_ANY%

; Uncomment the following lines to opt-in to pull mode.
; HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

[SYSVAD_SA.HW]
AddReg = AUDIOHW.AddReg

;======================================================
; render interfaces: Bluetooth HFP speaker (external)
;======================================================
[SYSVAD.I.WaveBthHfpSpeaker]
AddReg=SYSVAD.I.WaveBthHfpSpeaker.AddReg
[SYSVAD.I.WaveBthHfpSpeaker.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.WaveBthHfpSpeaker.szPname%

[SYSVAD.I.TopologyBthHfpSpeaker]
AddReg=SYSVAD.I.TopologyBthHfpSpeaker.AddReg
[SYSVAD.I.TopologyBthHfpSpeaker.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.TopologyBthHfpSpeaker.szPname%
; Uncomment the following lines to opt-in to pull mode.
; HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
; HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; capture interfaces: Bluetooth HFP mic (external)
;======================================================
[SYSVAD.I.WaveBthHfpMic]
AddReg=SYSVAD.I.WaveBthHfpMic.AddReg
[SYSVAD.I.WaveBthHfpMic.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.WaveBthHfpMic.szPname%

[SYSVAD.I.TopologyBthHfpMic]
AddReg=SYSVAD.I.TopologyBthHfpMic.AddReg,MsApoFxProxy.I.Association0.AddReg
[SYSVAD.I.TopologyBthHfpMic.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%SYSVAD.TopologyBthHfpMic.szPname%
; Uncomment the following lines to opt-in to pull mode.
; HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
; HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; APO per-interface registry
;======================================================
[SWAPAPO.I.Association0.AddReg]
; Instruct audio endpoint builder to set CLSID for property page provider
into the
; endpoint property store
HKR,EP\0,%PKEY_AudioEndpoint_ControlPanelPageProvider%,,%AUDIOENDPOINT_EXT_UI_CLSID%

; Instruct audio endpoint builder to set the CLSIDs for stream, mode, and
endpoint APOs
; into the effects property store
HKR,FX\0,%PKEY_FX_StreamEffectClsid%,,%FX_STREAM_CLSID%
HKR,FX\0,%PKEY_FX_ModeEffectClsid%,,%FX_MODE_CLSID%
HKR,FX\0,%PKEY_FX_UserInterfaceClsid%,,%FX_UI_CLSID%

; Driver developer would replace the list of supported processing modes here
HKR,FX\0,%PKEY_SFX_ProcessingModes_Supported_For_Streaming%,0x00010000,%AUDIO_SIGNALPROCESSINGMODE_DEFAULT%
HKR,FX\0,%PKEY_MFX_ProcessingModes_Supported_For_Streaming%,0x00010000,%AUDIO_SIGNALPROCESSINGMODE_DEFAULT%
;HKR,FX\0,%PKEY_EFX_ProcessingModes_Supported_For_Streaming%,0x00010000,%AUDIO_SIGNALPROCESSINGMODE_DEFAULT%

;======================================================
; MsApoFxProxy APO registry
;======================================================
[MsApoFxProxy.I.Association0.AddReg]
HKR,FX\0,%PKEY_FX_Association%,,%KSNODETYPE_ANY%
HKR,FX\0,%PKEY_FX_EndpointEffectClsid%,,%FX_DISCOVER_EFFECTS_APO_CLSID%

;======================================================
; SYSVAD_SA
;======================================================
[SYSVAD_SA.NT]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration, WDMAUDIO.Registration, MsApoFxProxy.Registration
CopyFiles=SYSVAD_SA.CopyList,SWAPAPO.CopyList
AddReg=SYSVAD_SA.AddReg,SWAPAPO.AddReg

[SYSVAD_SA.NT.Interfaces]
;
; Interfaces for speaker (internal) render endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_WaveSpeaker%, SYSVAD.I.WaveSpeaker
AddInterface=%KSCATEGORY_RENDER%, %KSNAME_WaveSpeaker%, SYSVAD.I.WaveSpeaker
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveSpeaker%,
SYSVAD.I.WaveSpeaker
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_TopologySpeaker%,
SYSVAD.I.TopologySpeaker
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologySpeaker%,
SYSVAD.I.TopologySpeaker

;
; Interfaces for speaker (external: headphone) render endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_WaveSpeakerHeadphone%,
SYSVAD.I.WaveSpeakerHeadphone
AddInterface=%KSCATEGORY_RENDER%, %KSNAME_WaveSpeakerHeadphone%,
SYSVAD.I.WaveSpeakerHeadphone
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveSpeakerHeadphone%,
SYSVAD.I.WaveSpeakerHeadphone
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_TopologySpeakerHeadphone%,
SYSVAD.I.TopologySpeakerHeadphone
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologySpeakerHeadphone%,
SYSVAD.I.TopologySpeakerHeadphone

;
; Interfaces for HDMI (external) render endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_WaveHdmi%, SYSVAD.I.WaveHdmi
AddInterface=%KSCATEGORY_RENDER%, %KSNAME_WaveHdmi%, SYSVAD.I.WaveHdmi
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveHdmi%, SYSVAD.I.WaveHdmi
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_TopologyHdmi%,
SYSVAD.I.TopologyHdmi
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyHdmi%,
SYSVAD.I.TopologyHdmi

;
; Interfaces for microphone (external: headphone) capture endpoint
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicIn%, SYSVAD.I.WaveMicIn
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicIn%, SYSVAD.I.WaveMicIn
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicIn%, SYSVAD.I.WaveMicIn
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicIn%,
SYSVAD.I.TopologyMicIn
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicIn%,
SYSVAD.I.TopologyMicIn

;
; Interfaces for microphone array 1 (internal: front) capture endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicArray1%,
SYSVAD.I.WaveMicArray1
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicArray1%,
SYSVAD.I.WaveMicArray1
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicArray1%,
SYSVAD.I.WaveMicArray1
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicArray1%,
SYSVAD.I.TopologyMicArray1
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicArray1%,
SYSVAD.I.TopologyMicArray1

;
; Interfaces for microphone array 2 (internal: back) capture endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicArray2%,
SYSVAD.I.WaveMicArray2
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicArray2%,
SYSVAD.I.WaveMicArray2
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicArray2%,
SYSVAD.I.WaveMicArray2
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicArray2%,
SYSVAD.I.TopologyMicArray2
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicArray2%,
SYSVAD.I.TopologyMicArray2

;
; Interfaces for microphone array 3 (internal: combined: front/back)
capture endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicArray3%,
SYSVAD.I.WaveMicArray3
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicArray3%,
SYSVAD.I.WaveMicArray3
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicArray3%,
SYSVAD.I.WaveMicArray3
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicArray3%,
SYSVAD.I.TopologyMicArray3
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicArray3%,
SYSVAD.I.TopologyMicArray3

;
; Interfaces for Bluetooth HFP speaker (external) render endpoint.
;
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_WaveBthHfpSpeaker%,
SYSVAD.I.WaveBthHfpSpeaker
AddInterface=%KSCATEGORY_RENDER%, %KSNAME_WaveBthHfpSpeaker%,
SYSVAD.I.WaveBthHfpSpeaker
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveBthHfpSpeaker%,
SYSVAD.I.WaveBthHfpSpeaker
AddInterface=%KSCATEGORY_AUDIO%, %KSNAME_TopologyBthHfpSpeaker%,
SYSVAD.I.TopologyBthHfpSpeaker
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyBthHfpSpeaker%,
SYSVAD.I.TopologyBthHfpSpeaker

;
; Interfaces for Bluetooth HFP mic (external) capture endpoint
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveBthHfpMic%,
SYSVAD.I.WaveBthHfpMic
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveBthHfpMic%,
SYSVAD.I.WaveBthHfpMic
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveBthHfpMic%,
SYSVAD.I.WaveBthHfpMic
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyBthHfpMic%,
SYSVAD.I.TopologyBthHfpMic
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyBthHfpMic%,
SYSVAD.I.TopologyBthHfpMic

[SYSVAD_SA.NT.Services]
AddService=sysvad_slateaudiosample,0x00000002,sysvad_SlateAudioSample_Service_Inst

[sysvad_SlateAudioSample_Service_Inst]
DisplayName=%SYSVAD_SlateAudioSample.SvcDesc%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%10%\system32\drivers\slateaudiosample.sys

[SYSVAD_SA.NT.HW]
AddReg = AUDIOHW.AddReg

[AUDIOHW.AddReg]
; FILE_DEVICE_SOUND
HKR,,DeviceType,0x10001,0x0000001D
; SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RWX_RES_RWX
HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GRGWGX;;;BA)(A;;GRGWGX;;;WD)(A;;GRGWGX;;;RC)"

;======================================================
; WDF
;======================================================
[SYSVAD_SA.Wdf]
KmdfService = sysvad_slateaudiosample, SYSVAD_SA_WdfSect
[SYSVAD_SA_WdfSect]
KmdfLibraryVersion = $KMDFVERSION$

;======================================================
; COMMON
;======================================================
[Strings]

;Non-localizable

MSFT="Microsoft"

KSNAME_WaveSpeaker="WaveSpeaker"
KSNAME_TopologySpeaker="TopologySpeaker"

KSNAME_WaveSpeakerHeadphone="WaveSpeakerHeadphone"
KSNAME_TopologySpeakerHeadphone="TopologySpeakerHeadphone"

KSNAME_WaveHdmi="WaveHdmi"
KSNAME_TopologyHdmi= "TopologyHdmi"

KSNAME_WaveMicIn="WaveMicIn"
KSNAME_TopologyMicIn="TopologyMicIn"

KSNAME_WaveMicArray1="WaveMicArray1"
KSNAME_TopologyMicArray1="TopologyMicArray1"

KSNAME_WaveMicArray2="WaveMicArray2"
KSNAME_TopologyMicArray2="TopologyMicArray2"

KSNAME_WaveMicArray3="WaveMicArray3"
KSNAME_TopologyMicArray3="TopologyMicArray3"

KSNAME_WaveBthHfpSpeaker="WaveBthHfpSpeaker"
KSNAME_TopologyBthHfpSpeaker="TopologyBthHfpSpeaker"

KSNAME_WaveBthHfpMic="WaveBthHfpMic"
KSNAME_TopologyBthHfpMic="TopologyBthHfpMic"

Proxy.CLSID="{}"
KSCATEGORY_AUDIO="{}"
KSCATEGORY_RENDER="{}"
KSCATEGORY_CAPTURE="{}"
KSCATEGORY_REALTIME ="{}"
KSCATEGORY_TOPOLOGY = "{}"

MediaCategories="SYSTEM\CurrentControlSet\Control\MediaCategories"
KSNODETYPE_ANY   = "{}"

PKEY_AudioEndpoint_ControlPanelPageProvider  = "{},1"
PKEY_AudioEndpoint_Association               = "{},2"
PKEY_AudioEndpoint_Supports_EventDriven_Mode = "{},7"

PKEY_FX_Association         = "{},0"
PKEY_FX_PreMixEffectClsid   = "{},1"
PKEY_FX_PostMixEffectClsid  = "{},2"
PKEY_FX_UserInterfaceClsid  = "{},3"
PKEY_FX_StreamEffectClsid   = "{},5"
PKEY_FX_ModeEffectClsid     = "{},6"
PKEY_FX_EndpointEffectClsid = "{},7"

PKEY_SFX_ProcessingModes_Supported_For_Streaming = "{},5"
PKEY_MFX_ProcessingModes_Supported_For_Streaming = "{},6"
;PKEY_EFX_ProcessingModes_Supported_For_Streaming = "{},7"

AUDIO_SIGNALPROCESSINGMODE_DEFAULT = "{}"

; Driver developer would replace this CLSID with that of his own Sound CPL
property page provider
AUDIOENDPOINT_EXT_UI_CLSID = "{}"

; Driver developer would replace these CLSIDs with those of his own APOs.
FX_STREAM_CLSID    = "{}"
FX_MODE_CLSID      = "{}"
FX_UI_CLSID        = "{}"
FX_DISCOVER_EFFECTS_APO_CLSID  = "{}"

MEDIA_CATEGORIES = "SYSTEM\CurrentControlSet\Control\MediaCategories"
MicArray1CustomNameGUID = {}
MicArray2CustomNameGUID = {}
MicArray3CustomNameGUID = {}
MicInCustomNameGUID = {}

;Localizable

SFX_FriendlyName = "Microsoft Audio Proxy APO Sample (stream effect)"
MFX_FriendlyName = "Microsoft Audio Proxy APO Sample (mode effect)"

MfgName="Microsoft Audio WDK"
MsCopyRight="Copyright (c) Microsoft Corporation All Rights Reserved"

SYSVAD_SA.DeviceDesc="Microsoft Virtual Audio Device (WDM) - Slate Sample"
SYSVAD_SlateAudioSample.SvcDesc="Microsoft Virtual Audio Device (WDM) -
Slate Sample Driver"
SYSVAD_MIDI=Microsoft Virtual Audio Device (WDM) - Midi Device"

;; friendly names
SYSVAD.WaveSpeaker.szPname="SYSVAD Wave Speaker"
SYSVAD.TopologySpeaker.szPname="SYSVAD Topology Speaker"

SYSVAD.WaveSpeakerHeadphone.szPname="SYSVAD Wave Speaker Headphone"
SYSVAD.TopologySpeakerHeadphone.szPname="SYSVAD Topology Speaker Headphone"

SYSVAD.WaveHdmi.szPname="SYSVAD Wave HDMI"
SYSVAD.TopologyHdmi.szPname="SYSVAD Topology HDMI"

SYSVAD.WaveMicIn.szPname="SYSVAD Wave Microphone Headphone"
SYSVAD.TopologyMicIn.szPname="SYSVAD Topology Microphone Headphone"

SYSVAD.WaveMicArray1.szPname="SYSVAD Wave Microphone Array - Front"
SYSVAD.TopologyMicArray1.szPname="SYSVAD Topology Microphone Array - Front"

SYSVAD.WaveMicArray2.szPname="SYSVAD Wave Microphone Array - Rear"
SYSVAD.TopologyMicArray2.szPname="SYSVAD Topology Microphone Array - Rear"

SYSVAD.WaveMicArray3.szPname="SYSVAD Wave Microphone Array - Front/Rear"
SYSVAD.TopologyMicArray3.szPname="SYSVAD Topology Microphone Array -
Front/Rear"

SYSVAD.WaveBthHfpSpeaker.szPname="SYSVAD Wave Bluetooth HFP Speaker"
SYSVAD.TopologyBthHfpSpeaker.szPname="SYSVAD Topology Bluetooth HFP Speaker"

SYSVAD.WaveBthHfpMic.szPname="SYSVAD Wave Bluetooth HFP Microphone"
SYSVAD.TopologyBthHfpMic.szPname="SYSVAD Topology Bluetooth HFP Microphone"

MicArray1CustomName= "Internal Microphone Array - Front"
MicArray2CustomName= "Internal Microphone Array - Rear"
MicArray3CustomName= "Internal Microphone Array - Front/Rear"
MicInCustomName= "External Microphone Headphone"


This is the Sample INF which I have downloaded from GitHub and this is
working fine for the Render Graph (SWAPAPO), Kindly highlight the Entries
of the INF which describes how to expose the pins present on the wave
filter for the capture graph,

Do I need to make any changes in the "SlateAudioSample" for exposing the
Filter pins for the capture graph or if I add some entries in the INF is it
enough?
This is the Flow Which I have seen From Windbg
1. AllocateAudioBuffer
2.SetState
3.DllMain
4.APOProcess

Kindly help me to make changes to expose the Filters for the Capture
Graph(Mic).
An APO gets attached to pins in the INF (Kindly Highlight these Entries in
the above INF)

Thank You!!!!!!!!!!!!

On Sun, 14 Apr 2019 at 12:54, Tim Roberts <timr@xxxxxxxxx> wrote:

On Apr 13, 2019, at 5:08 AM, Help Engineers <
helpforengineers2017@xxxxxxxxx> wrote:


1.An APO gets attached to pins in the INF,
Can u share these entries.


You're already looking at the sample, right?  The sample INF file shows
the entries you need.


2. In slate Audio sample in MiniportAudioEngineNode.cpp we are exposing
only host pin. In render graph first we get wave and text topo.
In capture graph first we get topo and wave how to expose the Pins which
are present on the topo filter for capturing the data via Mic.


The pins on the topology filter do not capture data.  It is the pins on
the wave filter that captures data.

Tim Roberts, timr@xxxxxxxxx
Providenza & Boekelheide, Inc.


Other related posts: