LinuX MultiMedia Project - About

LinuX MultiMedia Project provides a powerful generic API for all kinds of multimedia. It can be used by any application for graph and sound output ( e.g. games ), but the API is designed especially for audio/video playback and editing.

It has a modular structure, so formats, codecs, and output devices can be added very easily. To make it modular, the project is based on plugins.


There are 7 plugin types:
  • Input ( DeMUX )
  • Output ( MUX )
  • Audio Filter ( used as codec and output, as well )
  • Video Filter
  • Graph Output
  • Video Codec
  • I/O

Programmers can use each of these types independently. Although some plugins depend on each other ( e.g. Input plugins use I/O plugins ), that fact is hidden from the programmer. For example, to use Input Plugins you don't have to know anything about I/O plugins.

The core of the project is the XMMP library ( libxmm ). This library provides the interface for the programmer using this project and provides general functionality needed by the plugins. For example, it provides needed audio and video conversions, and system specific code can be found in this library as well. Plugins shouldn't contain system specific code. This makes it easy to port XMMP in the future ( which is not important to me right now ).

Part of this project is a player library ( libxmmplay ). This library makes it very easy for programmers to play back media files. The library can be controlled by simple commands ( Play, Stop, Status, ... ) and completely manages the playback of the media ( reading, output, A/V sync, ... ).


This software is distributed under GNU General Public Licence version 2, which can be found in the file "COPYING".


At this time the project provides all that is needed for a player. What is desired is a complete multimedia framework. Therefor the interfaces may change in the future. Future of XMMP:

v0.6.2MPEG 1/2 support, VCD and initial DVD support
v0.6.3Complete DVD playback
v0.7.0xmmDub will be added. xmmDub will be an application similar to VirtualDub, that can be used for file format conversions.

You are welcome to help to make this project a good piece of software. If you are interested in developing software related to XMMP or you have questions, feel free to contact me ( xmmp at )


The best way to learn how to use XMMP is to check out the header files in 'include/libxmm' and 'include/libxmmplay'. These files are documented and easy to understand. These files are used by Doxygen to generate the API documentation.
Only a few sample programs are available. These can be found in 'contrib/samples', but libxmmplay itself is a good example which uses the libxmm API. xmmplay is an example for the libxmmplay API.


This Project is developed by Arthur Kleer.

Thanks to:

  • Sven Pedersen