
EMIPLIB
Welcome to the home page of EMIPLIB.
Introduction
The name EMIPLIB stands for 'EDM Media over IP library'. This library was developed at the
Expertise Centre for Digital Media (EDM), a research
institute of the Hasselt University. As the name suggests,
the goal of the library is to make it easier to stream several kinds of media, including (but
not limited to) audio and video.
The latest version of the library is 1.1.1. You can take a look at the ChangeLog.
Features
Current features include:
- Soundcard input (using OSS, WinMM, Jack and PortAudio)
- Soundcard output (using OSS, ALSA, ESD, WinMM, Jack, SDL and PortAudio)
- An OpenAL output component
- WAV file input (using libsndfile, libaudiofile or a simple internal WAV reader)
- WAV file output (using libsndfile or a simple internal WAV writer)
- Webcam input (using Video4Linux and DirectShow)
- Speex compression
- U-law audio encoding
- A-law audio encoding
- LPC compression (code taken from JVOIPLIB, which is based on Ron Frederick's lpc.tar.Z)
- GSM 06.10 compression (code taken from JVOIPLIB, which is based on Jutta Degener and Carsten Bormann's work)
- H.263+ compression (using libavcodec)
- Mixing of incoming audio streams
- Synchronization of RTP streams based on RTCP information
- 3D sound effects using HRIR/HRTF data from the LISTEN project
- Easy to use voice over IP (VoIP) and video over IP sessions
The library has been tested on the following platforms:
- GNU/Linux
- Mac OS X
- Win32
- WinCE
- Android
Note that not all components are available on all platforms.
For more detailed information about the library, please refer to the documentation.
Screenshots
- The following screenshot shows the
avsession example when no other
streams are being received. Only the local video stream is being rendered.
- In the following example, a 2D world is subdivided into a number of regions,
indicated by the smaller rectangles. The position of a participant is indicated
by a blue or red disc. The line in the disc shows the direction in which the
disc would be moved if it would take a step forward. The rectangle above and to
the right of a participant's disc shows what this person's webcam is filming.
In this application, only participants in the same region can see and hear
each other. Furthermore, the audio streams are processed using the 3D audio
component so that the sound actually appears to originate from each user's
position in the world.
- The next screenshot shows a WinCE SIP-based VoIP application, which uses EMIPLIB
for the VoIP part and reSIProcate
for the SIP functions. In the screenshot, you can see a SIP phone trying to set
up a call to the WinCE application.
License
The license that applies to the library is the LGPL. However,
it is possible to specify that you wish to use GPL licensed
components as well, which then causes the GPL to apply to the entire library.
The license texts of these two licenses are also included in the library source archive.
Note that when creating an application, you have to take the licenses of other libraries
into account too. For example, if your application uses the Qt component and you accepted the
GPL license for the Qt library, linking with the Qt library requires your application to be GPL
too. Similarly, if your version of libavcodec was compiled as a GPL library, using the
libavcodec component of EMIPLIB will require your application to be GPL too, since you'll
need to link against your GPL version of libavcodec.
Downloads
The library depends on the libraries JThread
and JRTPLIB.
You can download the library source code here:
Documentation
Documentation can be generated using Doxygen.
You can also browse the documentation on-line here.
Contact
There is a mailing list available for EMIPLIB. To subscribe to it, just
send an e-mail to emiplib-subscribe@edm.uhasselt.be and you'll
receive additional instructions.
If you don't like to post your question to the mailing list, you can also
send a more private mail to emiplibinfo@edm.uhasselt.be.