NLNet, Collabora Multimedia and Echo Cancellation

One of our main goals here at Collabora is to move the open source multimedia platform forward. Due to this we are investing a lot of time and effort into projects such as GStreamer, Telepathy, PiTiVi, Empathy and PulseAudio. So when we are able to play our part in making sure open source and linux desktops keep abreast of current development, like our work on WebM with Google and Entropy Wave we of course feel extra happy.

Well I thought it was time to announce another important effort we have just undertaken. Thanks to the generous support of NLnet, the same guys who helped Collabora make the Muji multi party chat extension for XMPP, we are now kicking of an effort to add echo cancellation support to Pulse Audio.

The goal of this effort is to make it possible to hook in various kind of audio effects into PulseAudio, including echo cancellation, so that as an application you can just tell PulseAudio that you want it to give you echo cancellation between an incoming and outgoing channel. As a starting point we will port some open source echo cancellation implementations to this framework, with one of them ending up as the default (the goal is that applications can just ask for the default, but that they can also ask for a specific one if it doesn’t want the default for some reason).

We hope this work will have a lot of positive long term effects, easier support for echo cancellation in applications, new improved echo cancellation algorithms and implementations being released and improved audio drivers on the linux desktop (not all drivers are doing a good job currently).

So in the coming weeks Wim Taymans will be leading this effort on our side and I will try to keep you up to date on it as it progresses.

So a big thanks to NLnet for making this possible.

Deadline for submitting talks to GStreamer Conference

Thought I should remind everyone that if you want to do a talk at the GStreamer Conference 2010 you need to submit an abstract before end of June. We already got some really great talks and presentations lined up, but there are still some slots up for grabs.

We are currently looking at splitting the day up into a batch of 45 minute presentations of GStreamer technologies and projects, some 10 minute lightning talks, and finally some 30 minute case-study type talks. So if you are interested in any of those make sure to send in an abstract. Looking forward to seeing as many of you as possible in October!

DLNA, GStreamer and Gst-convenience

It is always nice to see various pieces of code that has been under development for some time start coming together and new functionality get unlocked. Since it is also of critical importance to Transmageddon I have been following the work of Edward Hervey on the gst-convenience library. Well actually gst-convenience isn’t really a separate library, it is a planned extension to GStreamer itself which makes a lot of things a lot easier to do with GStreamer, like advanced multimedia attribute discovery and encoding.

One of the first projects set to benefit from this is the Rygel DLNA library written by Zeeshan Ali. Zeeshan recently posted a great post on how through utilizing gst-discoverer they are now able to do proper DLNA profile detection in the gupnp-av library, you can find the full email here, it is definitely worth a read in my opinion. One thing Zeeshan doesn’t mention in his email, but as I see as one of the big advantages of this new system is that it is also easy to do intelligent transcoding. No matter if you are doing automatic DLNA transcoding or manual transcoding to your device, you normally want to transcode as little as possible. Dumb transcoding (which is what my current Transmageddon profiles do, just transcoded the audio and video to a known working target, regardless of if either the incoming video or audio already was in an acceptable state, thus taking more resources and decreasing audio and video quality more than needed. With smart transcoding you instead cross check between input and output the possibilities and you figure out an optimal remuxing and or transcoding strategy. Thanks to gst-convenience this is not easy to do in Rygel and it will be easy to do in Transmageddon.

One thing holding is a little back atm is that doing bindings using GObject introspection seems a little raw still. Since Rygel and gupnp needs Vala bindings and Transmageddon needs Python bindings it would be nice if we could get the bindings generation working smoothly, but so far it hasn’t been. If anyone got any experience with this I am sure the help would be appreciated.