Jun Jiang wrote: > > Yes, the latency is a question. Now I need to find a way to capture > HDMI audio output data firstly and check latency later. > For my case, I use a 3rd part application and this application can > trun off Microsoft AEC. > Actually, I want to find a way to disable Microsoft AEC, such as set > key in Register. But I does not find it now. Could somebody show > suggetion on it? If you just need this inside one application, then it's not that hard. The application is building its own audio graph. It can hook into the loopback output, and combine that with the microphone input to do the cancellation. No drivers, no APOs, no magic. The application can disable APOs. The one overriding key concept in the Vista-and-beyond audio engine is that the application should be in complete control. There shouldn't be anything slipped in to the audio stack that the application didn't know about. In the days before Vista, every audio manufacturer and system vendor and application developer and value-added reseller had their own cool idea for how to tweak the audio path. As a result, some systems ended up with multiple filters that caused god-awful latencies and quality impacts. The professional audio guys complained, and this is the result. This applies in your case. AEC is only useful if you have a microphone and speaker, where BOTH are in use, and where the output of the speaker can be heard in the microphone. That's a very specific circumstance. You don't want your AEC code to be installed at all times (well, maybe you do, but your users do not). It would get in the way if they were listening to a DVD without using the microphone. You are going to need to understand the Vista audio engine. There are some excellent articles and white papers on the APO architecture and the system effects APO. Have you read them? Here's an index to some of the white papers: http://msdn.microsoft.com/en-us/windows/hardware/gg454527 Of particular interest are "Custom Audio Effects in Windows Vista: http://msdn.microsoft.com/en-us/windows/hardware/gg463025 and "Reusing Windows Vista Audio System Effects": http://msdn.microsoft.com/en-us/windows/hardware/gg463044 > I found your previous post, > http://www.winvistatips.com/system-wide-audio-filter-driver-t819251.html, > about APO. > You said that APO is the extension of hardware and it should co-work > with hardware together. > I just want to know if it is possible to make a APO to attach to other > hardware driver, such as my case, to attcah to Intel Display Audio > driver to capture output audio data? Or to attach to some system level > to capture audio output data? > Or whether can I make the global APO to capture all possible audio > output data? Is it possible? Yes. Is it the recommend solution? No. The official Microsoft position is like I said: an APO is an extension of the hardware. When you install your APO, the APO's name becomes part of the audio driver name that the user sees. Now, it's true that many people implement solutions that are not the recommended solution, but there's a risk. I do know of one company that implemented AEC by having a user-mode application fetch the data using the loopback path, then feeding that back into a filter driver on their USB audio microphone driver, where the AEC algorithm was implemented. No APO was required. > My another question: Is APO not recommended to do it or APO impossible > to do it? If this is going to be part of a product that you expect to sell, it might be worthwhile for you to try to set up a face-to-face meeting with members of the Microsoft audio team. They have some very smart people there who have, mostly, seen it all before. They might be able to provide you with guidance. -- Tim Roberts, timr@xxxxxxxxx Providenza & Boekelheide, Inc.