[wdmaudiodev] Re: SFX APO not opened for each playing app

  • From: "Johannes Freyberger" <jfreyberger@xxxxxxxxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Mon, 16 Apr 2018 11:35:50 +0200

Thanks a lot for all your explanations concerning my question to detect the
app which is using my driver (and thus my SFX APO).

 

At least my assumption to see several instances of my APO when there are
multiple apps playing simultaneously seemed to be correct. While I can see
one instance per playing if I use them one after each other, I can also see
only one instance in the simultaneous case. Could it be that multiple apps
share a single stream. I'd have expected this for MFX APOs but not for SFX?

 

I'm using W10 x64 and it seems to make no difference whether I use
PKEY_FX_StreamEffectClsid = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},5" or
PKEY_CompositeFX_StreamEffectClsid  =
"{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},13" to register my SFX for my audio
renderer. I also did some tests inside the APOs registry with the parameters
"MaxInstances", "MaxInputConnections" and "MaxOutputConnections" but could
not see any changes in the behavior of how my SFX is loaded.

 

Already before my first post to this list I've seen and loaded the given
effects discovery app sample, but I unfortunately didn't get the C++ version
compiled in VS2017 pro and I finally stopped digging deeper here, as I was
not sure if it would help me once I have compiled it.

 

Thanks and best regards,

Johannes

 

Von: wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx> Im
Auftrag von Matthew van Eerde (Redacted sender "Matthew.van.Eerde" for
DMARC)
Gesendet: Freitag, 13. April 2018 22:13
An: wdmaudiodev@xxxxxxxxxxxxx
Betreff: [wdmaudiodev] Re: AW: Re: SFX APO not opened for each playing app

 

As of Windows 8.1 (which is also when LFX/GFX became SFX/MFX/EFX) you can
use the "audio signal processing mode" to do different kinds of processing
for different kinds of apps (e.g., communications vs. media etc.) This comes
in as part of the APOInitSystemEffects2 initialization structure.

 

You cannot detect specific apps.

 

You need to advertise the specific kinds of effects you are adding in your
APO (for the given mode) by implementing
IAudioSystemEffects2::GetEffectsList. If this changes you need to signal the
event handle that was passed in.

 

https://blogs.msdn.microsoft.com/iliast/2016/01/27/windows-8-1-audio-streami
ng-part-3-audio-processing/

APOInitSystemEffects2:
https://msdn.microsoft.com/en-us/library/windows/desktop/dn280314(v=vs.85).a
spx

IAudioSystemEffects2:
https://msdn.microsoft.com/en-us/library/windows/desktop/dn280324(v=vs.85).a
spx

 

You should expect one instance of the APO for every audio stream (an app
might create multiple streams), plus potentially another instance if any
apps query the effects.

 

There's a sample effects discovery app here:
https://code.msdn.microsoft.com/windowsapps/Audio-effects-discovery-5fd65c15

Other related posts: