My favorites | Sign in
Project Home Downloads Wiki Issues Source
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 49: Alternate Codec Support
77 people starred this issue and may be notified of changes. Back to list
Status:  Started
Owner:  ----


Sign in to add a comment
 
Reported by andrusjo...@gmail.com, Jun 9, 2009
If possible, it would be REALLY helpful if multiple codec support was
included as there are a couple codecs that would be much better for a phone
like this. Or even set a fallback codec, however that is not even close to
mattering...

The codecs that would be EPIC to see supported are:

ILBC - Internet Low Bitrate Codec (Good for edge, or low signal)
GSM  
G729
G711

Thanks!
Jun 9, 2009
Project Member #1 pmerl...@googlemail.com
G.711 is already supported. The other mentioned ones are not supported by Android OS. 
Implementing them within a Java application like Sipdroid is not possible.
Status: WontFix
Jun 9, 2009
#2 mikexilva@gmail.com
From android officially supported codec table:
http://developer.android.com/guide/appendix/media-formats.html
there seems to be only audio encoder for "AMR-NB" with bitrates from 4.75 to 12.2 
kbps sampled @ 8kHz. This should be more efficient than the raw G.711 data. (even if 
it needed a server side codec add-on).
Anyway don't know if SIP allows to negotiation of different codecs in each direction, 
but it would be nice to decode wide-band audio using like Vorbis or MP3 and encode 
with other limited codec.

What about a java implementation of Speex (there seems to be aleady a Java 
encoder/decoder):
http://freshmeat.net/projects/jspeex/
http://sourceforge.net/projects/jspeex/
don't know about real time performance in current android hardware, but performance 
wise, speex seems to be a very good speech codec (and free of patents/licenses)... if 
it prove to be successful, it could later implemented in android core media formats.
Jun 25, 2009
Project Member #3 pmerl...@googlemail.com
Today the NDK (native development kit) became available. That should allow developers 
to add low bitrate codecs.
Status: New
Jun 26, 2009
#4 andrusjo...@gmail.com
This is pretty important, as what good is it to have SIP if you can only use it at
the best of times...even one selectable lower bitrate codec would be sufficient.
Jul 26, 2009
Project Member #5 pmerl...@googlemail.com
(No comment was entered for this change.)
Labels: -Type-Defect Type-Enhancement
Aug 2, 2009
#6 andr...@tastemycity.com
I would like to suggest that g729 is particularly important for compatibility
reasons. Most SIP providers support g721 and g729. There are, however, licensing
issues with the g729, so I suggest selling a "codec upgrade package" on the market to
cover the licensing cost. It should be $10/channel.
Aug 22, 2009
#7 marcu...@gmail.com
I'd second the request for iLBC, Speex and GSM fullrate codecs, as they are freely
implementable and useable, and moreover they use much less bandwidth, making use over
GPRS or when there are limits in exchanged data feasible.
Aug 22, 2009
#9 f8f...@gmail.com
I'd also say a lower bitrate codec would be great for calls over edge, and I'd also
push for g729, even if I have to pay a fee, cause it's supported by my SIP provider.
Aug 25, 2009
#10 feroz.ba...@gmail.com
Yes, low bandwidth codes are a must. Mobile phones have come a long way in the last
few years. It is very clear that within the next year or so, everyone will be looking
at using their mobile phone for full fledged VOIP. A low bandwidth codec will be very
much welcomed by everyone.

Aug 28, 2009
#11 masterc...@gmail.com
+1 g729 is the only Free Codec my Provider has enabled ... even when paying the 
Monthly Option Very Few other Codecs :S


Sep 13, 2009
#12 andrusjo...@gmail.com
I would once again like to ask please to have either G729 added or better yet...ILBC
- Internet Low Bitrate Codec. For those of us with not perfect edge even this would
really really help. And I would help if I knew how...
Sep 24, 2009
#13 giacomo1...@gmail.com
g729 support is urgent :P
Oct 4, 2009
#14 scotthaz...@gmail.com
I have been attempting jumping a somersault from the excitement I get from sipdroid.
 There is so much potential!  Thank you for all your work.  This is truly a FreeSky!

But alas, you need a codec for every season for sipdroid to be viable.  Please add
more codec support and make this the killer app!  I wish I could contribute more than
just stating the clearly obvious matter.  Escalate this to urgent?
Oct 5, 2009
#16 mhdazhar...@gmail.com
Android OS support the g729 codec?
Oct 6, 2009
#17 andrusjo...@gmail.com
It's possible to add support to Android, as it's essentially a java operating system
to some degree, and other symbian phones have g729 support. Symbian is a java
operating system as well, but I understand it would probably be alot of work. Any
work on it would be very awesome though!
Oct 7, 2009
#18 andr...@tastemycity.com
Neither android nor symbian are "java operating systems".
Android is linux, written in C-language with a proprietary-Java based UI stuff.
Symbian is entirely irrelevant. It is neither linux, nor Android-java.

As for whether "android supports" g729 or not...
No, of course not. And no, it doesn't matter.
You just need the source code for it (encoder and decoder) in C-language (use NDK
because Java is slow).
Oct 8, 2009
#19 andrusjo...@gmail.com
Symbian uses java-apps as it's primary application type, so it isn't entirely
irrelevant, as there are some sip java clients for Symbian, and finding such a client
that is open-source would save alot of work. APK's in android are in the devlik JAVA
VM. Unless you make something in the NDK like you said, it runs in the Java VM. I
know the operating systems aren't written in java, of course! That'd be rediculously
slow. I meant that they primarily are programmed FOR in java, as in the applications.

I agree with your last paragraph however.

Sorry for not having 'perfect' syntax, gosh.
Oct 9, 2009
#20 andrusjo...@gmail.com
'And as ArsTechnica points out, despite being based on the Linux kernel, the open
source Android stack is essentially a creation of Java, and quite distinct from
Linux, making cross-platform application porting difficult.' -LinuxforDevices.com

As I pointed out, perhaps there is some open-source java code that can be repurposed,
such as g729 encoder and decoder. 

Link for quote:
http://www.linuxfordevices.com/c/a/News/Simulator-runs-Android-apps-on-Ubuntu/
Oct 9, 2009
#21 andrusjo...@gmail.com
I did some research in the licensing of the g729 codec and it seems like it is a
proprietary codec that would need some fan-dangling much like cyanogen's most recent
mods. 

Cyanogen was forced to make a 'framework' to include google apps from HTC's ADB
image, and extract the apps into his ROM to sidestep 'distribution'. We would need to
do something similar with a 'codec api' much like Asterisk's implementation. Someone
would download SIPDROID with only the current included codec, and then they would be
able to download the snap-in codec module for the cost of licensing (usually
somewhere around $10 per implimentation - multiple lines equals more money). 

I got this information from a message by Matthew Rubenstein for the licensing issues
that SIP-Communicator faced for inclusion of G729. This message is pasted below and
shown here: http://markmail.org/message/xwducxagerofmicf

 'I read with interest  bug #176 , "support for g729", at
https://sip-communicator.dev.java.net/issues/show_bug.cgi?id=176 . I work with the
Asterisk PBX, and I can offer some insight into how SIP-Commuicator can support G.729
without violating legal constraints on either SIP-Communicator or G.729 .

G.729 is a patented codec algorithm. That means that any software that encodes data
into G.729 format, or that decodes G.729-encoded data into any other format, must
operate under an explicit license originating in the G.729 patent holder. It's not
clear (in murky US patent/DMCA/whatever law) whether you are prohibited from writing
and operating code that implements a G.729 codec (either/both encode and/or decode)
*if you do not distribute it, and do not derive any commercial gain from it*. In
other words, research and education *of yourself* are commonly believed to be safe,
even if you do not have a license to do so. This freedom might not be protected by
law - I am not a lawyer, and I don't know of any actual court cases, especially under
the G.729 patent - but the practice is widespread, specifically with G.729 codecs. In
other words, the audio processing community "conventional wisdom" that is being used
by many developers and researchers around the world says that it's OK to do R&D by
writing and testing G.729 codecs without a patent license.

The patent is separate from the code. There are several "reference implementations"
of G.729 codecs in executable code distributed as source code. There are various
licenses that come with those code samples. Intel, for example, offers a code package
that is widely used, but which prohibits use in commercial applications. There are a
few other restrictions on the Intel code, but it is expressly supplied for R&D, and
used as such fairly widely. Other implementations are offered with similar freedom
for R&D. Again, they are covered under copyright restrictions, which are independent
(and in addition to) the patent license restrictions.

