zjzhang-cn / imsdroid

Automatically exported from code.google.com/p/imsdroid
0 stars 0 forks source link

support for wideband audio codecs and echo cancellation #82

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Only narrow band codecs seem to be supported. Also, hear an echo on calls
2.
3.

What is the expected output? What do you see instead?
It will be great to see support for AMR-WB and fix echo issues

What version of the product are you using? On what operating system?

Please provide any additional information below.

Original issue reported on code.google.com by saket...@gmail.com on 23 Oct 2010 at 2:06

GoogleCodeExporter commented 9 years ago

Original comment by boss...@yahoo.fr on 25 Oct 2010 at 10:06

GoogleCodeExporter commented 9 years ago
Is it just a matter of adding the amr-wb codec similar to what is done for 
amr-nb? i.e., does the underlying audio infrastructure support 16KHz sampling 
rate or is
major work needed to support 16KHz sampling and wideband codecs in general?

Original comment by saket...@gmail.com on 3 Nov 2010 at 12:01

GoogleCodeExporter commented 9 years ago
Off course the underlying framewok (doubango) supports wideband audio codecs. 
For AMR codec, I'm using opencore-amr which AFAIK doesn't support WB encoder 
(only decoder).

Original comment by boss...@yahoo.fr on 3 Nov 2010 at 11:38

GoogleCodeExporter commented 9 years ago
Dear all,
Plese help me! How can i turn off echo on IMSDroid? Thanks

Original comment by hoangdinhtrung on 18 Dec 2010 at 7:15

GoogleCodeExporter commented 9 years ago
The latest SVN version of IMSDroid includes support for Echo Cancellation.

Original comment by boss...@yahoo.fr on 11 Jul 2011 at 8:49

GoogleCodeExporter commented 9 years ago
Echo canellation added in "IMSDroid 2.0.431".apk

Original comment by boss...@yahoo.fr on 13 Jul 2011 at 11:53

GoogleCodeExporter commented 9 years ago
I tested this feature with HTC Hero (android 2.1) and with Samsung Galaxy Gio 
(android 2.2) and the echo remains. (with Speaker ON and even with Speaker OFF).

How can I help?  (I already changed the echo tail but the problem remains.)

I'm getting this debug message in logcat:
"HTC Acoustic        Cannot enable/disable VR mode, enable=0"
VR means Voice Recognition, right?

Thanks in advance,
Nelson

Original comment by nelsonms...@gmail.com on 11 Aug 2011 at 11:15

GoogleCodeExporter commented 9 years ago
As we already said 
(https://groups.google.com/group/doubango/browse_frm/thread/e2675dd21bcb26ab), 
the webrtc echo canceler is only enabled on ARMv7-a devices.
HTC Hero & Samsung Gio = ARMv6.
We are working on some optimization to enable the echo canceler to run on 
ARMv5TE.

Original comment by boss...@yahoo.fr on 11 Aug 2011 at 2:14

GoogleCodeExporter commented 9 years ago
Revision 448 did not fix it for me but I was able to get echo cancellation to 
work on my Arm5 (WM8650) processor. Below are the steps I took.

1. I wrapped Speex with JNI and called echo processing routines before sending 
PCM frames to doubango. No echo was canceled no matter what Speex settings I 
tried.

2. Because Speex is very sensitive to delay between playback and echo frames I 
implemented a queue and queued all packets sent to AudioTrack. The size of the 
queue should be roughly equal to the size of internal AudioTrack buffer. This 
way packet were sent to echo_playback roughly at the time when AudioTrack send 
packets to the sound card from its internal buffer. The delay was removed with 
this approach but echo was still not cancelled

3. I wrapped WebRtc echo cancellation parts with JNI and called its methods 
before sending packets to doubango. The echo was still present but the library 
obviously was trying to cancel it.

4. I applied the buffer technique described in P2 and it finally started to 
work. The delay needs to be adjusted for each device though. Note also that 
WebRtc has mobile and full version of echo cancellation. The full version 
substantially slows the processor and should probably be run on ARM7 only. The 
mobile version works but with lower quality

I hope this will help someone.

Original comment by tayurs...@gmail.com on 19 Aug 2011 at 4:58

GoogleCodeExporter commented 9 years ago
WebRTC echo cancellation is only enabled on ARMv7 devices so if you are using 
an ARMv5 device then it's normal that it won't work for you. WebRTC AEC is 
disabled on ARMv5 devices because of CPU overhead. WebRTC AECM (Mobile version) 
is also supported by Doubango but not used because it gives poor results. Here 
is the line to change if you want to use AECM on Android: 
http://code.google.com/p/doubango/source/browse/branches/2.0/doubango/tinyDAV/in
clude/tinydav/audio/tdav_webrtc_denoise.h#39

When using Doubango built-in WebRTC AEC/M you don't need to queue the packets 
because there is already an adaptive jitter buffer and the echo tail is at the 
maximum.

What is the CPU usage on your ARMv5 device? What are your device's 
specifications?
We made our tests on HTC Hero and the CPU was at 80%.

What is the value of the echo tail and skew?
If all is working good for you and you are happy then we can add WebRTC AEC to 
tinyWRAP with all required jni functions :)

Original comment by boss...@yahoo.fr on 19 Aug 2011 at 6:19

GoogleCodeExporter commented 9 years ago

Original comment by boss...@yahoo.fr on 21 Jun 2012 at 6:21