Some time ago I announced that we would be working on a GStreamer backend for Phonon. This work is still ongoing, but we have now put the code into the GStreamer CVS repository. The code is still early stage, but at least those interested can now follow the code as it progresses. One thing people will notice is that the current code is still all C which I guess most people would find strange for something meant to be used with Phonon. Well the idea is to provide the Phonon components with both a C and a C++ API. So the current code is meant to both be usable from C and also be easily used to power the GStreamer backend for Phonon. We decided on this approach as we found that since a lot of the work on implementing a GStreamer backend for Phonon was actually about writing some high-level GStreamer components and at that point we came to the conclusion that offering people to use them with a C API in addition to the official Phonon C++ API made quite a lot of sense. The code and design so far have been done by Wim Taymans, but in order to get more focus on the development from here on we will have David Gerber take over from here and work exclusivly on this for a the next months.
GStreamer for Mac OSX and Windows
Those following GStreamer CVS will have noticed that there has been quite a few commits recently for audio and video output plugins for Windows and Mac OSX. This is not a coincidence as we are currently working on a project to ensure that GStreamer works perfectly on these operating systems. The Windows audiosink and videosink should already be in working order and the MacOS X audio sink also works fine. We still have some work needed on the MacOS X video sink, but we hope to have that done by the end of the Month. With these plugins in place writing a cross platform application with GStreamer should be very easy so I suggest anyone working on crossplatform development take a look at the plugins and try them out on their own systems.
I know a lot of you are waiting for us to add PVR support into Elisa. This task is making its way quickly up our todo list, but one thing we are going to try to tackle first is how we handle large media collections. Anyone who has ever run Elisa will notice that while it looks very nice the current GUI concepts are not very practical when you want to find/play one specific song in a collection of many thousand. We consider this the top issue atm in order to make Elisa not only look nice but be really nice :)
In Elisa related news the first official release of Coherence happened today. Coherence is a Python Upnp framework developed by Frank Scholz and is the framework we use for all the upnp goodness in Elisa.
Back in the day we tried relaying on ‘released’ versions of ffmpeg in GStreamer. The problem was that there never really was any releases of ffmpeg and the versions that floated around all tended to have different API’s. So what we discovered was that when distributions packaged GStreamer and a other multimedia systems using ffmpeg one or the other always tended to end up broken. So in the end we gave up on relying on ffmpeg as an external dependency and instead set up a system to ‘suck in’ snapshots of ffmpeg into the GStreamer ffmpeg plugin and thus avoid the problem of different applications conflicting due to relaying on different versions of ffmpeg.
Well it seems some of the major distro’s have decided that they want a return to the painful old days. The problem is that even to this day ffmpeg change its API’s more often than Linus Torvalds change his socks and they still don’t do proper releases, thus relaying on it as a shared library is a pain. Yet distributions in the name of security and not wanting duplicate copies of the code installed are now trying to get all their ffmpeg using systems to share one install. So if you get tons of weird error messages on your console when running a GStreamer application, please dont blame us, but instead email the package maintainer for your distribution with your frustrations.