Archive for the 'Mobile VoIP' Category

PJSIP version 2.1 is released with support for BB10, SILK, and OpenCore AMR-WB

PJSIP version 2.1 is released with primary focus on BB10 and support for SILK and OpenCore AMR-WB codecs. We also managed to fix synchronization issues in PJNATH and last but not least, the release also contains bug fixes and improved interoperability after SIPit 30 testing in North Carolina just a couple of weeks ago.

As usual please see the Download page for more info.

pjsip for BlackBerry PlayBook: Native SIP client may be closer than you think

One of the most frequently ask questions we got is: does pjsip support BlackBerry? Are there plans to do so?

We always answered no, because the current BlackBerry devices only supports Java and even then there seem to be lack of multimedia access (essential for audio/video capture and playback) and direct socket access (for media streaming).

Recently however, with the BlackBerry Playbook using a different operating system, they have also announced that native C/C++ development kit will be available later this year.

So, maybe it will be not long now until we can answer ‘Yes’. Well, at least it can run on the BlackBerry PlayBook, if not all their smartphones.

PJSIP Version 1.8 Adds iPhone iOS4 Background Support

PJSIP version 1.8 has been released which adds iPhone/iPad iOS4 multitasking/background feature support into the library. For more info, please see the Release Notes from the Download page.

PJSIP version 1.7 adds iPhone and multipart support

PJSIP version 1.7 has been released, with two major features added, namely official PJSIP support for iOS (iPhone/iPad/iPod touch devices) and support for multipart message bodies. The iOS port added native CoreAudio audio device implementation usable for both Mac OS X and iOS, and it also utilizes the device’s built-in echo cancellation feature for more robust echo cancellation. The port also added built-in iLBC codec that comes with the device.

This version also fixed many bugs, part of which discovered during the last SIPIT 26 in Sweden.

Please see the usual download page for more info.

Version 1.4 is released with support for SIP Session Timer and Nokia VAS

“Good news, everyone!”

PJSIP version 1.4 has been released, with new features include SIP Session Timers (RFC 4028), support for VoIP Audio Services/VAS (including VAS-Direct) in Nokia FP1 handsets and newer, and initial porting to Symbian S60 5th Edition. Many bugs were fixed, as usual.

Please see PJSIP download page for more info.

Version 1.1 is released with support for Nokia native codecs and new audio device API

Good news, everyone!

Finally, after months of developments (read: delays!), version 1.1 is ready for your download. This release contains major feature enhancements, namely support for Nokia native codecs (we use code name APS-Direct for this feature) and a new Audio Device API.

APS-Direct is our codename for functionalities to use the hardware codecs that are supported by sound devices e.g. Nokia Audio Proxy Server (APS) and/or VoIP Audio Services (VAS) directly, bypassing media processing in PJMEDIA. The Nokia APS and VAS support codecs such as G.711 (PCMA and PCMU), G.729, iLBC, and AMR-NB, though the availability of these codecs may vary according to the handset types. There are significant benefits of using these codecs instead of software codecs (in PJMEDIA-CODEC), with the main benefits are performance (hardware vs software codecs, latency) and the given codec licenses/royalties. Due to these benefits, the ability to use these codecs in PJSIP applications is very desirable, hence the support.

This has been a major development in PJMEDIA, as traditionally PJMEDIA works with PCM (linear, L16) audio samples. With APS-Direct, audio frames from the sound device are in encoded format, so some components along the media path need to be updated to support encoded frame format. Understandably, some features cannot be used when encoded audio is active, for example the mixing feature of the conference bridge. Please see APS-Direct wiki for more information.

Half way during APS-Direct development, we discovered that the existing sound device abstraction API couldn’t cope with the new features, for example handling of encoded frames, setting the audio device routing, etc. We could of course patch it here and there, but we decided that creating a new one would be a much better alternative. So a new Audio Device API was developed.

For more information about this release, start from the PJSIP Download page. Enjoy!

Call for Symbian S60 testers for pjmedia APS direct

As we finish the current iteration of Symbian S60 implementation, most
importantly the implementation of APS-direct, we need all of you to
participate in testing it. This is from experience we know mobile
devices are very tricky and can behave differently from one firmware
to another.

So we need as many Symbian S60 3rd Edition phone as possible. The test will involve installing a test application, checking a few things, and filling in a report form

To do this we need your IMEI and a few other details, this is because
the requirements of Symbian Signed, we need to ‘burn’ your IMEI into
our test application.

Don’t reply with your details to the public list, instead fill in this
form: http://l.teluu.com/symbiantesting

We can’t promise everyone will be accepted, because there is a hard
limit to the number of IMEIs we can burn, and we’ll prioritize
variation of devices, rather than first come first serve.

If you can get your friends family neighbours to join in that will be
even better.

If you any questions, just leave a comment and.

Thank you all!

It’s Official: Mobile Goes Open Source

Well, according to Symbian. I’ve been attending Smartphone Show 2008, because we have an open source Symbian SIP stack.

In the first two hours of the  I’ve been listening to Symbian itself, but also Motorola, Sony Ericcson, and Nokia.

