Comparison: MAS, GStreamer, NMM

Marco Lohse mlohse at cs.uni-sb.de
Wed Aug 25 13:49:00 BST 2004


Hi there,

from the feedback we got at the KDE conference I think one important
thing for KDE multimedia developers (as well as for other multimedia
developers) would be to have some comparison between MAS, GStreamer,
and NMM.

We would like to start this comparison with a look at two things:

(1) the programming models (i.e. what code you have to write down to
achieve certain things) and
(2) the APIs provided by the different frameworks (in correspondance
to Matthias Ettrich's statement "the API is to the programmer what a
GUI is to the end user").

Therefore, we would suggest that for every project the source code for
a number of helloworld programs is provided. The first program
(helloworld I) should demonstrate how following features can be
accessed:

(1) Allow the playback of an encoded audio file (e.g. MP3). This will
result in similar setups: a component for reading data from a
file connected to a component for decoding connected to a component
for audio output. (Together, this is called "pipeline" or "flow
graph").
(2) Set the filename of the file to be read.
(3) Manually request/setup this functionality, i.e. no automatic setup
of flow graphs.
(4) Include some error handling.

In a second step, we would like to extend the helloworld program with
following feature (helloworld II):

(1) Add a listener that gets notified if the currently playing file
has ended, i.e. this listener is to be triggered after the last byte
was played by the audio device.

In a final step, we would like to extened the helloworld program
(helloworld I) to allow for distributed playback (helloworld III):

(1) The component for reading data from a file should be located on the
local host. The component for decoding, and playing the audio data should
be located on remote host.

Notice that this third example should also demonstrate how easy (or
painful) it is to develop networked multimedia applications using the
particular framework. We hope that this will finally show that
developing distributed multimedia applications means more than "well,
simply write a component for streaming data and put that into your
pipeline".

We think that these three examples provide typical features needed for
developing multimedia applications. Furthermore, these features are
simple enough to be provided for all three frameworks. Therefore, we
hope that the developers of MAS and Gstreamer are willing to
participate in this comparison.

For NMM, see following links:

helloworld I
http://graphics.cs.uni-sb.de/NMM/current/Docs/helloworld/x62.html

helloworld II
http://graphics.cs.uni-sb.de/NMM/current/Docs/helloworld/x122.html

helloworld III
http://graphics.cs.uni-sb.de/NMM/current/Docs/helloworld/x145.html

We also set up a page at
http://graphics.cs.uni-sb.de/NMM/comparison.html
that should link to the examples provided for MAS and GStreamer.

Have fun, Marco.

P.S. If you think this email should be forwarded to other
mailing-lists, feel free to do so, but please cc me so that I am
informed about further discussions.



More information about the kde-multimedia mailing list