In Vista, the new core audio API is called "Windows audio session API (WASAPI)". WASAPI allows users to capture the speaker render signal after the mixer. See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/CoreAud/htm/wasapi.asp and http://msdn.microsoft.com/library/default.asp?url=/library/en-us/CoreAud/htm/iaudioclientinitialize.asp for more details about loopback capture. Note the AUDCLNT_STREAMFLAGS_LOOPBACK stream flag in the Remarks section. When the DMO is in source mode, we don't know the signal that is rendered by the AEC application. However we can get the signal after the audio mixer. So not only is the far-end signal cancelled, but also the system sounds or other signal played by other applications through the same audio device are also cancelled (per-system echo cancellation). >> So, am I, then, expected to add some kind of a "tee" to my application in >> order to route the final output signal back to the DMO's speaker input? Essentially that is what you would do. If you want the per-stream AEC, i.e. cancellation of only the far-end signal rendered by the AEC application you will have to use the filter mode DMO. In this case you will loopback just the far-end signal to the DMO input for processing. All other sounds rendered by other applications will not be cancelled and will be heard at the far-end. Shuba Iyer Microsoft Corporation ________________________________ From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Tim Roberts Sent: Tuesday, October 03, 2006 1:37 PM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] Re: AEC in Vista Shuba Iyer wrote: 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. So, am I, then, expected to add some kind of a "tee" to my application in order to route the final output signal back to the DMO's speaker input? And this still doesn't address this quote from the DMO documentation: 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. My application can't gain access to the speaker streams after the audio mixer. How is the DMO doing that? AEC and microphone array processing in Vista are application graph features. So it is up to the application to use the feature or not. Well, that's certainly one position, but it is not unreasonable for a user to want ALL of their microphone input (including Sound Recorder) passed through AEC. That goal has now been made rather difficult to achieve. -- Tim Roberts, timr@xxxxxxxxx<mailto:timr@xxxxxxxxx> Providenza & Boekelheide, Inc.