I’ve lost count of how many times ‘open source’ is mentioned. Nigel Clifford, Symbian’s CEO, mentioned a figure of $300m in royalty revenues to be ‘given back’ to the ecosystem.

That’s a really clever way of putting it. He did admit some of them will be ‘pocketed’ instead of being used to ‘innovate’.

Which is another rather overused word during the whole show. One of the main argument for going open source is innovation over control.

Of course, one can always say Apple seemed to be able to out-innovate everyone in the mobile space, by having total and absolute control (Benoit Schillings, Qt CTO, alluded to a ‘dictator’ style of development).

So the strategy to beat Apple (and to a lesser extent Microsoft and Linux) is to club together in the Symbian Foundation, and using open source as the common denominator, a level playing field.

Number of devices already shipped, number of companies involved is frequently cited. It is hoped the ‘ecosystem’ will be large enough to eclipse (pun intended) other mobile platforms. The newly appointed Executive Director Lee Williams, also do not want to put a ‘30% tax’ on the ecosystem.

It worked in the software tools space with Eclipse, but a mobile platform is a different beast altogether.

You can read up other thoughts on this matter from Dean Bubley and Simon Judge. Incidentally I can answer Simon’s wondering about UIQ: It’s officially dead. Patrik Olsson, VP and Head of Software at Sony Ericsson, said ‘you can get ready for Symbian Foundation-based Sony Ericsson phones now by using S60’.

Version 1.0-rc1 is released with new Python SIP, Nokia APS support, and IPP codecs

“Good news, everyone” [Professor Hubert J. Farnsworth, Futurama]

This is an interim release, intended to mark the end of features development in the trunk. From now on, it will be tests and bug fixes only, until we reach 1.0. This will be our first proper stable release, and it will be given a separate branch, to isolate it from bleeding edge developments in the trunk.

Because of that, there has been a bit of “pressure” to stuff in as much features as possible on this release, since this is the last change to include them in 1.0. Here are some of them:

  • Integration of Intel® IPP Codecs.  This brings us with bunch of new codecs into PJMEDIA, such as G.722.1, G.723.1, G.726, G.728, G.729A, AMR NB, and AMR WB. Basically the lot! For more info about this integration, please see here.
  • New Python API. We discussed this on this blog a month ago here, basically it’s a new Python API for PJSUA-LIB, it’s much easier to use, and it also has a more thorough documentation/tutorial. Please check that out.
  • Nokia APS Support. The Nokia Audio Proxy Server is a wrapper to Nokia S60 sound device, it has much lower latency than Symbian MMF API (the traditional sound device that we support), and it also opens up support for device’s native codecs such as AMR, G.729, and iLBC which we can use in the future.  Although this API has been deprecated by Nokia in FP2, still there are lots of S60 and FP1 devices out there, so this is worth supporting.
  • New Echo Suppressor. Good for mobile devices, we discussed this in this blog here.

And some more. For more information regarding this release, please visit the download page.

Enjoy.

New low-complexity echo suppressor for mobile devices

As many have probably experienced it first hand, the echo suppressor (ES) in pjmedia sucks, to put it mildly. And this has made matters worse since ES plays such a major role in PDA’s and/or mobile devices/smartphones, since echoes are heavily present on these devices and we can’t really put the Accoustic Echo Canceller (AEC) on these devices due to the high processing requirements of the AEC (see our results in Evaluating PJMEDIA Performance article).

So we scrapped the old echo suppressor and wrote another one from scratch. And I think this one works quite well.

First of all, it’s low-complexity so it doesn’t require high processing requirements. We tested on a PocketPC 2003 PDA with 312MHz StrongARM CPU, it only uses less than 0.5% (half percent) of CPU. So it’s very affordable for these devices.

And most importantly, I think it works! It suppresses echo significantly, it lets non-echo audio pass through, and also it allows double-talk where both parties are talking at the same time. This is a very important to allow enjoyable conversation between two people, so we’ve made sure that the new echo suppressor supports this.

For those who care with the details, the ES works by comparing the audio level pattern in the input signal from the microphone with the audio level pattern in the playback signal during the learning process. It calculates the correlation values for each tail position up to the configured echo tail length, and finds out which tail position has the best correlation value. This position is then marked as the echo position. While doing this, the ES also notes the gain factors, that is how much de-amplification to be applied to the input signal in order to remove the echo from the input. Once the tail position is found, the ES then applies the appropriate gain factor according to the state of the conversation (e.g. I’m talking you’re silent, you’re silent I’m talking, we’re both talking, etc.).

This works pretty well. On the downside though, we noticed that the ES still seems to let a quiet echo to pass and transmitted back to remote party, depending on the signal level at the time. For now we allow this to happen since the echo level is very low and  doesn’t seem to be too annoying, and lacking enough experience with the new algorithm we don’t want to make it cut signals too aggressively yet since it may inadvertently cut the “good” signal.

The new echo suppressor is available in SVN as pjmedia/echo_suppress.c, and it will be included in the next release.