[wdmaudiodev] AEC in Vista

  • From: Shuba Iyer <Shuba.Iyer@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 3 Oct 2006 11:48:28 -0700

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.

Other related posts: