g729 ITU codec on 3G vs 3GS iphones

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've directed this to both Samuel and the PJSIP list, because the answers may be of interest to both the internet and myself (of course).

I've integrated experimentally (I dont really see how my personal project, should I ever get around to releasing it, will justify paying the outrageous patent price for the the codec, alas) Samuel's port of the 729 codec. 

It required a little surgery, Notably it didn't seem to be registering the codec, so I added these lines:

#if PJMEDIA_HAS_G729_CODEC
    status = pjmedia_codec_g729_init( pjsua_var.med_endpt );
    if (status != PJ_SUCCESS) {
        pjsua_perror(THIS_FILE, "Error initializing G729 codec",
                     status);
        return status;
    }
#endif  /* PJMEDIA_HAS_G722_CODEC */

to pjsua_media.c (where the other codecs are being set up) , and a little bit of headscratching to get the codec to build. Notably I'm using samuels G729A , as I really can't find the info to integrate his G729AB work.

First off, *excellent work Samuel*.  On the 3GS phone (running a 3.1.2 firmware), this seems to work excellently, with a slight caveat that it doesnt seem to survive a restart of the stack. This might be my fault and I can probably find a way of fixing that. :)

However, on the 3G phone (Running a 3.1 firmware) I get mostly no sound, but sometimes one way sound. Sometimes this corrects for perhaps a second after holding and returning. But otherwise it doesn't work. To confirm I've used the same binaries between both, and on examination there doesnt *seem* to be any packet loss issues I *think*.

The two phones have slightly different CPUs, the 3G an ARM11(armv6) processor, and the 3GS an ARM Cortex(armv7,neon/vfs/etc). Both support roughly the same feature set including Thumb2, although I have disabled thumb  as it can interfere with Inline assembly generation. I've also tried to remove Samuels (very clever but perhaps not quite portable) Inlined assembly speed ups of the basic_ops and interop routines (Mostly just high speed bit math) and replace them with generic versions from the ITU references, but still inlined. At some point I'll try and write a patch for that code that uses conditionals to keep the ARM optimisations but lets it work on non ARM platforms. This didn't fix the problem. Still works on 3GS, not so much on 3G, alas.

Regardless it still doesn't work. :( The other codecs do however work fine on both platforms. Has Samuel, or anybody else for that matter, had any experience with this issue or know how to fix it? 

Regards,

Shayne.


===================================
Shayne O'Neill Development
Mobile, Web and Business process integration.
shayne.oneill at gmail.com 0400247091
Ask me about how Alfresco can help your business grow.




[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux