Home » Projekte » Veraltete Projekte » QtIAX

QtIAX

Warning 

This is an abandoned project. Feel free to clone and resurrect it.

Download 

Concept 

Create an open-source (as opposed to ziaxphone) Qt application that implements a soft phone based on the IAX protocol.

History 

Voice-over-IP traditionally used H.323. Unfortunately, this protocol is quite complicated. For example, it uses lots of ports and an binary encoding of the data. Therefore, it's not easy to travel past Firewalls with NAT.

Next comes SIP, which has a cleaner design. Unfortunately, it still needs two ports, one for the command exchange and one for the RTP stream which contains the voice. It's better for firewalls, but you still have to have a proxy running. It's also difficult to implement.

The open source project Asterisk implements a software based PBX. As an internal protocol to trunk two or more PBX servers, the IAX (Inter Asterisk Exchange) protocol was created. It's very lightweight, is based on UDP and bundles call signaling and voice into one data stream. That makes it work perfectly suited for connection-based simple firewalls like Linux' iptables + ip_conntrack.so.

Used libraries 

Like many IAX based soft phones, QtIAX is based on iaxclient. I just did not like the original implementation.

First, iaxclient contains way more source files than are actually needed. I stripped that down to the bare minimum.

Then I realized that this library used error messages that are written in english. If you ever want to localize an iaxclient-based library, you'll find out that this is not so good. So I changed the messages into integer error id's.

Because Qt has it's own event loop, I removed the pthread based event loop of iaxclient.

And while I was changing it, I found out that some things could be made simpler or omitted. After all, I plan to run this application not only on my desktop Linux PC, but also on Ramses. This computer has only 32 MB Flash.