If you want to use someone's codec, even a commercially available binary codec, you
also need to have a license originating in the patent holder. Code offered
commercially for execution in commercial environments usually (always, AFAIK) comes
with a patent license. Sometimes those licenses are expensive, especially for
multiple concurrent instances of a running codec (the terms under which the patent
license is usually offered). However, Digium (the company that produces and publishes
the fairly open-source Asterisk PBX) sells G.729 codecs, with patent licenses they
relicense from the patent holder, for the lowest price I know. It's $10 per
concurrent stream (ie, 2 streams for a typical 2-person phonecall means 2 codecs
means $20 in licenses). The money pays for the license, and compensates Digium (which
it also invests in its other operations, including open Asterisk development). There
are other relicense sources, but they're all more expensive than buying them from
Digium, except at large numbers of concurrent streams/codecs (eg. 10,000 or so, maybe
fewer).

I would recommend SIP-Communicator operate in this Intellectual Property environment
in the following manner: Code SIP-Communicator with an interface for *any* codec as a
module, including G.729, the generic G.711, maybe GSM or some other popular codecs,
all with the single "codec" API. Developers can use the Intel or other reference code
in R&D to develop the API, as long as they do not distribute the G.729 code they used
in violation of its copyright license (eg. noncommercial). Offer G.729 as an addon
module. Then, with some finesse, perhaps the project (or someone using the project's
products) can make a deal with Digium or some patent relicenser to bundle a licensed
G.729 executable for a $fee, or include in an installer script an online ecommerce
transaction for purchasing licenses for bundled code, etc. The optional G.729 codec
can be the kind of option that distinguishes commercial installs from noncommercial.
I recommend using Asterisk's G.729 inclusion techniques as a model:
http://www.google.com/search?q=site% 3Avoip-info.org%20asterisk%20(g.729%20OR%20g729) .

It's worth it, because G.729 is high quality for the low bandwidth, and is very
popular with VoIP/PSTN gateways, and very widely supported in terminals (which means
minimal transcoding, therefore maximal performance). Some gateways, especially those
with low per-minute prices (and small minimum minutes committments), require G.729 to
connect. So including some way for SIP-Communicator to use G.729, despite the
patent/license hurdles, is a very valuable feature. I hope I can help this project to
achieve that goal.

-- 

