Comparison: MAS, GStreamer, NMM
Marco Lohse
mlohse at cs.uni-sb.de
Thu Aug 26 09:05:25 BST 2004
Christian Fredrik Kalager Schaller wrote:
[..]
>
>
>I would think this is the least interesting thing to look at in this
>setting cause if the Qt style bindings to GStreamer (or if someone made
>Qt style bindings for MAS) isn't exactly what you want you can change
>them to fit what you want in the coming year. In his talk at the
>conference Mathias Ettrich said that in some was Qt was basically a
>binding to a lot of different C libraries, I remember he mentioned
>freetype as one. So basically you should be able to get a Qt binding
>that is just as good and comfortable as the rest of Qt for you to
>program in and with. The important things for KDE to evaluate IMHO,
>especially considering that KDE 4.0 is just a year a way is features,
>maturity, interoperability, viability and cross-platform support.
>
>
>
It is interesting that you mention bindings, because one motivation for
developing NMM was to provide high-level C++ bindings to all these
multimedia C libraries that run inside our plug-ins, e.g. for encoding
and decoding.
Concerning maturity, etc. : yes, these are certainly very important
points for projects like KDE. And its up to the people from KDE to
decide about this. However, to do such a decision, one has to develop
some test programs. Getting familiar with the development using MAS,
GStreamer, or NMM (and making life easier) was the intention of starting
this comparison.
[..]
>
>
>>
>>
>Yes, but I am not so sure that in most of these cases having the media
>framework on both sides is the right solution. For the thin-client
>scenario for example I think having a lightweight limited functionality
>media server client is the better solution and then have the media
>framework on the other end do the needed transcodings and adaptions in
>order for that light client to be able to play/display what you are
>sending it.
>
>My way of solving the exact demo done at the conference would be to have
>a deamon running which offered a rendevouz/zeroconf services which it
>broadcast over bluetooth/wlan. When you then arrive with your handheld
>which has bluetooth/wlan it would inform the owner that X number of
>services was available and ask if she/he wants to transfer the stream to
>any of them. I guess you don't really want to be playing from your PDA
>when you get home anyway, so I guess adding some functionality which
>transfered the playback to the sound collection on your central
>server/machine would be the final solution to the issue I guess.
>
>
>
Yes, as I mentioned in my talk, you can use traditional client/server
streaming approaches to develop such applications. However, it is not a
question of if you can realize such applications with the client/server
approach, it is a question of how easy (or painful) it is to do so. Or
if other programming models are better suited. Also, you mainly speak
about service discovery, which is to some extent the easiest step,
because there exist many working solutions out there that can be used.
The 'services' you speak of are mainly black-boxes: you have to discover
what kind of functionality they offer, what kind of media data they
allow to receive and they will provide, ...
What you do not mention - and what also needs to be provided to develop
demos like we showed at the KDE conference - is:
* Type-safe control interfaces for distributed components (e.g. for
controlling the DVD menus conveniently)
* Type-safe connection between your application and the 'service'
* Sharing of parts of running applications (e.g. flow graphs)
* Distributed synchronization between different applications
* Seamless handover of media playback between different devices
To make this more clear:
First of all, for purely local DVD playback, you will have to write an
application (the flow graph aka pipeline). Also for TV, you will have to
do that. This work has to be done using whatever multimedia framework
you use. Then, using your 'services' to provide distributed
functionality you would need to write a service for remote access to TV
and a service for remote access to DVD (e.g. because TV allows to change
channels, DVDs allow to navigate within menus). You are also fixed to
where work like transcoding is done (e.g. transcoding needed for the
mobile client is done on the host the service runs on?). And you still
need to solve all the other issues pointed out above.
NMM uses a completely different approach: You will only have to do the
work needed for local DVD playback or TV once (e.g. provide the flow
graph). Plus you need to add 2-3 lines of code to distribute that
application (distributed flow graph). Or 2-3 more lines to share your
application (shared distributed flow graph).
Have fun, Marco.
More information about the kde-multimedia
mailing list