Actually, the credit for the entire talk goes to Vincent and friends, who gave the GNOME 3.0 overview during the GUADEC opening at GCDS and to Owen for his GNOME Shell talk. I stole content from their slides shamelessly.
My intention with the talk was to present some of the history and development of the GStreamer project as a means to look at where we might go next. I talked briefly about the origins of the project, its growth, and some of my personal highlights from the work we’ve done in the last year. To prepare the talk, I extracted some simple statistics from our commit history. In those, it’s easy to see both the general growth of the project, in terms of development energy/speed, as well as the increase in the number of contributors. It’s also possible to see the large hike in productivity that switching to Git in January has provided us.
The second part of the talk was discussing some of the pros and cons around considering whether to embark on a new major GStreamer release cycle leading up to a 1.0 release. We’ve successfully maintained the 0.10 GStreamer release series with backwards-compatible ABI and API (with some minor glitches) for 3.5 years now, and been very successful at adding features and improving the framework while doing so.
After 3.5 years of stable development, it’s clear to me that when we made GStreamer 0.10, it really ought to have been 1.0. Nevertheless, there are some parts of GStreamer 0.10 that we’re collectively not entirely happy with and would like to fix, but can’t without breaking backwards compatibility – so I think that even if we had made 0.10 at that point, I’d want to be doing 1.2 by now.
Some examples of things that are hard to do in 0.10:
- Replace ugly or hard to use API
- ABI mistakes such as structure members that should be private having been accidentally exposed in some release.
- Running out of padding members in public structures, preventing further expansion
- Deprecated API (and associated dead code paths) we’d like to remove
There are also some enhancements that fall into a more marginal category, in that they are technically possible to achieve in incremental steps during the 0.10 cycle, but are made more difficult by the need to preserve backwards compatibility. These include things like adding per-buffer metadata to buffers (for extensible timestamping/timecode information, pan & scan regions and others), variable strides in video buffers and creating/using more base classes for common element types.
In the cons category are considerations like the obvious migration pain that breaking ABI will cause our applications, and the opportunity cost of starting a new development cycle. The migration cost is mitigated somewhat by the ability to have parallel installations of GStreamer. GStreamer 0.10 applications will be able to coexist with GStreamer 1.0 applications.
The opportunity cost is a bit harder to ignore. When making the 0.9 development series, we found that the existing 0.8 branch became essentially unmaintained for 1.5 years, which is a phenomenon we’d all like to avoid with a new release series. I think that’s possible to achieve this time around, because I expect a much smaller scope of change between 0.10 and 1.0. Apart from the few exceptions above, GStreamer 0.10 has turned out really well, and has become a great framework being used in all sorts of exciting ways that doesn’t need large changes.
Weighing up the pros and cons, it’s my opinion that it’s worth making GStreamer 1.0. With that in mind, I made the following proposal at the end of my talk:
- We should create a shared Git playground and invite people to use it for experimental API/ABI branches
- Merge from the 0.10 master regularly into the playground regularly, and rebase/fix experimental branches
- Keep developing most things in 0.10, relying on the regular merges to get them into the playground
- After accumulating enough interesting features, pull the experimental branches together as a 0.11 branch and make some released
- Target GStreamer 1.0 to come out in time for GNOME 3.0 in March 2010
This approach wasn’t really possible the last time around when everything was stored in CVS – it’s having a fast revision control system with easy merging and branch management that will allow it.
On Thursday, we’re having a GStreamer summit in one of the rooms at the university. We’ll be discussing my proposal above, as well as talking about some of the problems people have with 0.10, and what they’d like to see in 1.0. If we can, I’d like to draw up a list of features and changes that define GStreamer 1.0 that we can start working towards.
Please come along if you’d like to help us push GStreamer forward to the next level. You’ll need to turn up at the university GCDS venue and then figure out on your own which room we’re in. We’ve been told there is one organised, but not where – so we’ll all be in the same boat.
The summit starts at 11am.
We’re leaving tomorrow afternoon for 11 days holiday in New York and Washington D.C. While we’re there, I’m hoping to catch up with Luis and Krissa and Thom May. It’s our first trip to either city, so we’re really excited – there’s a lot of fun, unique stuff to do in both places and we’re looking forward to trying to do all of it in our short visit.
On the GStreamer front, I just pushed a bunch of commits I’ve been working on for the past few weeks upstream into Totem, gst-plugins-base and gst-plugins-bad. Between them they fix a few DVD issues like multiangle support and playback in playbin2. The biggest visible feature though is the API that allowed me to (finally!) hook up the DVD menu items in Totem’s UI. Now the various ‘DVD menu’, ‘Title Menu’ etc menu items work, as well as switching angles in multiangle titles, and it provides the nice little ‘cursor switches to a hand when over a clickable button’ behaviour.
I actually had it all ready yesterday, but people told me April 1 was the wrong day to announce any big improvements in totem-gstreamer DVD support 🙂
If you’re in Dublin tomorrow (Saturday 28th March), and you’re interested in Open Source, feel free to come along to the OSSbarcamp at DIT Kevin St and enjoy some of the (completely free!) talks and demos. I’ll be presenting an introduction to the GStreamer multimedia framework in the afternoon.
Details of times and the talk schedule are at http://www.ossbarcamp.com/
I’d like to offer congratulations to all the Xiph folks, but especially Monty, Ralph and Tim on the theora-1.1alpha1 release from the Thusnelda encoder branch.
To try it out, I transcoded a short (1m40s) 720p trailer video from H.264+AAC to Theora+Vorbis, at libtheora quality setting of 32, using the 1.0 theora encoder, and again with 1.1. It’s not a very rigorous experiment, but enlightening nonetheless.
Both encoders produced output of comparable visual quality. With the 1.0 theora encoder the output file was 24383125 bytes. Of that, the video portion is about 1.835 Mbit/s. With libtheora 1.1alpha1, the same quality is reached with only 19088009 bytes (video at 1.416 Mbit/s)!
That’s a pretty easy 20-ish% compression improvement for no loss in quality. As an added bonus, the transcoding time dropped from 2m10s to 1m52s. That’s not quite real-time for this frame size in either case, but an impressive step closer.
There’s some degradation from the visual quality of the original file. That’s to be expected when taking a 5.61 Mbit/s video stream down to less than a third of the original size – even on the same codec.
For comparison, here’s a random frame from the output of each encoder, along with the same frame from the original file:
Sweeeet. Well done, guys!
Nearly 4 months after the fact, my birthday is finally complete – my “Netherlands and Architecture” “Open Source” coin finally arrived from the Royal Dutch Mint:
The delay was caused by transmission errors introduced somewhere while communicating our delivery address.
Obligatory GStreamer bit
The other nice thing from today is this script Luis and I put together to convert any supported video into a format suitable for playback on his new BlackBerry Storm after he had trouble with encoding errors trying to use FFmpeg for the task.
It’s a simple shell script that uses GStreamer’s gst-launch utility to do 2 pass conversion to H.264 and AAC in an MPEG-4 container. You can find it here if you’re interested.
As an added bonus, Luis reports that the GStreamer conversion is noticeably faster than the erroneous FFmpeg one.
We were supposed to be in Thailand by now, on a two week holiday. Unfortunately, that’s been thoroughly scuppered by protests closing both Bangkok airports. It’s a big disappointment, because my parents and several brothers were also due to fly in, and we were really looking forward to spending time with them all.
Fortunately though, KLM gave us a full refund on our long haul flights, and the rest of the things we’d booked were fully cancellable, so we’ve hardly lost any money. We still have 2 weeks of annual leave stretched in front of us though, so we spent yesterday rearranging plans.
Instead of a trip to Bangkok and Krabi, we’re now doing a trip to Cairo, Hurghada and Paris starting tomorrow. Pyramids and sunshine, here we come!
We took a trip to London this weekend. It started with some cheap BA tickets and a desire to see the musical Wicked – which was wonderfully done.
We were introduced to Wicked after reading Gregory Macguire’s book of the same name. I really enjoyed the idea of taking a story that everyone knows inside out (The Wizard of Oz) and creating an entire other story within and around it. I’m obviously not alone, since both the book, the sequel and the musical have been smash hits all over the world.
On an unrelated note from the Serendipitous Amusements department, a curious moment as I was in Hamburg for work a few weeks ago. One night, as we were looking for a restaurant in town we tried to print a map from Google maps. When I got around to the printer, it was blocked with a paper jam from earlier in the day. After unclogging the paper, the printer proceeded to divest itself of other peoples’ spooled jobs.
The first print job seemed to be a printout of someone’s computer magazine subscription, and the very first page that emerged was this one:
As I waited for my page, I was reading the Klocwork advertisement, and then was amused to note that amongst the source code at the bottom, I could discern lines that are clearly from GStreamer:
I recognise some of the lines from other open source projects, so hopefully someone else is as amused as I was to spot code from something they’ve contributed to 🙂
2 best friends
5 days in Edinburgh in August
1 Edinburgh Fringe Festival show guide
Tickets to as many shows as you can afford
A good list of free shows around the place, to fill in the gaps.
I spent 5 days of the week before last in Edinburgh having a complete blast at the fringe festival with Jaime and 2 of my friends from high school – James and Miki. I really can’t recommend the fringe festival highly enough – if you haven’t been, put it on your list of things to do before you die. I want to go back next year for longer, if I can just figure out how.
We saw a bunch of awesome shows, and some hilariously bad stuff that I still enjoyed immensely. I think the pot luck aspect of picking a few shows at random is an important part of the fun. I’ve been trying to choose a Pick of the Fest since we got back, but failed. In the end, I’m calling it a draw between 3 shows: The Expert at the Card Table, Dead Cat Bounce Late Night Radio and Sammy J in the Forest of Dreams. If you get a chance to see any of them somewhere else in the world, jump at it!
The Expert at the Card Table is a one man show by Guy Hollingworth. Guy tells a compelling and wonderfully choreographed story of the origin of card tricks, while demonstrating a range of tricks and techniques.
Dead Cat Bounce, Late Night Radio is a show done by 4 guys out of Trinity College recreating a golden-age radio show, complete with foley, songs and a bunch of great jokes. Impressive stuff from some quite young guys that I’m keen to catch again elsewhere.
Sammy J is an Australian comedian that I hadn’t seen before. We picked the show purely on the basis of it mentioning puppets in the description. A fantastic 2-man show (Sammy J, and the puppeteer) with some good laughs. It’s fun to see an adult show featuring puppets.
We were really lucky with our accomodation choice. Jaime spent hours compiling a list of hotels and hostel options for us to choose. By the time we actually went to pick one 3 days later, all those options had booked out or doubled in price! Luckily, a new hostel had just opened up, and it worked out really well – University dorm accomodation vacated by the students for the summer break, right in the middle of town, at a great price.
Wednesday: Arrived in Edinburgh. Found hostel. Picked up a nice stack of tickets to shows from the ticket office. Hung out in the hostel until James & Miki arrived, and then kicked off our festival experience with Frank Woodley‘s one man show Possessed, which was hilarious despite (because of) him dropping out of character and ad-libbing quite a bit. In the evening, the La Clique circus in the lovely Spiegeltent venue. La Clique was a great show, as we’d expected from the reviews.
Thursday: Ate a hearty Scottish breakfast at a local pub. Explored the city a bit, and went to some free shows at the Counting House. Marcel Lucont, Ginger & Black and Dean Scurry were the best of. Met up with Miki’s friends for dinner, and then went to a random choice: “Meli Melo 2”, which turned out to be 4 french men parodying about 50 different dancing styles in a dizzying array of costumes. Afterward, met some of James’ work colleagues (in town for the night) for drinks, and then braved the 2am Late-Night standup – back at the Counting House. The atmosphere was strained – only about 10 of us in the room, and 6 of those drunk and abusive. Headed back to the hostel about 3am.
Friday: Slept in ’til midday, and then off to Shakespeare in the park – The Taming of the Shrew, performed by the Pantaloons. Some more exploring of the city and enjoying the myriad of street performances. We took another punt on a random show and bought half price tickets to Happyland. It turned out to be an enthusiastic musical with a somewhat disappointing storyline, but still worth the 4Â£ to see 🙂 Jaime arrived in the night, just in time to go to The Best Of The Fest and see Phil Nichol, Neil Delamere, Matt Kirshen, Jimeoin (who Australians will know) and Gamarjobat make us laugh ourselves silly for 2 hours.
Saturday: Started quite late with Rich Hall‘s “50 cent words” – reading pieces from some of his books and short stories. It got a few lukewarm reviews, but I enjoyed listening to him vocalise his writing. After, Clive James In Conversation, interviewing Armando Iannucci about his life, British television, the evolution of comedy on TV and some random questions from the audience (Organic or GM, anyone?). A really quick dinner, and then Jaime and I went to the last night of the Military Tattoo at the castle.
After that, The Axis of Awesome (quite good Australian musical comedy trio) and Dead Cat Bounce Late Night Radio – one of my Best of Show picks 🙂 Rather than head straight back to bed at 1am, we decided to try the Late Night Stand-up again, which turned out to be a good choice. The room was a lot livelier (and therefore funnier) than Thursday night, with a mostly-different set of comedians and jokes 🙂
Sunday: Last day. Miki got up early and left us all sleeping to catch her flight back to Sweden. Jaime, James and I checked out about 10am, and went to Back To The Future: The Pantomime, which was thoroughly pantomimical and had plenty of Back To The Future as promised, but I still can’t decide if I liked it or not. James had to leave us at that point too, which was a bit of a shame because 2 of the best shows were yet to come.
To be honest, we originally picked The Expert At The Card Table on the basis that it was directed by Neil Patrick Harris, who we both find hilarious (Dr Horrible, anyone?). I’m really glad we did, because it turns out that not only is he a really good director, but Guy Hollingworth is a great actor and one of a select group of people on the planet who could pull this show off. The drama was built really well, and the card tricks blended perfectly to create a really nice piece of magical theatre.
After that, it was off to our final show – Sammy J in the Forest of Dreams, which I mentioned above. A great way to finish our trip to the Edinburgh Fringe.
I can’t wait for next year 🙂