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.

Want to join the Collabora Multimedia team?

Want to be working on cool multimedia software? Well we are looking to recruit a few more people to Collabora Multimedia over the next few Months. Anyone who got strong multimedia and programming skills are encouraged to apply, for instance the last few additions to our team didn’t have much GStreamer experience at all before joining us, but instead had strong skills developed on other multimedia related projects.

So if you got experience with any of the following technologies and a decent open source track-record please send us your CV by emailing my at christian(dot)schaller(at)collabora(dot)co(dot)uk.:

  • GStreamer
  • Pulse Audio
  • Vala programming
  • GObject
  • C programming
  • Python programming
  • DLNA and upnp
  • ffmpeg
  • v4l
  • Open GL
  • DSP programming

We offer a flexible work environment with a strong free software focus and competitive terms. You could either work from one of our 3 offices (Barcelona – Spain, Cambridge – UK or Montreal – Canada) or from home. Most the work we do for our customers is done remotely so only modest needs for travel and all hardware/software needed is provided.

Transmageddon and WebM

So after a long hiatus I finally managed to push out a new Transmageddon release, 0.16. In addition to a lot of new translations (big thanks to all members of the GNOME translation team) there are a few bugfixes in there, but most importantly this release adds support for the new WebM format, enabling you to quickly and easily make such files. Thanks to the work Sebastian and David did this was very easy for me.

Mandatory screenshot:

Transmageddon encoding a WebM file

Transmageddon encoding a WebM file

To make this work however you will need a lot of bleeding edge software, including todays git master of gst-plugins-good and gst-plugins-bad and libvpx installed (libvpx adds VP8 support).

This release also lets you put the On VP8 codec into other container formats, such as Ogg, Quicktime and AVI.

For Fedora users I recommend grabbing the latest libvpx SRPM created by Tom "spot" Callaway from Red Hat bugzilla. It should work perfectly with the GStreamer configure scripts.

For Ubuntu users I recommend the GStreamer PPA repository for getting latest libvpx. You probably need a newer gst-plugins-good than you find there right now though, but hopefully we will get that PPA updated today.

I also think libvpx has been packaged into Debian.

Totem playing WebM file

Totem playing WebM file

So I think that with this release Transmageddon is the first free software encoding GUI tool supporting the WebM format. At minimum the first I care about ;)

You can download Transmageddon 0.16 from the usual location on the Transmageddon homepage.

Note: Some long standing bugs, like trouble identifying some input files and no deinterlacing support, are still not fixed. I am waiting for Gst-conveniece to be ready with Python bindings, in order to fix those two bugs.

Engaged

Life sometimes takes unexpected turns and that is definitely true in my case. Some months ago I ran into Qurat-ul-Ain by chance and that one event has changed my life forever. Ever since that initial meeting this smart, beautiful, kind, reflected, headstrong woman has been the most important person in my life. Taking a cue from Beyonce I decided that since I liked it I should put a ring on it ;) , so last weekend I proposed to Qurat-ul-Ain and she actually said yes :)

Qurat-ul-Ain

My fiancee Qurat-ul-Ain

We haven’t set a date for the wedding yet, but we hope it do so this weekend, we do already know however that the ceremony/celebrations will take place in Lahore where Qurat-ul-Ain got her family.

So when you read this Qurat-ul-Ain, do know I love you deeply and I look forward to sharing my life with you and the family we will create together.

engaged

Holding hand with engagement ring

WebM and GStreamer

As many of you might be aware, Google today announced the open source release of the WebM Project and VP8 codec. What you might not be aware of is that Collabora Multimedia and Entropy Wave have been working with the WebM team and due to this are able to announce the availability of a full set of GStreamer plugins for this new and exciting video format, the needed updates to support the WebM container format and finally we have been working with Xiph.org and Monty to announce the availability of a Ogg container format mapping for WebM, which we have also implemented support for in GStreamer. So by grabbing our WebM branches from GStreamer git you can today do the following things with all GStreamer applications:

  • Encode video into the WebM VP8 video format
  • Decode videos which are in the WebM video format
  • Mux VP8 and Vorbis into the official WebM container format (based on Matroska)
  • Demux WebM files with VP8 and Vorbis
  • Stream VP8 video as part of Ogg http streams
  • Mux and demux VP8 into Ogg container format

We also hope to be working with the WebM project community to offer RTP streaming of VP8 as soon as possible after this launch.

So a big thanks to the good people at Google for releasing WebM to the world and for working with us and other members of the open source community to enable WebM usage in the open source community from day one.

So for the actual code all patches will be committed to gst-plugins-good/base/bad and will be available in new pre-releases today

For those of you running latest releases and prefer to stick with that until the next full release then patches against latest releases will be available from these locations (web interface):
http://git.collabora.co.uk/?p=user/slomo/gst-plugins-base.git
http://git.collabora.co.uk/?p=user/slomo/gst-plugins-bad.git
http://git.collabora.co.uk/?p=user/slomo/gst-plugins-good.git

