[Gta04-owner] Replicant: Android Echo Cancellation

xdrudis at tinet.cat xdrudis at tinet.cat
Sun May 10 21:54:40 CEST 2015


On Sun, May 10, 2015 at 11:34:28AM +0200, Dr. H. Nikolaus Schaller wrote:
> 
> But what could “UUID” mean in this context?
>

I've never worked with android, replicant or similar systems, but from a little
web search it would seem just a universally unique identifier that each implementation
of some audio effects interface generates to identify the implementation. 

Maybe this libaudiopreprocessing.so is provided by each vendor with
code adapted to the specific hardware (using that DSP?), so there are
many different libaudiopreprocessing.so in the world and so that the
middleware knows which one to call (in case a system has more than one
library implementing it, or multiple versions of the lib), an UUID is
generated either when creating the source code or when building the
.so . Then the configuration file cites this uuid.

The question is where is the source for the particular
libaudiopreprocessing.so the device uses , and maybe the compilation
scripts for that aec effect you want, and there might be the correct
UUID. I have no idea if this is free software or the sources are hidden 
or anything. 

I'd guess the uuid in the config file might match this uuid in the
descriptor of some instance of AudioEffect;

https://developer.android.com/reference/android/media/audiofx/AudioEffect.Descriptor.html#uuid

This class
https://developer.android.com/reference/android/media/audiofx/AcousticEchoCanceler.html
Has a getDescriptor method that returns a AudioEffect.Descriptor which has a uuid .

When someone develops an implementation of echo cancellation, they give their C implementation
an uuid, make sure the native_setup method can find the code when passed that uuid and 
maybe when the android middleware starts it builds a register which has AudioEffect 
instances with the available uuids and an AudioSource with stacks of AudioEffects for each purpose. 
Maybe it builds it from the .conf file. Maybe then
the java code (apps) that wants to use the echo cancellation can specify the AudioSource
it wants from one ofe the defined in the .conf file and instatiated in the runtime register. 

Then when porting AOSP or whatever to that device people can put the UUID in the .conf file. 

Looking around here one would say when someone creates an AcousticEchoCanceler it passes 
it a type id and an uuid, which it passes to the AudioEffect constructor which finally 
passes it to some native C code which must be the real implementation. But here I get lost. 

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/media/audiofx/AcousticEchoCanceler.java

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/media/audiofx/AudioEffect.java#AudioEffect.native_setup%28java.lang.Object%2Cjava.lang.String%2Cjava.lang.String%2Cint%2Cint%2Cint[]%2Cjava.lang.Object[]%29


But I don't know what I'm talking about, so sorry for the noise. 




More information about the Gta04-owner mailing list