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 OSes. 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. ~Aruna Arunasree Swapna Software Engineer Logitech 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. Harry 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 application. 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 do. niaren Windows XP was released in 2001. It's not really accurate to call it "newer". > 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 ?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/