(C) Matthew Rubenstein'
Oct 15, 2009
#22 kapo.ka...@gmail.com
And what about G726? It`s low bitrate codec too...
Oct 15, 2009
#23 andr...@tastemycity.com
The usefulness of any particular audio encoding is based on use and availability.

Sure G726 might be a good low bitrate compression scheme, but how many VOIP providers
actually use it?

The reason G729 should be absolutely top priority is that it does the required job
perfectly, AND virtually *all* VOIP providers support it.

Remember that you can only use what your provider actually supports!


*HOWEVER*... an even better approach to this might be to include a generic plugin
interface. This would allow for the use of FREE compression schemes (like speex for
example) for those whose providers support them, but would also allow users to
actually pay for a license and use G729 if required.
Oct 16, 2009
#24 andrusjo...@gmail.com
Ya, that sounds good. It would be a good idea maybe to try to build a retro-fit for
the current plugins available for another open-source implimentation. Such as maybe
astrisx? It's an idea...
Oct 17, 2009
#25 jeremy.workman@gmail.com
I think "iLBC" is the best solution. Many top SIP providers, like Gizmo, support 
this codec and it is royalty free! Also, tests show iLBC actually performs better 
than G.729 in restrictive networks. As noted before, iLBC would work best in the 
native C code (via NDK). The key would be to create a UI for the C code in the 
Sipdroid app. Currently researching...
Oct 17, 2009
#26 mouloud....@gmail.com
+1 Jeremy ! iLBC is the best solution, it's also a royalty free codec no fees, no patents, best quality in bad 
networks... We should ask iLBC support from android devs
Oct 17, 2009
#28 mouloud....@gmail.com
Siphon, the SIP app for iphone (hosted on google code) has integrated g729 in its last version ! and this codec is 
not supported natively by the very proprietary iphone os, 
Why couldn't we do the same thing with g729 and ilbc on android ? (isn't android more open than iphone ?!)

https://code.google.com/p/siphon/issues/detail?id=129
Oct 19, 2009
#29 duckmons...@gmail.com
Siphon is written in C and based on PJSIP, Sipdroid is written in Java and based on
MJSIP. There is very little comparison between the two unfortunately.
Oct 20, 2009
#30 andr...@tastemycity.com
@duckmonster:
Not particularly relevant.
1) transcoding within java would be relatively heavy on the CPU. Best to use the NDK,
which means that it would be in C, which means that any C code containing the
required functions would be applicable.
2) pjsip vs mjsip is not particularly relevant since the objective is to build in the
transcoding components to the audio pipe. The actual protocol level changes required
to the sip stack (mjsip vs pjsip) are trivial. That means simply throwing in the
right header indicating the audio encoding to use and being able to receive and
understand the response header, which is used to apply the appropriate transcoders
when the audio streams are initiated.

*the audio transcoding is independent of SIP.
*think in terms of HTTP, i.e. request: "Accept-Encoding: gzip,deflate", response:
"Content-Encoding: gzip". The only real difference in SIP is that it is 2-way.
Oct 22, 2009
#31 jeremy.workman@gmail.com
We should be able to use JNI bridges to access the Native Heap using a Long pointer. 
Codecs like iLBC are available in C packaging. We would then only need two 
components. The class file (ILBC.class) calls a native method, and the native 
library (ILBC.dll or rather ILBC.mk) implements the native method.

http://java.sun.com/docs/books/jni/html/jniTOC.html
Oct 22, 2009
#32 andr...@tastemycity.com
That would be "ILBC.so"
Oct 26, 2009
#33 john.kie...@gmail.com
Wouldn't speex be a better option than ILBC?  From what I understand, Speex is able
to operate at much lower bandwidth than ILBC, opening up the possibility of use over
GPRS (let's face it.  Even edge is not available everywhere).
Oct 26, 2009
#34 mouloud....@gmail.com
Right but Speex is much less supported by SIP providers than iLBC ! so Ithink that the developpement should be 
focused on iLBC first (and then G729 if possible and speex, GSM...)
Oct 26, 2009
#35 droidhac...@gmail.com
As I've already pointed out, the only two forms that you can count on are G711 and
G729. The rest are *rare* and therefore not worth focusing on.

But really, the FACILITY to use ANY alternate encoding is what needs to be focused
on. Forget about implementing a specific encoding, fix the system first and then
implement encodings on an as-demanded basis.
Oct 27, 2009
#36 philipp....@gmail.com
iLBC is not rare - a lot of voip providers support it already
(http://www.slashphone.com/115/3229.html). 

As several other people here mentioned already, it has the major advantage that it is
free - which G729 is not. This makes it so much easier to add it to an open source
project.

Btw, i found the following (abandoned) project with a speex implementation for
android (quite rudimentary, though):
http://android.wooyd.org/files/VoiDroid-0.0.1.tar.bz2
Oct 27, 2009
#37 andrusjo...@gmail.com
I would definitely second iLBC. Being free, and relatively widely used it would be
great. A codec framework would make more codecs easier, however iLBC I would say, is
more important...that's my opinion...
Oct 29, 2009
#38 jabawok....@gmail.com
Another vote for ilbc due to it's excelent packet loss concealment. This issue is the
only thing holding back android from being a truely disruptive technology on 3G
networks. Keep up the great work!
Nov 12, 2009
#39 robert.f...@gmail.com
I think the docs say that sipdroid supports g711a.  Can we get support for g711u
(uLaw)? Thanks!
Nov 22, 2009
Project Member #40 joe.n.ja...@gmail.com
I was able to write a JNI linking library to the pjmedia-codec encode/decode
functions. The Sipdroid source I am providing is hard-coded for the GSM codec. I have
not experimented with compiling and linking in the Intel IPP extension for PJSIP,
which would provide the even higher compression G.729 and G.723 codecs.

ILBC and SPEEX are compiled in, but test very poorly using the PJSIP benchmarking
utility, so I stuck with GSM. There is one glaring bug, where the System.load() call
fails after Sipdroid has been Exited and started again.

I am releasing this mostly working version under the "release early release often"
principle. Hopefully someone out there knows how to find if Java has already loaded a
library, or how to somehow clear out the existing library from memory.

For those interested, the results of the PJSIP benchmarking application on a HTC Hero
are included in pjsip-test.txt.

Full sources at: http://rewire.org/sipdroid-gsm/source.zip (Can only upload 10M files
here)

To build, use the build-sipdroidlinker script as:

./build-sipdroidlinker --android-dir <your mydroid dir> --pjsip-dir pjproject-1.0.2
--sipdroidlinker-dir sipdroid-linker

 
sipdroid-gsm.apk
790 KB   Download
pjsip-test.txt
6.1 KB   View   Download
Nov 22, 2009
#41 tommy.ht...@gmail.com
Most of the ITSPs are using G.711 u/a-law under a wired environment (DSL or Cable), 
some use G.729a.
When using the Sipdroid on a mobile phone with HSPA/Edge/GPRS, it'd better to 
support G.729a.

Nov 23, 2009
#42 jeremy.workman@gmail.com
@Joe, What Sipdroid source files did you change to create the interface with the 
PJSip JNI (RtpStreamReceiver, RtpStreamSender)? Does your interface still init the 
sipdroid/media/G711 in sipua/ui/InCallScreen.java? Could the ILBC and Speex benefit 
with a change to the buffer?
Nov 23, 2009
Project Member #43 joe.n.ja...@gmail.com
RtpStreamReceiver and RtpStreamSender call encode() and decode() respectively. The
JNI linker open() is called in Sipdroid.java, which is probably not where it should be.

The open() call takes a string which identifies the codec for PJSIP's codec search
function. Basically there is a good deal of work to be done in making Sipdroid keep
track of which codec it's using, and set the BUFFER_SIZE in the RTP files
appropriately, as well as the codec identification # and string in UserAgentProfile.java.

The problem with iLBC and Speex is how poorly they test in the PJSIP benchmark:

 8KHz codec encode/decode - iLBC              3037707  303.771 24611.42
 8KHz codec encode/decode - Speex 8Khz         481573   48.157 3901.69

iLBC takes 300% of the CPU, Speex takes 50%. G.729 seems like what people are
clamouring for, but there are both issues with compiling IPP for Android as well as
the licensing issue.

Also, this System.load() issue is a show stopper...
Nov 23, 2009
Project Member #44 pmerl...@googlemail.com
(No comment was entered for this change.)
Status: Started
Nov 23, 2009
#45 yuxiao...@gmail.com
man, with iLBC and Speex is poorly because they dont convert float point operation 
to fixed point operation which arm hardware doesnt come with float point.
so all are soft float point operations which consume a lot cpu.

fixed pointe version iLbc and G729 codec are the way out.
Nov 24, 2009
#47 gregh...@gmail.com
SIPdroid needs either iLBC or G729 to maximize it's potential.  Would it be hard to
integrate iLBC (to start), then later maybe add G729?   

Are there any plans to implement a different codec in SIPdroid?

Greg


Nov 27, 2009
#48 yuxiao...@gmail.com
someone need to rewrite the rtpstreamsend and rtpstreamreceiver to make it easy to 
support other codec plug in. current code is for alaw only. it's a mess.
Nov 27, 2009
Project Member #49 pmerl...@googlemail.com
joe.n.jackson, would you please check in your changes. I have added you as a project 
member. Thanks!
Nov 30, 2009
#50 duckmons...@gmail.com
Question above. That script your using there to compile in the pjsip stuff has some
damn weird toolchain assumptions.

What version of the NDK is that compiling with, because half of the link requirements
just dont seem to exist. :(
Nov 30, 2009
Project Member #51 joe.n.ja...@gmail.com
pmerle71, OK checked in the java stuff as well as the dry C++ linker source. Unsure
if I should check in the "sipdroid-linker" build directory and the
"build-sipdroidlinker" script I appropriated from the discontinued VoidDroid
project... The script needs a few changes to work out of the box. 

Also the version of pjsip was customized a bit. Should that whole tree get checked in
too?

duckmonster, I didn't use an NDK release package. Instead used the
http://source.android.com/download source and compiled the whole thing per the
"Building the code" section. If you give me specifics I may be able to find the
discrepancy you're having.
Dec 1, 2009
#52 john.kie...@gmail.com
When compiling speex, are you using "--enable-fixed-point"?

Dec 2, 2009
Project Member #53 joe.n.ja...@gmail.com
This version doesn't use configure but it does have fixed point enabled in 
pjproject-1.0.2/third_party/build/speex/config.h.
Dec 3, 2009
#55 chrisx86@gmail.com
*vouch* for ilbc

even the gsm codec version lags with t-mobile edge (~110kbps here)
(3/4 connection quality).. the voice sounds disturbed, like chopped in pieces and
mixed :)..  i guess the problem is the package loss, which ilbc seems to handle nicely
Dec 3, 2009
#56 chrisx86@gmail.com
@joe

ps: incoming calls won't work via gsm with my setup.

i run a private asterisk server with only gsm allowed, outgoing literally "works"
(90% loss..) but incoming calls will be dropped immediately
Dec 6, 2009
Project Member #57 tm.in...@gmail.com
Hi, 

I attach a diff to add support of G711u (u-law) on Sipdroid (1.2.1).
This code changes default codec to G711u from G711a, and have no configuration UI 
for codec selection.

I think we need to rewrite the code of SDP offer/answer (UserAgent.java) to support 
multi codecs so that Sipdroid can determine a codec in a call dynamically.

Dec 7, 2009
Project Member #58 tm.in...@gmail.com
Corrected the diff file above.

ulaw.diff
4.9 KB   View   Download
Dec 10, 2009
Project Member #59 pmerl...@googlemail.com
Joe, did you see my comment https://code.google.com/p/sipdroid/source/detail?r=373?
Dec 10, 2009
#60 c.scherm...@gmail.com
Hello,

For information purposes, for the G729 the licenses are managed by the company Sipro
Lab Telecom and the tariffs are available here http://www.sipro.com/g729_licterms.php

A new codec has been made available in OpenSource (LGPLv2.1) by Broadcom called
Broadvoice http://www.broadcom.com/support/broadvoice/ and it seems that it compares
well with other codec http://www.broadcom.com/support/broadvoice/codec_comparison.php

It is available in floating-point and fixed-point C code
http://www.broadcom.com/support/broadvoice/downloads.php

Kind Regards
Dec 11, 2009
Project Member #62 pmerl...@googlemail.com
Issue 221 has been merged into this issue.
Dec 19, 2009
Project Member #63 pmerl...@googlemail.com
 Issue 238  has been merged into this issue.
Dec 19, 2009
Project Member #64 pmerl...@googlemail.com
 Issue 242  has been merged into this issue.
Dec 21, 2009
#65 jahrome11
I managed to compile pjlib and make calls with the GSM codec using a test asterisk
server. Calls are successful in both directions. There is just a little problem: we
can hear "cracks" when speaking. I disabled silence detection in the source but it
did not solved the problem. I am investigating this issue but I have problems
understanding what are calc() and noise() methods are for... Could someone clarify
this so I can (try to) improve the code (e.g remove constants for future frame_size
negociation) ?
Dec 22, 2009
#66 andrepinto
I would like to suggest iLBC codec since it offers low bitrate and its free and widely 
used by sip providers. Also, g729 is a good idea and better for use with gprs/edge 
networks, but it's not free to use. SO I don't think it can be used on sipdroid.
Dec 23, 2009
#67 andr...@tastemycity.com
Of course g729 can be used! Just need to pay for it.
Jan 4, 2010
#68 cedricth...@gmail.com
Hello, I have (quickly) integrated the speex codec (www.speex.org) for test purpose
into a sipdroid release (1.1.8 beta I think) using the JNI and Android NDK. It's
actually working with 2 sipdroid devices but not correctly with a sipdroid device and
a linphone PC (works only in encoding, but decoding is not very good).
If someone is interested in, to test it, improve it or merge it in a clean way, I can
give the code.
Regards.
Jan 8, 2010
#69 sascha.s...@gmail.com
@cedricthiery; upstream the code, please
Jan 13, 2010
#70 hotplain...@gmail.com
Is there a way we can have a subscription-based g.729 version of sipdroid?
Jan 13, 2010
#71 councilm...@gmail.com
Broadcom codecs look very good! It would be nice to have some independent testing.
Jan 17, 2010
#72 kro...@gmail.com
I'd be keen to do some testing of any alpha releases.  Really want GSM and iLBC, and 
the ability to enable/disable/order codecs.
Jan 17, 2010
#73 linuxgr...@gmail.com
I agree with the others that a low bandwidth codec needs to be added ASAP. I'm using
my Milestone on the US networks, which means I only ever have edge service, no 3G. I
have wifi at home and at work. On top of that, the wifi coverage at work is spotty.

This means I can only make SIP calls from home (which defeats the purpose of using
it, I want to use it when I'm mobile). 
Jan 24, 2010
#74 fatrodmc...@gmail.com
my network requires g729 so another vote for that
Feb 9, 2010
#75 lordst...@gmail.com
I require use of G729 for connection with my VoIP provider directly, currently I have
to proxy abroad (pxbes) and this incurs delays. (The pxbes service is great but the
latency is not ideal.)
Feb 9, 2010
#76 geo...@ellenburg.org
If it's a "library" or coding issue then how is SipAgent able to support the GSM & Speex codecs? (as well as a slew 
of others)?  Just curious.
Feb 15, 2010
#79 kro...@gmail.com
I know the issue says fixed (and this is a massive improvement), but I note that GSM is 
still not available (Greyed out) on Nexus One phones.  Do I create a issue?
Feb 17, 2010
#80 lordst...@gmail.com
I noticed support for speex alaw (G.711) and ulaw (G.711) has been implemented, so
for the meantime I have forced speex for all my calls to save bandwidth. It would be
nice to have GSM enabled and is there still no chance for G.729?

Thanks for the option however!
Feb 18, 2010
#81 brandonn...@gmail.com
according to http://www.pjsip.org/sip_media_features.htm#sip_features
Looks like g.729 is supported with certain handsets. The client license for G.729 is
based on the device. So if we have a handset with the license its not a problem to
implement it is our stack. 

PJMEDIA supports:

    * G.711 family codec (PCMA, PCMU),
    * Speex/8000 (narrowband), Speex/16000 (wideband), and Speex/32000
(ultra-wideband) with fix bit rate and adjustable quality/complexity settings. Fixed
mode implementation will be used for targets which lack floating point unit.
    * iLBC in 20 or 30ms mode, with encoder mode is adjusted based on remote's SDP
(decoder mode is adjustable during initialization only).
    * GSM.
    * G.722
    * G.722.1 and G.722.1C licensed from Polycom
    * More codecs provided by Intel IPP: G.723.1, G.726, G.728, G.729A, AMR, and AMR-WB
    * More codecs provided by Nokia APS/VAS on Nokia handsets: AMR, G.729, iLBC, and
PCMU/PCMA
    * L16 family of codecs, mono or stereo (good for debugging).
Feb 21, 2010
#82 hellz...@gmail.com
Which version of speex does sipdroid support at present? The it doesn't seem to work
for me. My voip provider is Freshtel (australia). Is the 11kbps speex a nonstandard
compression? When i try to place a call, sipdroid says "incompatible codecs". I have
confirmed with freshtel that they do support speex. According to them, "Yes our
Freshtel network and firefly both do speex and speex wideband codec's"
Feb 21, 2010
#83 hellz...@gmail.com
I would like to request full support for speex, from ultra-wideband all the way to
2.4 kbps... that would be really good.
Mar 20, 2010
Project Member #85 pmerl...@googlemail.com
Issue 344 has been merged into this issue.
Mar 20, 2010
Project Member #86 pmerl...@googlemail.com
Issue 372 has been merged into this issue.
Mar 22, 2010
#87 Aviator...@gmail.com
What is the problem with GSM? It is also low bit rate.
Mar 26, 2010
#88 kro...@gmail.com
GSM is still greyed out in 1.4.1pre for 2.0+ Android phones (like my Nexus).  Any 
chance of this being sorted before the next release?  I note that a stack of Silk codecs 
(what skype uses) have been added which is nice - no doubt it will benefit someone.
Mar 30, 2010
#89 aktz...@gmail.com
FreeSWITCH has recently added silk at various bitrates and BroadVoice 16 and 32.
You'll need a recent version from source to use them, but I've used BV32 for a while
now with XLite and it is fine. Also we've tested silk, but sipdroid has been recently
unstable so I can't say how well it works.
Mar 30, 2010
Project Member #90 carlos.t...@gmail.com
I would recommend you try SILK over BroadVoice as currently the BV codecs are a little 
taxing on the CPU and you will get dropped packets on some android phones.

I just checked in G722 wideband support which you'll find more often on hard phones 
over the other wideband codecs.

Apr 6, 2010
#91 cuixin...@gmail.com
Is there a plan to support ILBC? 
Apr 10, 2010
#93 maxims...@gmail.com
Hi,

I have tested g722 codec. While I can hear the other side perfectly fine I come
through with distortion and delayed.
Apr 11, 2010
#94 anhtubcvt@gmail.com
Hi maximsamo, 

Did you test G722 codec on Sipdroid together with FreeSwitch? If so, could let me
know how to enable the codec that is not default code but supported (such as SILK or
BV) on FreeSwitch? I did changes on the vars.xml and sofia.conf.xml files and restart
FreeSwich, but it did not work. FreeSwich send back the 488 SIP messages (Not
acceptable here - error codec imcompatibility). Any help is highly appreciated.
Apr 11, 2010
#95 maxims...@gmail.com
Hi,

I have tested g722 on asterisk 1.6.1.18.

regards,

Maxim
Apr 11, 2010
Project Member #96 carlos.t...@gmail.com
anhtubcvt,

you have to update the line with global_codec_prefs. Here's an example:

<X-PRE-PROCESS cmd="set" 
data="global_codec_prefs=BV16,BV32,SILK@24000h,SILK@16000h,SILK@8000h,speex@8000h@20i
,G7221@32000h,G7221@16000h,G722,PCMU,PCMA,GSM,H263,H264,G729"/>


Apr 12, 2010
#97 anhtubcvt@gmail.com
Hi Carlos and Maximsamo,

Thank you for your answers.

We only need to modify global_codec_prefs in vars.xml file? If so, I did test with
SILK and BV but it did not work though it is announced that FS 1.0.6 support them.
Any one made successful test with SILK codec on FreeSwitch 1.0.6? 

Regards,

Luu
Apr 12, 2010
Project Member #98 carlos.t...@gmail.com
I might have been too quick to respond.

First thing, did you make sure the modules are enabled for compilation? They have be 
uncommented in modules.conf prior to running ./configure.

Once FreeSWITCH is installed and running you can verify if they were installed 
properly. Type this from the console:

load mod_bv
load mod_silk

You can permanently have them load during startup by adding them to the 
modules.conf.xml file.

 
Apr 13, 2010
#99 anhtubcvt@gmail.com
Carlo,

Thank you very much for your help. The answer is really helpful and it works now.
Apr 20, 2010
#100 anhtubcvt@gmail.com
Dear Carlo,

This question is not related to SILK codec, it is about FS. I am installing the FS
inside my LAN with local IP address. Then on the router connected to internet with
static public IP address, I made a port forwarding for SIP and RTP. SIP client with
build-in account 1000-1019 can register to FS. Call can be established between a SIP
client in the LAN and another SIP client on Internet, but no voice can be heard both
two ways. 

Is it correct to connect a sip client from internet to FS inside LAN by doing as
above method? I read some about Internal and External things, and tried to read some
example like that but it is not clear enough for me. Could your show me steps for
configuring that? I appreciate for your help.

Apr 20, 2010
#101 maxims...@gmail.com
actually I can confirm that since the last SIPdroid release (1.4.6 beta) the g722 
codec is working fine both ways.
Apr 20, 2010
Project Member #102 carlos.t...@gmail.com
achtubcvt, I would recommend you configure your router for NAT-PMP or UPnP instead of 
having to forward ports. This might resolve your audio problem. Have a look at this 
page: http://wiki.freeswitch.org/wiki/Auto_NAT

We also might want to move this discussion to the FreeSWITCH mailing list or irc 
channel if need be.

May 1, 2010
#103 ernieche...@gmail.com
Are the codec source code compiled using NDK available for download? If they are,
where can I find them? Thanks.
May 2, 2010
Project Member #104 carlos.t...@gmail.com
erniecheung,


in the svn source you can check out:
https://code.google.com/p/sipdroid/source/browse/#svn/trunk/jni


May 19, 2010
#105 andre.vo...@gmail.com
I was really hoping sipdroid had support for iLBC codec. I can see the latest version
(1.4.7 beta) has support for a number of codecs, however most of them can't be used
by google voice + gizmo5 combination, or gv+g5+pbxes either.

Since now other codecs are being used, and iLBC is royalty free, is it possible to
implement it on sipdroid? Or is there some other limiting factor on Android?
Jun 23, 2010
#106 marcu...@gmail.com
Is it possible to enable Speex Wideband and BV32 codecs also or the processor cannot handle the extra load?
Jun 28, 2010
#107 ben...@gmail.com
Lack of g729 support in Sipdroid is a showstopper for me.

freephoneline.ca only supports the g729 codec.

Outgoing calls only get silence, incoming calls fail with "ERROR: Codecs Incompatible' message.

Please this is a needed codec.
Jul 2, 2010
#108 kro...@gmail.com
Csipsimple and linphone now both support ILBC.  Csipsimple also sounds really good and supports multiple simultaneous accounts.  Sipdroid needs to start releasing updates.
Jul 28, 2010
Project Member #109 pmerl...@googlemail.com
Issue 570 has been merged into this issue.
Aug 12, 2010
#111 dzi...@gmail.com
I have a very good experience with the AMR codec that is officially supported by Android
http://developer.android.com/guide/appendix/media-formats.html
The experience comes from some nokia devices like (N95, E61...). There are some SIP providers (like Truphone) that do have amr support, note also that asterisk PBX can be patched to include amr codec. 
This codec works very well even over slower internet connection and probably can be easier to implement than some other codecs options mentioned above.
Aug 26, 2010
#112 ionut.ta...@gmail.com
Please Please I begging you to support G729 G729a G729b in SipDroid. Is a MUST.
Thanks
Aug 29, 2010
#113 huibertd...@gmail.com
Plus 1, codec g729 would be of help.
Sep 2, 2010
#114 pradeepi...@gmail.com
Hi,

We want to integrate a wideband codec(16kHz sampling rate) with Sipdroid (Using NDK and JNI). 

We have tested the Sipdroid on the Emulator and using Asterisk Server. The Sipdroid works well (emulator environment) for alaw, ulaw, gsm and Speex. For G722 , though it is supported in Asterisk Sipdroid does not work.

Does Sipdroid in Emulator have any restriction on the Sampling rate? (i.e only 8000 Hz sampling is supported ? ) This we want to know since we are trying to integrate a Wideband codec with Sipdroid. If there is restriction with Emulator, does on a hardware,Sipdroid work with any sampling rate?

Also since the codec which we are working on is not implemented on Asterisk server, will the channel be setup (atleast passthru)? Is there any way we can add new codecs to the Asterisk server

Any guidance in these issue is appreciated.
Sep 16, 2010
#115 carmageddon
I feel like the developers still dont understand the significance of what we are asking:
1) focus on implementing Addon system which allows delegating the codecs issue to a third party.

2) Add "profiles" please - so I can uninstall, reinstall, swap between different SIP accounts without having to redefine everything, and easily backup the settings file from the SDcard.

I will say again, number 1 is very important mostly due to G729 codec - not only its the wide SIP standard by literally every SIP provider I checked, but it enables COMPRESSION! the PCMA and PCMU are constant, 64kbit rates which will require me to upgrade to unlimited data plan - and suddenly SIP and VoIP is not so cheap...
Sep 22, 2010
#116 brent.kr...@live.co.za
please really need 729 codec would be awesome
Sep 22, 2010
#117 andrusjo...@gmail.com
I second what carmageddon puts forward. Seriously, SIP on a cellphone is almost useless without a way to properly compress the data!
Sep 30, 2010
#118 sahal.ya...@gmail.com
The GSM codec is not working for me (and at least one other person)
https://code.google.com/p/sipdroid/issues/detail?id=592 -- since no one has responded to that issues, I hope it is okay to post it here again.
Sep 30, 2010
#119 plauriol...@gmail.com
@sahal.yacoob I have posted an answer for https://code.google.com/p/sipdroid/issues/detail?id=592

Hope it helps you.
Sep 30, 2010
#120 sahal.ya...@gmail.com
Unfortunately it did not.
Oct 7, 2010
#121 tar...@gmail.com
Could someone from developers team comment on carmageddon (Comment 115)
I second that, we really need:
1. addons/plugins
2. profiles

I would pay for a G729 addon. It is a must.
Please answer
Oct 9, 2010
#122 ocean.ra...@gmail.com
I am working on sipdroid 1.5.5 beta version open source,android 2.2,GNU make 3.81and ADT 0.9.9.need g729 codec support.Recent I add ITU g729annexA but when i test it on my HTC wildfire device and get some noise from receiver Mobile device. i don't understand what is happening.But there is some warning buffer overflow

->i want to convert bitstreem data to RTP data after encoding by g729annexA(is it necessary for me?)Or what will i do?
->Please help me

payload for g729 is 18
annexb=no for SDP
Details on the attachment:

My g729_jni linker file is here:

#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <memory.h>
#include <ctype.h>
#include <jni.h>
#include <android/log.h>

extern "C" {
#include "g729/typedef.h"
#include "g729/basic_op.h"
#include "g729/ld8a.h"
}

Word16 bad_lsf;
/*Variable initialization for encoder*/
extern Word16 *new_speech;     /* Pointer to new speech data            */
Word16 prm[PRM_SIZE];          /* Analysis parameters.                  */

/*Variable initialization for decoder*/
Word16  synth_buf[L_FRAME+M], *synth; /* Synthesis                   */
Word16  parm[PRM_SIZE+1];             /* Synthesis parameters        */
Word16  Az_dec[MP1*2];                /* Decoded Az for post-filter  */
Word16  T2[2];                        /* Pitch lag for 2 subframes   */
/*Common variable*/
Word16  i;

#define LOG_TAG "g729" // text for log tag

#undef DEBUG_G729

// the header length of the RTP frame (must skip when en/decoding)
#define	RTP_HDR_SIZE	12

#define	BITSTREAM_SIZE	10

static int codec_open = 0;

static JavaVM *gJavaVM;
const char *kInterfacePath = "org/sipdroid/pjlib/g729";


extern "C"
JNIEXPORT jint JNICALL Java_org_sipdroid_codecs_G729_open
  (JNIEnv *env, jobject obj) {
	int ret;

	if (codec_open++ != 0)
		return (jint)0;

	/*--------------------------------------------------------------------------*
	 * Initialization of the encoder.                                             *
	 *--------------------------------------------------------------------------*/

    Init_Pre_Process();
    Init_Coder_ld8a();
    Set_zero(prm, PRM_SIZE);

    /*-----------------------------------------------------------------*
     *           Initialization of decoder                             *
     *-----------------------------------------------------------------*/

      for (i=0; i<M; i++) synth_buf[i] = 0;
      synth = synth_buf + M;

      bad_lsf = 0;          /* Initialize bad LSF indicator */
      Init_Decod_ld8a();
      Init_Post_Filter();
      Init_Post_Process();

	return (jint)0;
}

extern "C"
JNIEXPORT jint JNICALL Java_org_sipdroid_codecs_G729_encode
    (JNIEnv *env, jobject obj, jshortArray lin, jint offset, jbyteArray encoded, jint size) {

		Word16 serial[SERIAL_SIZE];    /* Output bitstream buffer               */
		jshort lin_input[L_FRAME];

		int i;

		int frsz=L_FRAME;
		unsigned int lin_pos = 0;

		if (!codec_open)
			return 0;

		for (i = 0; i < size; i+=frsz)
		{
			/*set lin pcm data into the lin_input array*/
			env->GetShortArrayRegion(lin, offset + i,frsz, lin_input);

			/*Return initialization for new_speech of input data*/
			memcpy(new_speech, (Word16 *)lin_input, sizeof(Word16)*L_FRAME);

			/*Preprocess start for new_speech data*/
			Pre_Process(new_speech, L_FRAME);

			Coder_ld8a(prm);

			prm2bits_ld8k( prm, serial);

			env->SetByteArrayRegion(encoded, RTP_HDR_SIZE+ lin_pos, BITSTREAM_SIZE, (jbyte *)serial);

			lin_pos += BITSTREAM_SIZE;
		}

    return (jint)lin_pos;
}

extern "C"
JNIEXPORT jint JNICALL Java_org_sipdroid_codecs_G729_decode
    (JNIEnv *env, jobject obj, jbyteArray encoded, jshortArray lin, jint size) {

		jbyte serial[SERIAL_SIZE];

		unsigned int lin_pos = L_FRAME;

		

		if (!codec_open)
			return 0;

		

			env->GetByteArrayRegion(encoded, RTP_HDR_SIZE, size, serial);

			bits2prm_ld8k((Word16 *)&serial[2], &parm[1]);

				
				parm[0] = 0;           /* No frame erasure */
				for (i=2; i < SERIAL_SIZE; i++)
					if (serial[i] == 0 ) parm[0] = 1; 

				parm[4] = Check_Parity_Pitch(parm[3], parm[4]);

				Decod_ld8a(parm, synth, Az_dec, T2);

				Post_Filter(synth, Az_dec, T2);        /* Post-filter */

				Post_Process(synth, L_FRAME);

				env->SetShortArrayRegion(lin, 0, L_FRAME,synth);

				
		}
	return (jint)lin_pos;
}


extern "C"
JNIEXPORT void JNICALL Java_org_sipdroid_codecs_G729_close
    (JNIEnv *env, jobject obj) {

	if (--codec_open != 0)
		return;


}
->At first i think i add siphon g729a codec  for android.
->siphon codec support ARMV7 but HTC wildfire and emulator support ARMV5. 
->Then i choose ITU g729annexA for codec implementation.
->After encoding i get bit streem data but it is unpacked data for this reason i want to convert bitstreem data to RTP data
->how to convert Bitstreem data to RTP data and (is it necessary for me?)

Here attach the SDP logs after calling but receiver didnt receive the call(sdplogs1.png)and after receiving the call (sdplogs2.png).
sdplogs1.png
31.2 KB   View   Download
sdplogs2.png
31.4 KB   View   Download
Oct 17, 2010
#123 ocean.ra...@gmail.com
Thanks every one.At last i complete g729 codec for android sipdroid open source project.G729 codec development for sipdroid is possible.Thanks every one of android developer those people who help me to complete the sipdialer.i think i will get help from this forum later if i face any problem.last time i talk with from my HTC Wildfire device about 1 hour successful call.voice quality with g729 codec was very good for me.if any one face "can't hear the other person" problem then you just install the apk for your device (HTC wildfire) and after installed your sipdroid application just reboot your device i think problem will be solve.

**another time i tell that if i face any problem then i think i will get help from this forum**pray for me......    

Oct 18, 2010
#124 droidhac...@gmail.com
Where do you keep your code?
Oct 18, 2010
#125 Daedalus...@gmail.com
Please can you add "codec 2" support it was released under gpl it has a very good compresion.

http://www.rowetel.com/blog/?page_id=452
Oct 18, 2010
#126 ocean.ra...@gmail.com
Hi! Daedalus2027
 
i download the source code from your given link.I think it is possible to implement.but i didn't build it for sipdroid.do you know the payload for "codec 2"?.another thing do you know this source code support armv5?.      
Oct 19, 2010
#127 ocean.ra...@gmail.com
Hi!droidhacker

which mobile device you use to develop g729 codec?.and also check it will support armv5 or armv7.
Oct 19, 2010
#128 boss...@yahoo.fr
Without ARM optimization the G.729 implementation from ITU is unusable on embedded devices.
Off course, it will work on a 1GHz device but it will use at least 40% of the CPU which means that you won't be able to add any other stream to the session (e.g. Video).

To convert the ITU bitstream from/to RTP as per RFC 3551: https://code.google.com/p/doubango/source/browse/trunk/tinyDAV/src/codecs/g729/tdav_codec_g729.c
A work in progress source code of g729AB implementation for ARM devices (ARMv5 and later): https://code.google.com/p/g729/
Oct 19, 2010
#129 carmageddon
we dont care if its 40% or 50%.
We want it working even without the video :)
Though I think remaining 50% should be enough to power not overly compressed video.
Anyway who walks around with video calls? video calls are normally done at home or office on laptop, not when you are mobile.

If someone has a g729 working on the 1ghz snapdragon, I'll take it anyday as I am sure will 90% of the others here.
The rest can keep sucking with their older phones :)
Oct 19, 2010
#130 boss...@yahoo.fr
@carmageddon

1. 40%-50% CPU usage means aggressive battery usage which means shorter life. I guess you don't want to change your phone each year because the battery is dead?

2. 40-50% for audio (even without video) means that the phone only have 50% of the CPU resources to run. Try to read your mails, fetch your contacts, .... and you will understand what I mean.
Oct 19, 2010
#131 carmageddon
@boss:

1. Again I dont care - I will buy a new battery, it needs to be replaced anyway after 1-2 years. Why would I replace the whole phone? I am not iPhone user lol.

2. Again I dont care - while I am on a phone conversation, lol I cant speak and use the phone at the same time.. sure there is Bluetooth etc. But you forget, nobody forces you to use g729. who doesnt like the cpu costs, could set another codec.
Oct 19, 2010
#132 droidhac...@gmail.com
@ocean.rabby.1971:
I do my work on HTC DREAM MSM7201A.
Oldie, but goodie.

Low in RAM, low in CPU, so if it works there, it'll work everywhere.
Oct 19, 2010
#133 ocean.ra...@gmail.com
google nexus one support armv7.so you can easily implement g729 codec from siphon.please download source code from this link and build it for your sipdroid.
https://code.google.com/p/siphon/wiki/Codec_G729
Oct 19, 2010
#134 ocean.ra...@gmail.com
MSM7201A as seen in the HTC Dream, HTC Magic, Motorola i1, Motorola Z6, HTC Hero,All ARMv7 chips support the Thumb-2 instruction set.But you know that emulator do not support armv7.
Nov 22, 2010
#135 GoKarts...@gmail.com
why isn't there an implementation of a vbr codec like silk? why is speex limited to 13k? I've been having major call quality issues. I have a samsung vibrant, and my friend has a moto milestone. He's been using skype and has been very very happy. I don't understand why sipdroid is not up to par. 
Nov 22, 2010
#136 GoKarts...@gmail.com
what happened to SILK? and why isn't speex VBR?
Dec 6, 2010
#137 mayuqi...@gmail.com
Hi ocean.rabby.1971
How about G729? Do you have any plan to add G729 to sipdroid? We are all waiting.
Dec 11, 2010
#138 ocean.ra...@gmail.com
i need g723 codec support for sipdroid open source app.where i get the g723 source code for sipdoid? any link or other information
Dec 11, 2010
#139 ocean.ra...@gmail.com
Hi mayuqiang 

you need to try by using siphon g729 for armv7 supported android mobile.please u try this then inform me what happen.


Dec 21, 2010
#140 ocean.ra...@gmail.com
Hi everyone

we want to implement g723.1 codec support for sipdroid community. We are working on Itu-g723.1 for sipdroid. g723.1 was dual rate codec 6.3 and 5.3. We are working on rate 6.3. After completion of build all source code from ITU-g723.1. we face one problem.

***one sided voice by using g723.1 codec for sipdroid***   

***sender hear the voice of other person but other person hear some noise.We already change in JAudioLauncher.java that was 

sample_rate=8000;
sample_size=1;
frame_size=240; //default:160
frame_rate=33.3;

but we have the same problem***

is g723.1 codec support possible for sipdroid? 
if anyone know how to solve this problem, please answer me. 




Dec 21, 2010
#141 ocean.ra...@gmail.com
Hear i attach g729_jni.cpp file for sipdroid community.g729 codec support is possible for sipdroid community  
g729_jni.cpp
4.6 KB   View   Download
Dec 21, 2010
#142 ocean.ra...@gmail.com
This is the perfect g729_jni.cpp file for sipdroid. Please see the attachment
g729_jni.cpp
4.6 KB   View   Download
Dec 30, 2010
#143 ragualwa...@gmail.com
hi ocean.rabby.1971 ,

if you are trying to include g723.1 codec then don't include the framesize there, let it be the default frame size
Jan 12, 2011
#144 ocean.ra...@gmail.com
if we use default frame size that was 160 then session destroy after 2 second.and return to the dialer starting screen.
if frame size is 240 then session established and one sided voice is ok.
Jan 30, 2011
#145 yang.yue...@gmail.com
my testing program shows that iLBC on emulator does not work. It is too slow. Encoding 30ms PCM to iLBC30 packet needs  about 100ms. I am not sure whether FPU does matter and whether emulator has FPU support or not.
Jan 30, 2011
#146 carmageddon
yang.yue - did you try either finding an optimized iLBC30 code for ARMv5 instruction set processors? or perhaps try and optimize the available code..
Feb 3, 2011
#149 Arian.Sa...@gmail.com
I also want to know how to add g729 codec support with sipdroid..what steps to b followed..
what to do with the above code.?
Please attach 
typedef.h"
basic_op.h"
ld8a.h"
g729a.h"  files.
And write here how to join this code to sipdroid.


Feb 4, 2011
#150 ocean.ra...@gmail.com
here a attach typedef.h file.you just add "APP_ABI := armeabi-v7a" into aplication.mk file.i think it works
typedef.h
1.5 KB   View   Download
Feb 4, 2011
#151 ocean.ra...@gmail.com
recently i check latest sipdroid version 2.0.1 with HTC wildfire android os version 2.2.1,google nexus one os version 2.2.2, and HTC desire os version 2.2.2 devices by using wifi network connection, i get one sided voice that was can not hear the other person problem by wifi connection on my devices.

but when i use EDGE/3g/gprs connectoin then i get the two sided voice.

another query that was when i build latest sipdroid 2.0.1 on android version 2.3.1 then error occure after established a call and OSNetworkSystem.c file is the cause of the error. the error was "java/lang/ClassNotFoundException::org.apache.harmony.luni.net.GenericIPMreq can not load delvic machine"

how can i solve this problem.

i am using adt 9.0.0.v201 and android 2.3.2, eclipse 3.5.2 and latest sipdroid 2.0.1
open souce.
Feb 4, 2011
#152 Arian.Sa...@gmail.com
I am new in Android and I have some difficulties,please help me.
I want to know except g729_jni, what I will add in my project to have g729 codec?
and armeabi-v7a ?
Thanks in advance.
Feb 5, 2011
#153 Arian.Sa...@gmail.com
Please  ocean.ra...@gmail.com write smth.
I wait to your answer.It's very important for me.
Feb 5, 2011
#154 ocean.ra...@gmail.com
i give you all information about g729 build process.i don't understand whats the problem.please tell me details about problem.
Feb 5, 2011
#155 ocean.ra...@gmail.com
"please see the comment 151".i need the solution that latest sipdroid 2.0.1 works on wifi network and want to get both side voice on devices. i only get the voice both side on emulator-2.2 by using wifi. i need patch for sipdroid work on android vs 2.3.1.
please help me........
Feb 7, 2011
#156 tester...@gmail.com
I build libg729_jni.so by use siphon g729 and g729_jnicpp here , however, no sound at all while connection . Incallscreen showed G729 . But no sound . Does I miss something or wrong G729.java?
Feb 8, 2011
#157 ocean.ra...@gmail.com
please give me G729.java file
Feb 8, 2011
#158 tester...@gmail.com
g729.java here
G729.java
1.5 KB   View   Download
Feb 9, 2011
#159 ocean.ra...@gmail.com
this file is ok.now you check g729 works perfectly.check Codecs.java
private static final Vector<Codec> codecs = new Vector<Codec>() {{
    		        add(new G729());
			//add(new G722());			
			//add(new SILK24());		
			//add(new SILK16());
			//add(new SILK8());
			//add(new alaw());
			//add(new ulaw());
			//add(new Speex());
			//add(new GSM());
			//add(new BV16());
		}};

          -String prefs = sp.getString(Settings.PREF_CODECS,     Settings.DEFAULT_CODECS);
		+ String prefs = "18";

UserAgentProfile.java

--public int[] audio_codecs = {3, 8, 0, 18};
	++public int[] audio_codecs = {18};

UserAgent.java modified exactly by this code

public void initSessionDescriptor(Codecs.Map c) {
		SessionDescriptor sdp = new SessionDescriptor(
				user_profile.from_url,
				sip_provider.getViaAddress());
		
		local_session = sdp.toString();
		printLog("Local Session" + local_session);
		//We will have at least one media line, and it will be 
		//audio
		if (user_profile.audio || !user_profile.video)
		{
//			addMediaDescriptor("audio", user_profile.audio_port, c, user_profile.audio_sample_rate);
			addMediaDescriptor("audio", user_profile.audio_port, c);
		}
		
		/*if (user_profile.video)
		{
			addMediaDescriptor("video", user_profile.video_port, user_profile.video_avp, "h263-1998", 90000);
		}*/
	}
	//change end
	
	/** Adds a single media to the SDP */
	/*private void addMediaDescriptor(String media, int port, int avp,
					String codec, int rate) {
		SessionDescriptor sdp = new SessionDescriptor(local_session);
		
		String attr_param = String.valueOf(avp);
		
		if (codec != null)
		{
			attr_param += " " + codec + "/" + rate;
		}
		sdp.addMedia(new MediaField(media, port, 0, "RTP/AVP", 
				String.valueOf(avp)), 
				new AttributeField("rtpmap", attr_param));
		
		local_session = sdp.toString();
	}*/
	
	/** Adds a set of media to the SDP */
//	private void addMediaDescriptor(String media, int port, Codecs.Map c,int rate) {
	private void addMediaDescriptor(String media, int port, Codecs.Map c) {
		SessionDescriptor sdp = new SessionDescriptor(local_session);
	
		Vector<String> avpvec = new Vector<String>();
		Vector<AttributeField> afvec = new Vector<AttributeField>();
		if (c == null) {
			// offer all known codecs
			for (int i : Codecs.getCodecs()) {
				Codec codec = Codecs.get(i);
				if (i == 0) codec.init();
				avpvec.add(String.valueOf(i));
				if (codec.number() == 9)
					afvec.add(new AttributeField("rtpmap", String.format("%d %s/%d", i, codec.userName(), 8000))); // kludge for G722. See RFC3551.
				else
					afvec.add(new AttributeField("rtpmap", String.format("%d %s/%d", i, codec.userName(), codec.samp_rate())));
			}
		} else {
			c.codec.init();
			avpvec.add(String.valueOf(c.number));
			if (c.codec.number() == 9)
				afvec.add(new AttributeField("rtpmap", String.format("%d %s/%d", c.number, c.codec.userName(), 8000))); // kludge for G722. See RFC3551.
			else
				afvec.add(new AttributeField("rtpmap", String.format("%d %s/%d", c.number, c.codec.userName(), c.codec.samp_rate())));
		}
		if (user_profile.dtmf_avp != 0){
			//avpvec.add(String.valueOf(user_profile.dtmf_avp));
			//afvec.add(new AttributeField("rtpmap", String.format("%d telephone-event/%d", user_profile.dtmf_avp, user_profile.audio_sample_rate)));
			//afvec.add(new AttributeField("fmtp", String.format("%d 0-15", user_profile.dtmf_avp)));
			
			//avpvec.add(String.valueOf(user_profile.dtmf_avp));
			//afvec.add(new AttributeField("rtpmap", String.format("%d g729/%d", 18, user_profile.audio_sample_rate)));
			afvec.add(new AttributeField("fmtp", String.format("%d annexb=no", 18)));
			//afvec.add(new AttributeField("a", String.format("sendrecv")));
			//afvec.add(new AttributeField("rtpmap", String.format("%d telephone-event/%d", user_profile.dtmf_avp, user_profile.audio_sample_rate)));
			//afvec.add(new AttributeField("fmtp", String.format("%d 0-15", user_profile.dtmf_avp)));
		}
				
		//String attr_param = String.valueOf(avp);
		
		sdp.addMedia(new MediaField(media, port, 0, "RTP/AVP", avpvec), afvec);
		
		local_session = sdp.toString();
	}

i think its work fine..........

Mar 5, 2011
#160 ocean.ra...@gmail.com
Hi! what happened about g729 codec. are you complete g729 codec
Mar 24, 2011
#161 lishtva...@gmail.com
I vote for ilbc and g.726 as next codecs to add ...
Apr 15, 2011
Project Member #162 pmerl...@googlemail.com
Issue 897 has been merged into this issue.
May 26, 2011
#163 ocean.ra...@gmail.com
Hi all..
this is the full library file for g729 codec.Already i discuss it how to add g729 codec in sipdroid.you only need G729.java wrapper.i gave it to all in previous.you just add "libs" folder into your project directory.
libs.rar
63.1 KB   Download
Aug 15, 2011
#164 kszarkow...@gmail.com
Hi,

I am novice here.

I have added the library to my lib directory in Samsung Galaxy and changed the rights, owner and group as other codecs:

# pwd
/data/data/org.sipdroid.sipua/lib
# ls -l
-rwxr-xr-x system   system      92503 2010-10-03 18:59 libbv16_jni.so
-rwxr-xr-x system   system      27903 2010-10-03 18:59 libg722_jni.so
-rwxr-xr-x system   system      75472 2010-10-03 19:00 libgsm_jni.so
-rwxr-xr-x system   system      50938 2010-10-03 18:56 libOSNetworkSystem.so
-rwxr-xr-x system   system      94100 2010-10-03 18:57 libspeex_jni.so
-rwxr-xr-x system   system      83715 2010-10-16 16:47 libg729_jni.so

However, I still don't see G729 codec in the list of my codecs in Sipdroid. What else need to be changed? What I suppose to do with G729.java wrapper?
Aug 19, 2011
#165 neoigerm...@gmail.com
we are running a Brekeke SIP Server and SIPDROID on many phones which works very well, especially with residential and commercial VOIP/SIP gateways. However we cannot get SIPDROID Audio working on the Freescale IMX51 chipset, as Freescale supports only  g.722/723/726/729. Any advise Kind Rgeards
Neoi technology Singapore - Robert  
Oct 11, 2011
#166 ocean.ra...@gmail.com
please you follow my previous mail how to add g729 codec.you need to add G729.java wrapper and some change needed in Codecs.java,UserAgentProfile.java and UserAgent.java file
Dec 6, 2011
#167 carmageddon
ocean.ra: It seems the developers entirely forgot about us and never integrated it into official Sipdroid?

Meanwhile I have a new phone which should be better compatible with it.

However, your instructions are spread all over this issue report - could you please make ONE post, with all the required modified files, and instructions to follow?


Thank you!
Apr 9, 2012
#170 jkhan6...@gmail.com
where do i find basic_op.h, ld8a.h ,g729a.h files and where to put those files?
Apr 13, 2012
#171 jkhan6...@gmail.com
@ocean I have successfully added g729 codec in SipDroid.
thanks a lot
Apr 16, 2012
#175 ocean.ra...@gmail.com
great job!!! Now you upload a patch that how to add g729 codec support for sipdroid community.
May 18, 2012
#177 shoulder...@gmail.com
@ocean i have successfully added g729 codec in sipdroid, but it works only in ARMV7 devices. for ARMV5 devices i need ITU g729annexA codec. can you provide me the link to get the source of ITU g729annexA codec? if i have to change anything in g729_jni.java file to run the codec?

Jun 28, 2012
#180 jkhan6...@gmail.com
I have created shell script to add a g729 codec in Sipdroid so if anyone needed just inform me !
@ocean thanks
Jun 28, 2012
#181 ak.hep...@gmail.com
Juned,  can you just attach the script here?  That way others can use it at their discretion.

thanks!
Jul 2, 2012
#183 jugni1sm...@gmail.com
Hello juned, your script is only working in sipdroid but if i will change the package name then it will not work.So is it required to change the name at anywhere in script or .so file? 


Jul 2, 2012
#185 Spon4ik
anyone can just publish working sipdroid APK with g729 inside?
Jul 2, 2012
#186 jkhan6...@gmail.com
working Sipdroid APK with g729 codec
sipdroid-read-only.apk
774 KB   Download
Jul 2, 2012
#187 carmageddon
Finally, about $#@! time!
Too sad by now, flat-fee unlimited programs become almost de-facto in the world except international calls perhaps...

Thanks!
Jul 3, 2012
#188 Spon4ik
Comment 186 by jkhan6...@gmail.com, Today (13 hours ago)
working Sipdroid APK with g729 codec
 	sipdroid-read-only.apk 
774 KB   Download

thanks, but have you 2.7 instead 2.4?
thanks in advance
Jul 6, 2012
#190 jkhan6...@gmail.com
i will upload 2.7 soon
Jul 6, 2012
#191 jbr...@gmail.com
Looking forward to it, jkhan6; and a big thanks!!!

[Now if only we can get proper multi-account support .... (I can dream, can't I?)]

Jul 9, 2012
#192 jkhan6...@gmail.com
definitely you can dream it ! 
Jul 9, 2012
#194 Spon4ik
tried to make by myself 2.7 with G.729
but it not appears in codec selection menu
how do I compile it correctly?
Jul 11, 2012
#196 jkhan6...@gmail.com
in Codecs.java(org.sipdroid.codecs) add following line.
add(new G729());

Jul 11, 2012
#197 jkhan6...@gmail.com
here is the sipdroid 2.7 with G729 codec.
sipdroid-read-only.apk
785 KB   Download
Jul 12, 2012
#202 jkhan6...@gmail.com
@shoulder i found the link to get the all the codecs from ITU g729annexA to g729annexi but i don't know about what modification is required in g729_jni.cpp file to build the library file of g729.
if you have any idea about this then please let me know.

Thanks
Jul 13, 2012
#203 stephen....@gmail.com
Could you put the 2.7 with G729 some place we can get it?  Thanks!
Jul 16, 2012
#204 jkhan6...@gmail.com
i have attached the 2.7 APK
Jul 16, 2012
#205 stephen....@gmail.com
Thanks, I had missed that. Are there any special instructions to get it to install? I only get an "apllication not installed error.  
Jul 17, 2012
#206 jkhan6...@gmail.com
no there is not specific instruction. Actually i checked then uploaded but any ways i will check it again and if i found any issue then i will fix it.
Jul 19, 2012
#207 and...@kliq.co.za
G729 not working for me
Jul 20, 2012
#208 jkhan6...@gmail.com
on which device you have tested and in what version?
Jul 21, 2012
#209 stephen....@gmail.com
I had trouble installing the apks because I thought they were addons for the official packages.  My froyo phone just fails when trying to install.  My Nexus 7 jellybean gave me a more helpful "conflicting signatures" error message.  When I uninstalled the original package, the G729 enabled ones installed without issue.  Thanks!
Jul 23, 2012
#210 jkhan6...@gmail.com
that's great
Sep 11, 2012
#211 kele...@gmail.com
ERROR: codecs incompatible
Please help.
Sep 14, 2012
#212 jkhan6...@gmail.com
There should be a problem in codec negotiation. can you show me error log?
And make sure you have installed the codecs on server( Asterisk etc.)

Thanks
Oct 4, 2012
#213 junli165...@gmail.com
Thank u for the good work.
I got "codecs imcompatible" error with version 2.7 on my htc evo 4g, but everything worked fine with version 2.4. Please advise.
Oct 29, 2012
#214 jkhan6...@gmail.com
When did you get this error? i mean which case?
Oct 31, 2012
#215 lapcc...@gmail.com
2.7 with g729 doesn't work, 2.4 works for me on galaxy nexus
Nov 25, 2012
#216 gjorgjio...@gmail.com
 "codecs imcompatible" when try to call someone. htc one v, sipdroid 2.7

why does it says 13kbit for g729 (shouldn't it be 8kbit?)
Dec 7, 2012
#217 jkhan6...@gmail.com
yeah its 8 kbit, but that string i just forgot to change !
Jan 12, 2013
#218 Sherman....@gmail.com
I really hope Sipdroid can support iLBC. I used Media5-fone over 3G, the sounds really good. But Media5-fone drain too much battery.
Apr 11, 2013
#219 pradipsa...@gmail.com
i want to add g729.java and codecs.java ,useragentprofile.java and useragent.java and add libs folder to it.so please suggest me how to compile it .please help me out...
Apr 27, 2013
#220 sinancet...@gmail.com
It's been 4 years and there is no iLBC and G729 codec support?
May 14, 2013
#221 Sherman....@gmail.com
hope it can support iLBC!
May 15, 2013
#222 pradipsa...@gmail.com
@sherman do you have the iLBC support code.
Oct 28, 2013
#223 jkhan6...@gmail.com
Here i have mentioned steps to add g729 codec in your project and compiled apk of Sipdroid 3.2 can also be found there
http://junedk.blogspot.com/2013/10/add-g729-codec-in-sipdroid.html
Oct 31, 2013
#224 azhar4...@gmail.com
G726 and G729 are really helpful as our community member said, many voip providers will support it, did anyone know whether http://www.vitelglobal.com supports it.
Mar 24, 2014
#226 L.Netwal...@gmail.com
http://junedk.blogspot.com/2013/10/add-g729-codec-in-sipdroid.html
The link is dead. Could you repost 3.2 or later with g729, please.
Sign in to add a comment

Powered by Google Project Hosting