You can read more about the WebM release at the official WebM blog post.

You find the official joint press release of Collabora Multimedia and Entropy Wave here.

Update: Thought I should also link to Montys blog which gives the official Xiph.org view.

Going to Lahore, Pakistan

I will be going to Lahore in Pakistan this Friday and stay there for about 3 weeks. Lahore is the old capital of the Mughal empire and I am really looking forward to seeing it. I thought I should post this blog entry to see if there are any active Linux, GNOME, GStreamer or other related people in the area. who would be interested in meeting up while I am there. For instance is the a Lahore LUG? If you live or are in the area and would be interested in meeting up sometime in the next few weeks please let me know on uraeus(at)linuxrising(dot)org.

I might also be doing a talk at a IET event while there, so if any of you are involved with that organisation I hope to see you at that event too.

GStreamer Conference 2010

I am very happy to announce that we are organizing the worlds first GStreamer conference on the 26th of October 2010. The conference will be organized in collaboration with the Consumer Electronics Linux Europe conference so this could be a great chance to catch two great conferences at the same time.

We already have some great speakers lined up and I hope to put up a draft agenda up for the conference soon. But in the meantime make sure to bookmark the GStreamer Conference 2010 webpage and check back from time to time for further updates and details.

Hope to see you here in Cambridge in October!

GStreamer, Google, San Fransisco and being stuck

Currently staying at my friend David Schleefs place in San Francisco. Davids company Entropy Wave is about to launch some rather cool new hardware encoders rack boxes, which David showed of during the CE Linux showcase. The boxes will support both Theora and H264 encoding to enable the easy creation of HTML5 friendly content. People where also quite impressed by Davids DSP port of Theora for Texas Instruments OMAP3 which was sponsored by the Mozilla Foundation, there was also some interest by other chipset vendors to get David to also port it to their architectures which could be a great development in terms of Theora based HTML5 support on mobile and embedded devices.

I was here to attend the CE Linux and Linux Foundation Collaboration Summit conferences this week and its been interesting. Btw, thanks to Google for the Nexus One phone, will be interesting to get home and do a throughout comparison with my Nokia N900. One thing I already discovered doing some prelimenary testing is that the Nexus One doesn’t seem to support syncing contacts over bluetooth, so its a bit of a cumbersome process it seems to move my address book onto the Nexus One from the N900. Talking of Google, the most repeated rumour, from a lot of people at the conference all claiming inside sources at Google, is that Google is about to open source the VP8 codec, using it both for Google Talk video conferencing, for HTML5 in Android and Chrome, and for You Tube. Will be interesting to see if this happens though and under what terms in the end. And if it happens it will be equally interesting to see if the quality of the encoder is good. Heard some claims that the current VP8 encoder actually creates worse quality videos than the latest Theora encoder at the same bitrate, which would make Googles refusal to support Theora for HTML5 for Youtube a bit sad.

Got to talk to quite a bit of people using GStreamer on their products, and I based on those conversations I can easily foresee that we will be getting more contracts in the future, at Collabora Multimedia, which task is basically mainlining vendor patches for things like GStreamer and Pulse Audio from vendors who are using these libraries in their products. While most companies wanted to see their patches go upstream to avoid eternal pains of maintaining and re-applying their modifications, they seem to have trouble allocating staff needed to make it happen. So hiring specialists like us to do the needed patch clean-ups and get them ready to be merged is easier to fit into their timetables and budget. Tim Bird, the chairman of the CE Linux forum, actually mentioned in one of his talks that this was the method that a lot of their members have found to be most cost effective in terms of getting patches upstream to a lot of different projects, hiring core contributors to the project in question as consultants to take the patches to a stage where they can be merged.

Last night I attended a GNOME dinner hosted by Adam Dingle of Yorba.org fame, seems Yorba is making good progress on their projects, with Shotwell their photo manager, getting included in next version of Fedora. A big thanks to Adam for setting up this dinner, much appreciated.

The other thing that I am wondering about at this point is whether I will actually be able to fly back to the UK on Sunday. With the volcanic ash messing up everything I am starting to worry a bit. Seems BA though is re-routing their US flights to Glasgow and then providing buses to take people down to London. Not to excited about the prospect of a 6.5 hour bus ride though, but I guess considering the circumstances I shouldn’t complain. And if I do end up getting stuck here then there are not a lot of places in the world I would choose over San Francisco to be stuck, it is an really great city. However since getting stuck in San Francisco would also mean a delay in seeing the most wonderful woman in the world again, I am not in a good position to enjoy having my stay in San Francisco extended.

Anyway, no use in worrying about my flight until Sunday, in the meantime I am looking forward to Mike Smiths birthday party tomorrow, especially since Mike is taking the step of joining me in the 30+ old geezer club.

Google Summer of Code deadline

Just thought I remind everyone that the deadline for submitting a Google Summer of Code proposal is tomorrow. So if you want to do a GStreamer or any other SoC project this year you need to get your proposal submitted ASAP.