[wdmaudiodev] Re: FW: Re: newbie questions

  • From: Arunasree_Swapna@xxxxxxxxxxxx
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Tue, 12 Oct 2010 09:33:16 -0700

I think for the basic signal processing you plan on achieving via a
low-level driver can still be done in an APO.
I have seen 10 Band equalizers implemented in APOs, despite EQ being a
non-linear algorithm.
I cannot speak for  "Do not use nonlinear processing." in sysfx APO docs,
but you could check with Microsoft folks no that one.

If I were you, I would try to stick with APO as much as I could....You
could potentially reduce the no. of blue screens caused by your algorithm
as the effects run in user-mode.
APOs are much simpler to implment....but however will work on only vista
and up, as you already seem to know.

If you still have to support XP(which most of the driver developers still
have too)....avstream driver is inevitable.

It is more a resource decision to use an avstream driver, across all the
Anyone who wishes to use single code base across all the Windows based OSes
would probably go this route.
On the flipside, avstream drivers are more complex to implement..... anyone
who maintains legacy stuff would continue doing so.

I hope this answers your questions of using avstream Vs APO.


Arunasree Swapna
Software Engineer
360-817-1360 (office)

From:   niaren 9 <niaren9@xxxxxxxxx>
To:     wdmaudiodev@xxxxxxxxxxxxx
Date:   10/12/2010 02:39 AM
Subject:        [wdmaudiodev] Re: FW: Re: newbie questions
Sent by:        wdmaudiodev-bounce@xxxxxxxxxxxxx

Thanks for feedback Harry,

Still though, I don't want to limit the demonstration to one or several
movie files. The user (which could be a hardware or device manufactorer or
similar) must be able to use any material for his verification purposes.

It seems I have to either implement AVStream driver and fight the system or
implement SysFx APO module and limit the demonstrator to Vista and beyond.

I have discovered that a big US audio company recently released a piece of
software demonstrating their audio features using what I think is an
avstream driver. The demonstrator runs on Vista and win7. By simple search
in the binary .sys file I have verified that it imports KsInitializeDriver.
So although it may be a complex task to develop a working avstream driver
it might still be feasible...

Searching google I found a document "Custom Audio Effects in Windows Vista"
which describes the System Effect Audio Processing Objects (sAPOs) (
http://www.microsoft.com/whdc/device/audio/sysfx.mspx). In the end of the
document under 'Signal Processing Requirements" I stumbled across this
sentence "Do not use nonlinear processing.". I can hardly think of any
serious audio effects which aren't nonlinear. If this is the official
opinion on custom sAPOs they are more or less useless. What do you think?

2010/10/12 Harry Graham <HarryGraham@xxxxxxxxxx>
  For demonstration purposes, there are much simpler approaches than
  writing a driver.  For example, drop your movie file into graphedt, and
  it will create a graph for playing.  Then write a grabber filter, and
  insert it into the audio out path.  Implement your audio processing in
  the grabber filter.

  For a real product, it would still be much simpler to implement a player
  than a driver.

  Best of luck.


  From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:
  wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of niaren 9
  Sent: Monday, October 11, 2010 2:41 PM
  To: Tim Roberts
  Cc: wdmaudiodev@xxxxxxxxxxxxx
  Subject: [wdmaudiodev] Re: newbie questions

  Thanks Tim,
  Point taken! What I meant was the most used OS versions today. I believe
  XP is one of them.

  If I understand you correctly then if I want to support OS versions from
  XP and beyond then there is no obvious (best practice) way to do it
  because XP requires an avstream filter driver implementation and for
  Vista and win7 this is not recommended. That is not what I had hoped
  fore. Then two different implementations are required, one for XP and one
  for the remaining.
  I'm not familiar with the new audio philosophy but in the scenario I have
  in mind the user actively starts a control application for the AVStream
  driver. In this view a given media player does not directly request extra
  audio features in the audio stream but the user requests it by starting
  the control application and by enabling the features in the GUI control
  What I want is to process the audio stream before it is going to the
  speaker(s). In this way I don't have to implement a movie player myself
  in order to demonstrate the audio features for movies. Any player would
  Windows XP was released in 2001.  It's not really accurate to call it

  > and with any media player available (not just windows media
  > player).The audio processing must be controlable for the user and the
  > audio processing is intended for music and movie playback
  > primarily.How can I do that? From what I have read, it seems I could
  > achieve the above by inserting a filter into the audio driver stack. I
  > believe this should be possible by implementing an AVStream driver.
  > My first question: Is this correct?

  In XP, that's really the only option.  In Vista and beyond, you have the
  option of implementing a System Effects Audio Processing Object (SysFx
  APO), although the philosophy is that such an object is directly
  associated with a specific piece of hardware.  The new audio philosophy
  simply does not allow your model.   There should not be anything in the
  audio stream that the application did not specifically request.  Thus,
  you are fighting the system.

  > Follow up question? Is there is an easier way to achieve what I want?
  > Can it for instance be done without any driver development?

  That depends.  If you just want to grab a copy of the final speaker
  output, do something with it, and send it somewhere else, you can do
  that by using a rendering endpoint in loopback mode.  That won't let you
  modify the output stream, but you can monitor it.

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


  WDMAUDIODEV addresses:
  Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
  Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
  Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx
  Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx


GIF image

Other related posts: