[wdmaudiodev] Re: SYSVAD SwapAPO

  • From: amd 22102018 <amd22102018@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Tue, 26 Mar 2019 23:41:52 +0530

Thanks,Tim Roberts

I also did this experiment today that I being using "slate audio sample" in
that in swapapo the effects are present as LFX and GFX.
I've taken DelayAPO from "Tablet Audio sample" which is the latest from
In that in Delay apo the effects are denoted as SFX & MFX.

I renamed them from SFX & MFX to LFX & GFX.
(I know that during windows vista time they have used as LFX & GFX and for
windows 10 as SFX & MFX & EFX.)and I've build the Driver with out errors
and modified the INF and installed but now the problem is the Enhancement
tab is not getting reflected what might be the issue.

I've used the same "PropPageExt.cpp" of slate audio sample in tablet audio
sample. As in the latest tablet audio sample the PropPageExt.cpp is missing
and I've replicated some functions like "OnCheckBoxClickedEnableChannelswap
LFX" for Delay Apo too.

Made entries in INF and installed but Enhancemet tab not getting reflected
and getting an error called "Failed to Play Test Tone " when I'm trying to
Play the test tone from audio control panel.

Let me know why I got this error.
Kindly help me out with this.

Thank you!!!!!!

On Tue, 26 Mar 2019, 10:57 p.m. Tim Roberts, <timr@xxxxxxxxx> wrote:

amd 22102018 wrote:

Guys I am Working on SwapAPO(Slate Audio Sample).
May i know how the SwapAPO is getting called from the sysvad audio
driver i.e how is it hooked
i know that the Presence of APO is detected by the Audio Engine by
making entries in the .INF file.My Question is how APO is Hooked with
the driver how it is getting called

It is NOT called (or "hooked") from the SysVad driver.  The driver does
not know whether or not an APO is present.  The APO is loaded into the
Audio Engine, and gets called when the Audio Engine has new data, before
it writes the data into the device's circular buffer (or, on the input
side, after it reads new data from the circular buffer).

I want to implement an existing algorithm written in MATLAB as a sAPO
and hook it to the Audio Engine & Audio Driver. How can it be Done. I
Have converted the MATLAB code in to the "C Code" and by using Visual
Studio i have converted it to the .dll

You said you are working with sysvad and have it working. Right?  In
that case, you can see the code.  You can see that there is an
APOProcess method that does the real work.

How the GUID can be Assigned to this APO in the C Code and add it to
my existing Project of "Slate Audio Sample & SwapAPO" & this APO is
for capture graph.

What GUID do you mean?  You'll need to create new GUIDs in the IDL
files.  Those are referenced symbolically in the code, so it's centralized.

i used the .dll in >INF and it is loading clearly that i can see it in
Driver Properties (But i want GUID for it so that i can use it in INF
"FX STREAMEFFECTS _CLSID" )i know generating sample GUID;s using
visual studio.

Did you search the code to look for the GUIDs in the INF file? That
would tell you what you need to change.  They only occur in one file.

I have tested it with the test test tone and captured it using
audacity the channels are getting swapped. While debugging using
WINDBG when the set the Break Point at "APOProcess" it is not getting
breaked and the APO Process call i am unable to see it using windbg
but the effects are getting applied and the file is getting saved in
to the C:\ location as it is present in the "savedata.cpp"

What process were you debugging?  Remember that your APO is not running
in the Audacity process, so you can't debug Audacity. Your APO is loaded
and running in the protected Audio Engine process.  In order to debug
that process, you need to turn off it's "protected" status by turning on
the DisableProtectedAudioDG, then "attach" to the process using windbg.


However, if you use debug prints with OutputDebugString,  you can see
those with a tool like DebugView even without using a debugger.

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

Other related posts: