Decodebin2 has landed in CVS !

Spent yesterday and today doing the last cleanups in GstDataQueue, the multiqueue element and decodebin2. Mostly adding documentation, making sure the API of GstDataQueue satisfies all future requirements, etc…
… and finally commited it to gstreamer and gst-plugins-base ! So you can either grab cvs and start testing it, or wait for the 0.10.11 releases for those two modules, which should happen next week.
On a side note, Colin, a friend of mine with whom I graduated last year, is now working part-time for the Elisa team at Fluendo ! And today he also released his first album, go check it out on his website.

The "Gringo" is back from Brazil

Last week, I went over to Recife, Brazil, to give a advanced GStreamer training course to the INDT folks. Despite it being the first training I ever gave (I already did several lectures and practical courses, but nothing this intensive), it was IMHO a real success. First of all, because of the attendees who were ALL extremely motivated and interested by the subject, asking the smart questions, digging deeper and deeper. Satisfying their thirst of knowledge was the other rewarding part. I discovered I knew more about GStreamer than I thought, and I deeply enjoyed transferring that knowledge.
I staid at Andre‘s place during that week, and it of course involved lots of going out, drinking, and yes even a hackfest ! All in all it was excellent. I’m looking forward to going back there, for work or for leasure. You can see some photos from the trip here

Anyway, I’m now back in colder Barcelona, and after a little personal review the decision was made to concentrate myself more on PiTiVi and direct GStreamer hacking. Don’t expect me to be as reactive as I was before to fixing bugs in various plugins or gst-python, it won’t happen until I get PiTiVi to a stage where you can do editing, namely cutting, resizing and moving around sources as you can see in the UI Mockups. I think it’s better both for all the end-users who’ve been waiting so long, and also as being a more productive Fluendo employee (Being paid to work on PiTiVi doesn’t come for free, but it’s a price I’m willing to pay).
Last of last, for the past 2 days I’ve been going over decodebin2 even more, fixing some last issues, testing its behaviour with the gst-media-test against current decodebin and it’s now performing as well, takes less memory, and doesn’t leak any memory. So expect it to land in cvs tomorrow. I’ll also patch playbin so that you can use playbin with decodebin2 if you have the proper environment variable set. Unfortunately, in the long run playbin is going to have to be modified/rewritten in order to benefit from some new features that decodebin2 proposes… which might be a good thing considering playbin hasn’t changed much in the port to 0.10, and it might be time for a clean rewrite.

dead cheap 20Mb/ADSL … at what cost

Over 6 months ago I got a 20Mbit/s ADSL2+ connection with here in Spain. Of course you never get 20Mbit/s with those connection but I got a nice 15Mbit/s. Perfect for getting something immediatly, watching HQ streams without bothering about somebody else using the net in the house, etc… All in all, I was really pleased about it…
…until a month or two ago, where starting from 6pm the speed drops down to 512kbit/s (if I’m lucky) with very high ping. Of course that is the time where I want to watch some streams to chill out, maybe do some work from home… GRRR
After further investigation, it’s caused by my DSLAM server being saturated at those times. And by looking on spanish user forums, I’m far from being the only one with a saturated DSLAM.
So my question is : How long are those ISPs going to carry on with all that saturation without doing anything ? Switching ISP is not an option, since it will be using the same DSLAMs except if I switch to Telefonica (state operator) which has its own DSLAMs… at 150euros a month for the same connection (yes, that’s 6 times more than what I’m paying).
Calling doesn’t seem to change anything (except for being charged 30mins of wait on a premium number). Was there anybody in the same situation ? What did you do to pressure the ISPs to add DSLAMs in saturated regions ?

Decodebin 2 : less cruft, more zing !

Christian blogged some time ago about me working on decodebin2. And it’s finally landed in bugzilla for your reviewing pleasure.

You will need the following 3 patches:

  • GstSafeQueue : an GObject that contains all the threadsafe queuing functionnalities of a GstQueue. This allows elements to use such an object to add some queuing features, without having to worry about thread issues. The patch also contains a patched version of GstQueue using GstSafeQueue (notice how small it becomes, and no more explicit use of locks !). Patch #344639.
  • GstMultiQueue element : A GstElement that acts like GstQueue except that it controls several streams. If all you streams are linked, it won’t differ that much from several GstQueue. But where it gets nice, is that if one of the source pads isn’t linked (because there are two different language audio streams going through it and you only listen to one at a time), then the multiqueue element will continuously try to send data downstream in the same order it arrived in multiqueue in regards to the other streams. This means that if you switch to listening an different audio stream… you won’t loose any data. Patch #347785.
  • decodebin2 element : Same goal as decodebin, written from scratch, using the notion of groups and multiqueue to cope with some functionnalities which have always been broken : chained-oggs, multi-audio-tracks, choosing non-raw streams… You can have a look at the decodebin design document for more details. Patch #370092.

The next step, apart from testing decodebin2 even more, is to scrape out all the cruft in playbin which is not needed anymore with this new design (queuing, audio switching, chained oggs, ….). Feedback is welcome as usual.

It’s alive !

… seriously

Yes, I’m still alive, kicking and well. I can’t believe the last post is from 1 year ago 🙁 Lots of stuff has been happening, too much for a blog entry.

Fluendo and PiTiVi

Working at Fluendo is rocking as usual, lots of stuff happening. I am now the maintainer for gst-python, gnonlin and gst-ffmpeg. The later being a total pain in the *ss to maintain (ever tried supporting a library that constantly changes API and ABI, doesn’t make releases, … ?).
I’m about to go and give an advanced GStreamer training course for one of our biggest clients in a couple of weeks. It’s very challenging to go and explain first-hand how you can make the most of GStreamer for advanced issues, like using the base classes, proper use of time and newsegments, qos, … This should grow the number of knowledgeable GStreamer hackers nicely. More about who it was for and what they’re doing after I’ve done the course.
Event though I have not been hacking directly on PiTiVi for a while, a lot has been happening that makes it even better. Thanks to all the feedback from the Jokosher team and their use of GNonLin, a lot of bugfixing/enhancements are making GNonLin rock-solid. All the bugfixing gone into GStreamer core and the various plugins also means PiTiVi can use a LOT more files than it could 6 months ago, and can render in even more formats.
A few weeks ago, I spent a few days with Christophe, the new Fluendo graphist, thinking about the simple UI, what was needed, how people would use it, … and we came up with some good design ideas for the simple mode (a-la iMovie). The huge svg file is here , but I’ll post it soon on the wiki split up in smaller pictures with the ideas behind it. All efforts are now concentrated on making the simple UI solid as a rock !


We finally got fed up with Emma about our previous flat, and got a new one. We’ve now got the last floor of a building in the middle of Barcelona. 75sq meters, with two terrasses and fully furnished. Making barbecues whenever you want, in the middle of a city just plainly ROCKS 🙂 I also finally bought a projector and a living-room computer to go with it. I’m looking forward to use Elisa with it (til then it’s terminal and keyboard).
Emma is finally working full time at the French School in Barcelona as a kindergarten assistant. Very demanding, but she loves it. Only problem is that we can’t take our holidays whenever we want, and it means paying outrageous prices for plane trips (on average, 4 times more than leaving outside of school holidays, even when you book 3 months ahead !).


Just after my last commit, having managed to get gnonlin to work, I was really looking forward to hacking on PiTiVi… but we had more important priorities at Fluendo. Eventually, after doing Flumotion testing and implementing a looper component for Flumotion (something not many streaming servers out there have apparently), I was finally able yesterday to get back to PiTiVi hacking… and it works 🙂

As i expected, a lot of the code in PiTiVi involved gst-0.8 hacks. So after scraping a lot away in the Discoverer and the Playground, importing files is now fully functionnal (with thumbnails) and way faster than with 0.8

I also re-enabled the SimpleTimelineView and adjusted the Timeline interface for the new gnonlin elements. There’s still more code scraping to do, thanks to the higher-level GnlFileSource, and testing for seeking, querying, etc…

Gstreamer Media TestSuite

I hacked a bit on the avi demuxer and gst-ffmpeg in order to have segment seeking working… but after testing it on some files, I realized some fixes made other files break. Therefore, time to make a media testsuite for GStreamer that will enable developpers to figure out what goes wrong with the various files, the common problems, etc…

We have some 15gb of files (over 1700!) at Fluendo (from MPlayer, Xine testsuite, some files Ronald collected, …) which should be enough to start with.

I’ve started a wikipage with the ideas here. Everybody is welcome to add their ideas and comments. I’ve already started implementing parts of it and I will carry on this weekend.


Emma’s been working at the French primary school for a week, doing a replacement, and she really enjoyed it. She’ll be doing some more replacement next week. There might be a position opening in January… touch wood.

Been going out a lot recently… need to slow down a bit, it’s starting to get a bit too expensive. But it’s hard to say no to going out 🙂

Next wednesday, Emma and I are going to see Emir Kusturica & the No Smoking Band, really looking forward to it (Rindji Dindji Bubamara…).

Broadcasting live from the Mothership Connection, home of the extraterrestrial brothers…

Wow, haven’t blogged in a LONG time… Let’s try summarizing what happened in the past 5 months…

Ich bin ein Fluender !

In August, just before ending my internship at Fluendo in Barcelona, I finally got hired as Junior Developer (I am technically the youngest in the team… by 10 days !!), to carry on my work on PiTiVi and it’s dependencies (gst-python, gnonlin, GStreamer, …). There was a lot of partying to celebrate that 🙂

Back to the cheese and wine region of France

I took a nice long break from Barcelona starting from mid-august. Nice to be back in France after 5months in Barcelona. Also good because it’s not AS warm but still very enjoyable. Lots of barbecues and good food.

We also celebrated my parent’s 40th wedding anniversary. We had been preparing an evening with my brothers and sister in secret 🙂 The presents (digital camera and telescope) were appreciated and the meal was gorgeous. Also went Sylvie’s wedding, one of my cousins. Typical french wedding with lots of food and drink and also “la chenille” for the connoisseurs 🙂

Wrote my internship report, handed it in (OOo 2 powa’, kudos to whoever thought of the automatic completion), and prepared my final presentation which went down very well. The presentation was in English (which was not obligatory but strongly recommended) and Wim came to assist. For those of you who know Wim, I came with a suit and him with his typical black long coat… the folks from school administration thought I was the guy from the company and Wim was the student 🙂 Once again OOo2 helped me a lot (We had to have PowerPoint 2003 slides… OOo2 exports to that format like a charm)

Welcome to the land of opportunists…

So my parents took up to drive me down to Barcelona so I could bring most of my gear (Bike, bass, amplifier, clothes, …). The trip went fine… except for the very last part. When waiting in front of Christian’s place for him to arrive so we could unload the car somebody asked us the direction to a VERY WELL KNOWN street (Passeig de Gracia) in a mix of french and castellano… We gave him the directions, and then when 5 minutes later I went for my laptop bag which was on the front passenger seat…. GONE ! My personal laptop and the company’s plus some very expensive corrective sunglasses 🙁

But in every bad thing there are good things. I went to buy a new laptop at FNAC the next day, got an Acer Aspire 1522wlmi (athlon64 3000+) for 999euros, which is cheaper than my previous Acer Aspire, faster, better screen, better linux compatibility, etc…

… who only make up for a small part of the population.

I stayed at Christian’s place for the beginning while looking around for a flat to rent. I finally settled for a 75 sq meter flat just next to Cathedral, which is on the first floor, low ceiling, which adds a certain charm to it. Why such a big flat ? Well Emma, my girlfriend finally decided to come over and live in Barcelona 🙂 As soon as I got the keys she booked a flight.

The living room which is on the street side was a ‘bit’ (read: REALLY) scruffy, old brown-ish wallpaper, wires everywhere, etc… so I decided to paint it 🙂 Now if you’re Norwegian or Spanish (no pun intended), you’d just buy a bucket of pain, get a roll and on you go. But in order to get it well done (I intend to buy a projector in 6months or so, so I need a flat white wall), I took of the wallpaper… then discovered more paint and wallpaper, then painstakingly scraped it, then took off several cables which were going from nowhere to nowhere (!!), then sandpaper-ed, then plastered, then sandpaper-ed again and finally paint 🙂 It took over 2 weeks with the help of Emma. But I must say the result is amazing.

Life is moving on nicely, Emma is going to do catalan ‘normalization’ classes which should be fun. She also got a phone call yesterday from the headmistress of the Lycee Francais to look over kids at recess tomorrow, which has several advantages : she’ll finally be able to get a NIE (Identification for foreigners in Spain which is required to work, and to get it you need a job (yeah, administrative logic)), and they seemed quite impressed by her resume (Psychology, documentation, good experience with kids) so it might lead to a real job.

I too got my Nokia N770…

… box… empty 🙁 It was sent to my Paris adress, which my father forwarded to the office via Chronopost. When it arrived at the office… there was only the Nokia box inside. I tried complaining about it to Chronopost but they don’t want to refund it since it was accepted by the mailman at the World Trade Center (who then comes round and distributes it at every individual office).


Since I’ve been back in Barcelona, I’ve been working on the python bindings which are now really solid. For the past week I’ve been working on porting gnonlin to 0.9 … and yesterday finally managed to do a miniature composition (using a 30line python script). The difference in processing overhead between gnonlin 0.8 and 0.9 is amazing ! So next week is going to be working on PiTiVi to get gnonlin working nicely with it and using the latest GStreamer API modifications. Good times ahead 🙂 Look forward to a 0.9 beta version within a month, and then maybe Santa will bring you something nice for Xmas 🙂

That’s the law around here, you got to wear your sunglasses.

PiTiVi and GNonLin

I finally finished backporting gnonlin to it’s repository, cleaning it up, updating the website, putting more documentation online, etc… I’ve just put a pre-release online (v0.2.0-pre1). It’s available on the GNonLin website. You’re welcome to try it, and send me any bugs/inconsistencies you find out. I’ll do a real release in 7 days if there’s no major bug found.

So this means that, AT LAST, I’m hacking on python-pitivi !

Other hacking

On the side, I’ve been working with the Farsight (library for IM Voice and Video) team to “reverse” the OSCAR (ICQ/AIM/iChat) voice-and-video negotiation protocol. I’m not doing this out of interest, it’s so I can call my folks back home for 0 euros 🙂

And I’ve finally found somebody who’s doing a video motion-estimation filter (stand-alone, not lost in the middle of a video encoder) so I can finally put into code all these algorithms that have been taking the dust for the past year (slow-motion, motion compensation, temporal interpolation, HQ video scaling, …). More about it once he’s released it in Open-Source.


So I wasn’t quick enough to reply for the room to rent in the Barri Gottic 🙁 But I went to see the other place which is a little bit further (a good 20 minutes by foot from work, but which will be good for the exercise and the tan). This time I accepted the place way quicker 🙂

It’s really great, I’m sharing it with Cristina – the catalan girl who owns the place – and Rachid, a french guy who works at Hewlett-Packard in the suburbs… and Kika a lovely little cat 🙂 Well furnished, big bathroom (most important!), nice living-room, and all-in-all a very friendly ‘ambiance’. And yes, I am forcing myself to speak spanish with Cristina (who also speaks english and french), and I’m starting to feel the results.


As you might have noticed, or not, I didn’t release the next version of PiTiVi. Why, you might ask ? 🙂 Well as I said before, I wanted to clean it up thoroughly so to make it easier to add new features, get rid of bugs, etc … But I’ve been spending all of this past week finding out how much of the codebase was.. well… totally and completely un-evolve-able !!! The reason for that is in fact quite simple : the rest of the team was only interested in getting something nice for the final presentation (which we mostly managed to do), and it seems I was the only one wanting to make pitivi a true application (usable by everyone, and especially that carries on living after the end of studies).

SO… since I would have to rewrite almost everything (GUI-wise) from scratch, I am going to.. in python 🙂 I’ve been wanting to do so from the start of the project, but for some reasons I won’t evoke here, we decided to do it in C/GObject. Doing it in python is going to allow faster development, ease the addition of new features, and concentrate on the ergonomy and added value of a non-linear editor (instead of banging my head on stupid C related problems). And it’s also time gnonlin goes back to it’s separate repository and it’s gst-plugin’able (which will definitely happen shortly). So for those not getting the message : the cpu-intensive parts of pitivi (GStreamer and gnonlin) are staying in C !

I’ll be reviewing all of those ideas (and all the feedback I got on pitivi) at the beginning of this week with the rest of the fluendo team… stay tuned !