The Voice capture DMO has two different working modes, "filter mode" and "source mode". In filter mode, the DMO works like a filter. It takes microphone (and speaker if AEC is enabled) input signals and produces clean output. Application is responsible for capturing microphone and/or speaker signal and sending them to the DMO. For per-stream echo cancellation you want to use filter mode. The sample code in the SDK shows how to use source mode. MFPKEY_WMAAECMA_DMO_SOURCE_MODE (VT_BOOL) This property key specifies the DMO working mode. If this key is set to true, the DMO works in source mode, otherwise it works in filter mode. AEC and microphone array processing in Vista are application graph features. So it is up to the application to use the feature or not. Thanks. Shuba Iyer Microsoft Corporation ________________________________ From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Tim Roberts Sent: Tuesday, October 03, 2006 10:47 AM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] AEC in Vista I was excited to find an AEC/microphone array sample in the Vista SDK, until I realized that it was just a demo application showing how to use the existing Voice Capture DMO, rather than a sample showing how to WRITE such a DMO. I have a client with a proprietary hardware-assisted AEC mechanism in 2K and XP, and they want to know how to implement that in Vista. Thus, I have a couple of questions about MFWMADMO.DLL, if I may. (Hmm, how do you pronounce MFWMADMO? ;) This DMO snaggles both incoming and outgoing audio streams, as it must to do echo cancellation. How does it do that? I mean, I think I now understand the proper way to connect to a microphone source, but I don't think I know how to eavesdrop on the output end in the same APO. Further, the documents say "If AEC is enabled, the DMO can capture speaker streams only after the audio mixer. This means that all system sounds are canceled (per-system cancellation) as well as the far-end voice." Again, how does it do that? I was under the impression that the only way to accomplish such a thing was by writing GFX sAPO, and even that is wired to a single output device. Does the DMO make itself the GFX sAPO? This DMO will only work in an application that specifically instantiates it. Is there a way to create things so that, for example, I can get AEC while using the standard Sound Recorder application? Is there any chance of getting source code for this DMO, or for providing hooks to allow 3rd party replacement of some of the processing stages? -- Tim Roberts, timr@xxxxxxxxx<mailto:timr@xxxxxxxxx> Providenza & Boekelheide, Inc.