LinuX MultiMedia Project (XMMP)
Version 0.6.0
LinuX MultiMedia Project provides a generic powerfull API for all
kind of multimedia. I 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 modular structure, so formats, codecs, output devices can be
added very easy. To make it modular, the project is based on plugins.
The are 9 plugin types:
- Input ( DeMUX )
- Output ( MUX )
- Graph Output
- Sound Output
- Video Codec
- Audio Codec
- Video Filter
- Audio Filter
- I/O
Each of this types can be used independent. Not exactly ( e.g. Input plugins use I/O plugins and Audio/Video plguins ), but that fact is hidden from the programmer. For example, to use Input Plugins you don't have know anything about I/O plugins or Audio/Video codecs.
The core of the project is the XMMP library ( libxmm ). This library provides the interface for the programmer using this project and provides general stuff 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 future ( not important to me, right now ).
Part of this project is a player library ( libxmmplay ). This library makes it very easy for programmers to playback media files. The library can be controlled by simple commands ( Play, Stop, Status, ... ) and manages the complete 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. Desired is a complete multimedia framework. Therefor the interfaces may change in future. Future of XMMP:
- v0.6.1: MPEG 1/2 support and complete DVD playback
- v0.7.0: xmmDub will be added. xmmDub will be a application
similar to VirtualDub, that can be used for file format conversions. You are welcome to help making this project a good piece of software. If you are interested in developing 'stuff' related to XMMP or you have question 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'. This files are documented and easy to understand. This 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 itsef is a good example for using the libxmm API. xmmplay is an example for the libxmmplay API.
Arthur Kleer ( kleer@frozenproductions.com )
