Archive for the 'python' Category

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.


Python SIP Take Two (Part 1)

Python is here again!

More than a year ago I wrote Python binding for PJSIP. It was alright, we can have some Python applications done using this wrapper. But, it’s not really having the impact that I expected. I’m talking about programming experience here and not popularity or things like that.

I mean, Python programming is supposed to be easy, and above all else, fun and enjoyable. But the wrapper is not doing that. I don’t know what it is, maybe it still smells too much like C, or maybe it’s the lack of documentation, or both, or something else. Bottom line I was not too impressed, so I’ve always thought about redoing it.

And now it’s done!

With the new module, we now do the absractions in two layers. The lower layer is the _pjsua C extension which exports PJSUA API to Python. This is similar to how the old Python extension was implemented. But now we also add a higher layer abstraction, object oriented, pure Python module on top of this. And that is the module.

The pjsua module provides high level API for constructing Session Initiation Protocol (SIP) multimedia user agent applications (a.k.a Voice over IP/VoIP softphones). It wraps together the signaling, media, and NAT traversal functionality into easy to use call control API, account management, buddy list management, presence, and instant messaging, along with multimedia features such as local conferencing, file streaming, local playback, and voice recording, and powerful NAT traversal techniques utilizing STUN, TURN, and ICE.

Hopefully it really is easier and more fun to use now.

Ready to go? We’ve also created more thorough documentation this time, start your development from this page: Python SIP Tutorial

And stay tuned for next parts of this post, we may have some interesting applications to publish (hints: I’m thinking about SIP client program for Nokia S60 platform, with PyS60. Wish me luck!).

PJSIP version 0.5.10 is released!

After some delay, finally PJSIP version 0.5.10 is released, and it contains new features such as Python language binding for pjsua-api, experimental TLS support, Visual Studio 2005 support, explicit SIP transport binding, and various other enhancements as well as tons of bug fixes.

Download it as usual from

Python SIP User Agent (Softphone)

Actually pjsip now supports Python abstraction for PJSUA-API, although there don’t seem to be a lot of interests for this (people seem to be more interested with ActiveX abstraction rather than Python abstraction 😀 ).

But why Python?

Well first and foremost, it’s for building a nice GUI!

If you’re looking for tools to build a portable GUI, actually Python fits the bill very well since it’s available on almost every platform (Win32, WinCE, MacOS X, Linux, Unices, and even Symbian, you name it), and many GUI toolkits are available for it (with my favorite being wxPython, although PythonCard also looks very interesting (too bad it doesn’t support sizer though)). And not to mention that the language itself is very powerful for creating this kind of application (read: to create something very quickly).

With the power of Python and the high level SIP and media API provided by PJSUA-API to do SIP calls, multiple accounts, presence, IM/instant messaging, buddy list management, conferencing, etc., this could potentially create a potent combination!

So watch this space, there could be a GUI coming out of soon! (or maybe not, just don’t hold your breath yet 😀 ).

Other reasons for creating Python abstraction for PJSUA-API:

  • it sounds ideal for creating scripting like programs, such as for testing purposes,
  • .. and I always want to learn Python. 🙂

So Python it is!