First of all, I will explain why I did chose QXmpp as my VOIP library.
As (maybe) you are noticed, one of my latest movements for Carnival LiveCam was the inclusion of the Spaces. The idea of Spaces was intentionally thought to be used in a video conference environment.
Also, I was chose to use XMPP/Jingle/WebRTC from beginning. The reason? Simply because it's an open standard, and the most world wide popular companies adopted it:
Now, with the protocol chosen, we need a library that work with it. There are only four Free Software libraries that supports Jingle:
- libjingle: The real one XMPP/Jingle library, developed by Google, multiplataform with BSD license. But it's really hard to compile (nearest to imposible), requires a large amount of patches to be applied before compile it.
- libpurple: The library created by Pidgin proyect, multiplataform, multiprotocol, with GPL license. The problem is that it's absolutely undocumented. Also, even if Carnival LiveCam is licensed under the GPL, there could have a dangerous legal bottleneck by using it in my program.
- telepathy: The library used for Empathy and KDE Telepathy, works only on GNU/Linux, multiprotocol, with GPL license. Again, idem to libpurple, using a GPL library is a bad idea. Also, documentation only explains how D-Bus works and that the user needs very advanced GStreamer knowledge, but doesn't explains how to make a fucking simple VOIP program.
- QXmpp: An independent XMPP library that supports Jingle, multiplataform, with LGPL license. If you are making your program in Qt you are lucky because this library is fully writen in Qt/C++. It's API is clear and very easy to understand. There are only one against, QXmpp doesn't implements a Foward Error Correction (FEC) algorithm, this means that in case of packet loss, the video will suffer of a severe image corruption.
A few weeks ago, I had uploaded a simple videoconference example program.
Because the packages for Arch Linux are outdated and incomplete, I had uploaded also three PKGBUILD's to create a QXmpp package with Speex, Vp8 and Theora support from stable and Git version. You can test it using your Gmail (firstname.lastname@example.org) or Jabber (email@example.com) account for example.