[wdmaudiodev] Re: SFX, MFX, EFX

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Fri, 9 May 2014 21:00:45 +0000

You can have a single .inf  + .dll + .sys that work on both Windows 
8.1-and-later and Windows 8.0-and-earlier.

Include PKEY_FX_PreMixCLSID and PKEY_FX_PostMixCLSID. Windows 8.0 and before 
will use these.
Also include the correct combination of 
PKEY_FX_(Stream|Mode|Endpoint)EffectClsId and 
PKEY_(SFX|MFX|EFX)_ProcessingModes_Supported_For_Streaming. Windows 8.1 and 
later will use these.

Accept both an APOInitSystemEffects and an APOInitSystemEffects2. You can 
expect to receive only an APOInitSystemEffects on Windows 8.0 and before, and 
only an APOInitSystemEffects2 on Windows 8.1 and later.
Implement IAudioSystemEffects2. You will only ever be QI'd for this on Windows 
8.1 and later, and then only when an app queries the list of active audio 

It is also important to confirm that the .sys you're packaged with supports 
KSPROPERTY_AUDIOSIGNALPROCESSING_MODES. The inbox drivers were all updated: 
(hdaudio.sys, usbaudio.sys, btha2dp.sys, bthhfaud.sys.)

You can manually stimulate the IAudioSystemEffects2 path by using the HLK test, 
or by using the "Audio effects discovery" sample from the SDK:


Other related posts: