Daily Archives: 24 - Aug - 2004

More gstreamer action

Rich, I’m sorry
that my blogging system doesn’t support comments, but the sad fact is that I
probably wouldn’t check my comments anyways. :-(

Anyways, as hausi has pointed out, your aRts 1.1 suggestion doesn’t help if
you’re trying to avoid glib, because it turns out you’re more or less linking
it in statically. You can see the glib copy yourself in the gslglib* files on
WebCVS.
I have even gone and made sure that the files listed were from
ARTS_1_1_BRANCH. ;-).

I think the conclusion I’m trying to point out is that if you make a
multimedia system with any kind of C bindings or C core, you will end up doing
one of three things:

  1. Use glib, since it is available and by now very well-tested. It would be
    advisable to not fork the library, since then you lose security updates and
    bug fixes.
  2. Avoid glib, and reimplement what you need yourself, poorly.
  3. Avoid any code construct even resembling anything from glib, resulting in
    either no MM framework, or a very lame one.

Of course, we could create or use a framework that is pure C++, such as NMM, but that seems to me to be a
step to make KDE incompatible simply out of spite, which I don’t think would
be good for the users of KDE.

gstreamer

One of the things that was supposed to be discussed at aKademy was what we would be using as a multimedia framework for KDE 4.0

You can find a talk by Scott Wheeler (from kdemultimedia, notably JuK) and Christian Schaller (of gstreamer) on the KDE aKademy presentation archive, which is regarding gstreamer and the role it can play in KDE 4.0

The presentation is a good introduction, and showcases a lot of the current gstreamer integration into KDE. JuK was AFAIK the first KDE music player to output to gstreamer, using Tim Jansen’s nice KDE gstreamer bindings (in the kdenonbeta CVS module). Unfortunately, the bindings only support gstreamer 0.6, while gstreamer 0.8 is already out.

So, now amaroK outshines every other KDE music player out there when it comes to gstreamer support. Not only do they support gstreamer 0.8, but you can even use KIO with amaroK while playing to a gstreamer backend. In fact, amaroK 1.1 Beta 1 doesn’t even support aRts, pending the update of their aRts engine.

The hard work of the amaroK devs has proven that it’s possible to integrate gstreamer output with KDE, which is especially nice since from what I understand, gstreamer is looking to be the front runner to be KDE’s multimedia framework for 4.0.

Everytime the subject of gstreamer and KDE 4.0 comes up, I always hear objections that are IMO unfounded. Let me try to dispel some of those:

  • gstreamer can’t maintain binary compatibility!

    This is simply not true. gstreamer could IMO easily maintain binary compatibility. First of all, it is a C library, which means that they don’t have to worry about the ABI changing every other gcc revision. I’ll admit that it makes it very annoying to code gstreamer software at this point, which is why I’m hoping the KDE bindings get updated soon. ;-). Other C-based platforms have maintained binary compatibility for years, most notably the various UNIX-like kernels out there, including Linux. There’s no technical reason why gstreamer wouldn’t be able to, and the developers themselves seem intent on meeting that requirement.

  • gstreamer can’t play over a network so it’s useless!

    Well there’s nothing stopping gstreamer from being able to do so. It is, after all, simply another gstreamer plugin. I wasn’t even aware that aRts could do this until I saw this point become mentioned, so it doesn’t strike me as the most famous sound server feature.

  • gstreamer is a part of GNOME, we don’t need GNOME taking over KDE!

    Actually, gstreamer only requires glib and libxml. And KDE has used glib for awhile now through, ironically enough, aRts. So that boat’s already left the station. Mind you, using the native gstreamer API IMO is like using shards of glass to wash your face, what with all the macros and underscores and all. But that’s why KDE applications will have a nice wrapper.

I hope that’s a decent overview of the possibilities with KDE + gstreamer, even though it only covers music playing, even though gstreamer is capable of so much more.