JVOIPLIB is an object-oriented Voice over IP (VoIP) library written in C++. It is based upon work done for my thesis at the School for Knowledge Technology (or 'School voor Kennistechnologie' in Dutch), a cooperation between the Hasselt University and the Maastricht University. A part of this library was developed at the Expertise Centre for Digital Media (EDM) in Diepenbeek, Belgium. The EDM is a research institute of the Hasselt University.
JVOIPLIB stands for "Jori's Voice over IP library". The latest stable version is 1.4.1 (October 2005).
Features of the library include:
- Easy VoIP session creation and destruction.
- Highly configurable sessions: sampling rate, sample interval, compression type, ... can all be selected by the user. These features can also be changed during a session.
- Openness and extensibility: the object-oriented nature of the library makes it very easy to add features; new components can easily be tested by registering them as 'User Defined' modules.
- Support for 3D effects: for my thesis I also did some research and development about VoIP in networked virtual environments, which included adding 3D effects to sound. For this reason, I've added this feature to the library.
Currently, several components have one or more implementations. In this release, these modules are included:
- soundcard input and output, file input and output (using libsndfile)
- DPCM compression, Mu-law encoding, LPC 5.4kbps compression (based on the LPC codec of Ron Frederick), GSM 13kbps compression (based on the GSM codec of Jutta Degener and Carsten Bormann), Speex compression
- RTP (Real-time Transport Protocol) transmission of data
- an elementary voice mixer
- a simple localisation scheme, a HRTF based localisation scheme
Basically, I wanted to make at least one implementation of every component type, so it would be easier for others to add components to the library.
As from version 1.1.0, I added a nice test utility, which can be compiled with both Qt and MFC. Here's a screenshot of the Qt version (captured with The Gimp while running in Blackbox 0.61.1)
Currently, the library has been tested on both a GNU/Linux and a MS-Windows platform.
The library is totally FREE!
Copyright and disclaimer
The full copyright can be found in the file LICENSE.LGPL, which is included in the library source code archive. In short, it's this:
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Here is the current stable version of JVOIPLIB:
- In '.tar.gz' format: jvoiplib-1.4.1.tar.gz (579,001 bytes)
- In '.tar.bz2' format: jvoiplib-1.4.1.tar.bz2 (481,091 bytes)
- In '.zip' format: jvoiplib-1.4.1.zip (759,357 bytes)
If you'd happen to create something useful with JVOIPLIB, you're always welcome to mention somewhere that it uses the library, but you're not obligated to do so.
A LaTeX version of the manual is included in the archive. You can also find a compiled version here:
- Download in PDF format
You're always welcome to add your own component implementations to the library. More specifically, file input and file output modules would come in very handy, as would some more compression schemes. If you would like to implement one of these things, please let me know. This way, we can make sure that the same work isn't done twice...
Projects using JVOIPLIB
Since I'm always curious about where my work is being used, you're welcome to add a description of the project in which you're using JVOIPLIB.
If you have any questions, remarks, suggestions or you would simply like to tell me what you are using the library for (I'm always interested), you can send me an email at this address:
If you want to stay informed about this library, send me an e-mail with subject