summary of the aKademy meetings
Scott Wheeler
wheeler at kde.org
Mon Sep 6 03:20:47 BST 2004
Ok, so here goes something of a summary from the various KDE Multimedia
activities and a basic description of what's going on in make_it_cool. Those
that were involved are encouraged to provide corrections / more details.
Also I wanted to run this by some other people first, but I'll be heading out
for vacation in a few days and wanted to get this rolling before I disappear
for three weeks. Apologies for any inaccuracies.
Our largest meeting was on Sunday night when there were 16 multimedia people
at dinner together counting 2 from NMM, 1 from MAS and two from GStreamer /
Fluendo. This made for the largest group of KDE multimedia developers ever
in one place. I'll see if I can get the names out (just listing primary
projects -- don't get upset that it isn't comprehensive):
Matthias Kretz (aRts)
Allan Sandfeld Jensen (aKode)
Scott Wheeler (JuK)
Helio Castro (KMix)
Christian Esken (KMix)
Christian Muehlhaeuser (amaroK)
Mark Kretschmann (amaroK)
Max Howell (amaroK)
Tim Jansen (GStreamer bindings)
...and well, there were 11 KDE people, but there were at least a couple not
doing MM stuff, but then I'm probably forgetting someone too -- sorry --
couldn't find a photo...
Matthais, Allan and I talked a lot informally about some of the structures and
also later in the week the three of us plus Max and Chris from amaroK got
together with Leon from MAS to discuss its relevance to KDE.
Ok, down to the details of what we're planning on for KDE 4. All of this is
subject to change of course, but these details represent the concensus as it
stood (and most of this is pasted from a mail that I ran by several people
during the conference):
*) We'll have a simple, abstract player interface that can handle audio or
video and is not tied to a specific backend. This interface will support
most of the common cases that application developers need.
*) Because such an interface was needed anyway and there was very little
overhead required to make it plugable, well, it is. (There was some previous
discussion of configuring this earlier on the list.)
*) Packagers or system administrators will be able to change the backend based
on their specific needs.
*) GStreamer will be the default backend as it at the moment best addresses
the problem set that we're dealing with. It looks like we'll also have aRts,
NMM, aKode (direct output) and possible MAS plugins as well (more on MAS
later).
*) At some point there will most likely be a (not particularly strong)
recommendation for a default sound server; however as the abstraction at that
layer will be handled by the backends this doesn't presently have a
significant influence on our development so we're not in much of a hurry to
make such a decision.
*) There's some discussion on whether or not to have a recommended lower level
API for applications that need such. It's not clear if this will happen or
not.
We also talked a lot with Leon about MAS. Leon is naturally very interested
in seeing MAS as an option for our default media framework. At the moment
there's a pretty huge gap between what it provides and what we need; we
talked a lot with him about what those requirements are and I believe he's
subscribed to this list now, so ideally he'll keep us posted on how things
unfold there. At the moment it however only solves the more low level
problems and leaves things like demuxing [en/trans/de]coding, largely
unimplemented, so it's mostly in the hands of the MAS developers as to
whether or not it's a contender to NMM and GStreamer for us.
NMM also had a very impressive show of their technology at aKademy and based
on currently implemented features is the only contender to GStreamer.
However there was a concensus between the KDE folks that at this point
GStreamer is more mature and as such a better default for KDE 4. However
there were a number of people interested in following NMM more closely in the
future and tracking its progress and helping it build up a more traditional
OSS community and mature as a project towards something that may be a
suitable default for KDE in the future.
So, what's going on in make_it_cool.
There's a basic API in kdelibs/kdemm that outlines three abstractions. I'll
omit the details of the APIs (you can read that yourselves) but try to give a
general overview:
*) Backend
- handles creating channels and players
- manages a list of channels
- reports on supported mimetypes
*) Channel
- essentially encapsulates a logical group of playable stuff
- makes it possible to control the volume of such a group -- i.e. to set
the volume for "notifications", "music" or "video" and have all apps
using the framework respect this
*) Player
- basic player controls -- load, play, pause, stop, seek, volume, etc.
- has a subclass, VideoPlayer that creates a QWidget for displaying video
- outputs through a specific channel
These classes are implemented through concrete backends currently in
kdemultimedia/kdemmbackends. One of these will be moved to kdelibs for KDE
4.
JuK also has already been ported to use these backends when appropriate files
are updated to the make_it_cool branch and can be used for testing the
backends at the moment.
Well, I think that's about it. I've tried to keep my opinions out of this as
much as possible (and hopefully succeeded); I'd appreciate if corrections
could be distinguished from general responses.
Cheers,
-Scott
More information about the kde-multimedia
mailing list