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:
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:
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 frozenproductions.com )
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
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.