Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Acoustic Echo Cancellation in Flash/Flex using native libraries

I have to implement AEC in Flex video conferencing application. I know that it can not be done directly in Flash. I'm thinking to write a native application or library that will do AEC outside Flex.

As far I know Adobe Connect Pro is using some external library that do AEC. I'd like to follow this direction and do something similiar.

There comes two possibilities in my mind:

1) Independend custom AEC filter.

The custom AEC filter will be run in the background and will be processing all data from microphone and sound card and doing AEC. The echo signal will be the data that is to be played but delayed in a temporary buffer, something like this: aec(input, delayed_input, output).

I don't know if it work, because Flash microphone input doesn't know about my custom input and the same with the speakers. But how it is done in WinXP/Vista that have AEC at the system level?

2) AEC filter interacting with Flex's NativeProcess.

The filter will be run by NativeProcess. Flex app will pass microphone sound, received remote voice to the filter and return voice with echo removed and then Flex will output this to the speakers. Will it be correct?

If the 2) method is OK then I have following questions:

  1. I will start with Speex's AEC so in what format should be the data pased from Flex? If I choose Flex Speex codec for sound compression can I pass it directly to the speex library?
  2. Will be the performance OK? Calling NativeProcess library every sound frame buffer can be time consuming I think.
  3. Why there is no AEC implementation in AS3 that can be used directly from Flash? As far I know to do AEC you must have echo data and microphone data (in Flash 10 there is direct access to the microphone). There is definetly something that is stopping doing it like this but I don't know what it is yet :)
  4. Is there some free AEC implementation or a DSP library with in except Speex's that I can use?

PS I'm now a Flash/Flex expert so sorry for some stupid questions :)

Thank in advance for help, ternyk

like image 802
ternyk Avatar asked Feb 04 '10 07:02

ternyk


2 Answers

Good news - it's built into Flash Player 10.3 now :) Read the release notes and make sure to compile against Flex 4.5 SDK

like image 96
user652084 Avatar answered Sep 20 '22 10:09

user652084


In Java AEC is Possible and you can access java functionalities in AIR using Merpi. May be you should try this.

Thanks

like image 42
sudhansu Avatar answered Sep 20 '22 10:09

sudhansu