[wdmaudiodev] Re: SFX, MFX, EFX

  • From: "Leonard Shoell" <lshoell@xxxxxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Thu, 15 May 2014 09:59:09 -0600

I'm not specifying a CRT library to link against. What library do I use to
get the static CRT lib?

 

Here are the libraries I'm using:

 

    $(ATL_LIB_PATH)\atls.lib

    $(SDK_LIB_PATH)\Kernel32.lib

    $(SDK_LIB_PATH)\ole32.lib

    $(SDK_LIB_PATH)\oleaut32.lib

    $(SDK_LIB_PATH)\advapi32.lib

    $(SDK_LIB_PATH)\user32.lib

    $(SDK_LIB_PATH)\uuid.lib

    $(SDK_LIB_PATH)\AudioBaseProcessingObject.lib

    $(SDK_LIB_PATH)\audiomediatypecrt.lib

    $(SDK_LIB_PATH)\AudioEng.lib

 

This list came from the original SwapAPO sample from the Vista days. Does
this list need to change for a standard APO?

 

Leonard

 

From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Frank Yerrace
Sent: Thursday, May 15, 2014 9:19 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: SFX, MFX, EFX

 

If I recall correctly, the short answer is that you should use a static CRT
lib. The CRT DLLs are not signed to load in the audio system's protected
process anyhow.

 

Regards,

Frank Yerrace

Microsoft

 

From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Leonard Shoell
Sent: Thursday, May 15, 2014 7:28 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: SFX, MFX, EFX

 

I have narrow down the reason why an APO built with WDK 8.1 will not load on
Win 8.1. 

 

It is a dependency issue. When I build with WDK 7.1, there is a dependency
on MSVCRT.DLL. When I build with WDK 8.1, the dependency is on MSVCR120.DLL.

 

MSVCR120.DLL is available on Win 7, but not available on Win 8.1, so the APO
loads on Win 7, but not on Win 8.1. Since MSVCRT.DLL is available on both
Win 7 and Win 8.1, a APO built with WDK 7.1 loads on both.

 

Any help on resolving this dependency issue is appreciated. 

 

Leonard

 

From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Tim Roberts
Sent: Wednesday, May 14, 2014 4:18 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: SFX, MFX, EFX

 

Leonard Shoell wrote:

In order to make these changes for 8.1, I've updated to build the APOs with
Visual Studio 2013 updated with WDK 8.1, instead of building with WDK 7.1.
Without any changes to the code, it builds and runs on Win 7. However, on
8.1 Windows will not load the APO.

 

Even after making the changes for SFX/MFX, they still do not load on 8.1,
but load on 7.

 

I've experimented with lots of things, but still cannot get 8.1 to load the
APOs. But, if I build with WDK 7.1, they load with no issues on 8.1.

 

Any ideas? Is 8.1 looking for something I'm not supporting when I build with
WDK 8.1?


I was able to turn our LFX APO into an EFX on 8.1; a single binary works for
both cases, so it can be done.

You have to implement IAudioSystemEffects2 and implement GetEffectsList.
Your Initialize routine has to check for APOInitSystemEffects2.  Your INF
has to add one of the properties

PKEY_FX_StreamEffectClsid
PKEY_FX_ModeEffectClsid
PKEY_FX_EndpointEffectClsid

and one of 

PKEY_SFX_ProcessingModes_Supported_For_Streaming
PKEY_MFX_ProcessingModes_Supported_For_Streaming
PKEY_EFX_ProcessingModes_Supported_For_Streaming

For the most part, I think that was it.

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

Other related posts: